更改登錄的默認數(shù)據(jù)庫。
sp_defaultdb [ @loginame = ] 'login' ,
[ @defdb = ] 'database'
[@loginame =] 'login'
是登錄名。login 的數(shù)據(jù)類型為 sysname,沒有默認值。login 可以是現(xiàn)有 Microsoft® SQL Server™ 登錄或者是 Microsoft Windows NT® 用戶或組。如果 SQL Server 上沒有 Windows NT 用戶或組,系統(tǒng)會自動添加。
[@defdb =] 'database'
新的默認數(shù)據(jù)庫的名稱。database 的數(shù)據(jù)類型為sysname,沒有默認值。database 必須已經(jīng)存在。
0(成功)或 1(失敗)
當客戶端連接 SQL Server 時,如果沒有顯式使用 USE 語句,則為其登錄定義的默認數(shù)據(jù)庫將成為當前數(shù)據(jù)庫??梢栽?sp_addlogin 添加登錄時定義默認數(shù)據(jù)庫。當執(zhí)行 sp_addlogin 時,如果沒有指定數(shù)據(jù)庫,則 master 數(shù)據(jù)庫將成為默認數(shù)據(jù)庫。
執(zhí)行 sp_defaultdb 后,當用戶下次登錄時登錄將連接到新數(shù)據(jù)庫。但 sp_defaultdb 不能自動將數(shù)據(jù)庫訪問權(quán)授予登錄。數(shù)據(jù)庫所有者 (dbo) 必須通過 sp_grantdbaccess 將數(shù)據(jù)庫訪問權(quán)授予登錄,或者該登錄必須是一個在數(shù)據(jù)庫中指定的 guest 用戶。
推薦使用 sp_defaultdb 更改所有登錄(而不是 sysadmin 固定數(shù)據(jù)庫角色成員)的默認數(shù)據(jù)庫。這將防止用戶不經(jīng)意間使用或創(chuàng)建 master 數(shù)據(jù)庫中的對象。
在用戶定義的事務(wù)中不能執(zhí)行 sp_defaultdb。
執(zhí)行權(quán)限默認授予 public 角色,以便用戶更改他們自己登錄的默認數(shù)據(jù)庫。只有 syadmin 或 securityadmin 固定服務(wù)器角色的成員可以為其它登錄執(zhí)行 sp_defaultdb。
下面的示例將 pubs 設(shè)置為用戶 Victoria 的默認數(shù)據(jù)庫。
EXEC sp_defaultdb 'Victoria', 'pubs'相關(guān)文章