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