Transact-SQL 参考

sp_defaultdb

更改登录的默认数据库。

语法

sp_defaultdb [ @loginame = ] 'login' ,
    
[ @defdb = ] 'database'

参数

[@loginame =] 'login'

是登录名。login 的数据类型为 sysname,没有默认值。login 可以是现有 Microsoft® SQL Server™ 登录或者是 Microsoft Windows NT® 用户或组。如果 SQL Server 上没有 Windows NT 用户或组,系统会自动添加。

[@defdb =] 'database'

新的默认数据库的名称。database 的数据类型为sysname,没有默认值。database 必须已经存在。

返回代码值

0(成功)或 1(失败)

注释

当客户端连接 SQL Server 时,如果没有显式使用 USE 语句,则为其登录定义的默认数据库将成为当前数据库。可以在 sp_addlogin 添加登录时定义默认数据库。当执行 sp_addlogin 时,如果没有指定数据库,则 master 数据库将成为默认数据库。

执行 sp_defaultdb 后,当用户下次登录时登录将连接到新数据库。但 sp_defaultdb 不能自动将数据库访问权授予登录。数据库所有者 (dbo) 必须通过 sp_grantdbaccess 将数据库访问权授予登录,或者该登录必须是一个在数据库中指定的 guest 用户。

推荐使用 sp_defaultdb 更改所有登录(而不是 sysadmin 固定数据库角色成员)的默认数据库。这将防止用户不经意间使用或创建 master 数据库中的对象。

在用户定义的事务中不能执行 sp_defaultdb

权限

执行权限默认授予 public 角色,以便用户更改他们自己登录的默认数据库。只有 syadmin securityadmin 固定服务器角色的成员可以为其它登录执行 sp_defaultdb

示例

下面的示例将 pubs 设置为用户 Victoria 的默认数据库。

EXEC sp_defaultdb 'Victoria', 'pubs'

请参见

sp_addlogin

sp_droplogin

sp_grantdbaccess

系统存储过程

USE