我们建立一个数据包用以将 SQL Server 数据库下载下来,并利用 T-SQL 还原,此时数据库用户名称无法与本地数据库管理系统的登录名称对应起来,我们采用如下的方式来先删除数据库的用户名称,再与本地数据库管理系统的登录名称对应起来。
sp_dropuser 'user'
sp_adduser 'login', 'user', 'group'
- user 数据库用户名称
- login 登录名称
- group 组或角色
以前一直运行得很好,但是当我们将远端的数据库登录方式改为 Windows 登录后(登录名为 Windows 组名称),却出现问题:一是除去用户时说用户不存在,二是添加用户时说登录名不存在。这时得使用 sp_revokedbaccess。
sp_revokedbaccess 'name'
sp_grantdbaccess 'login', 'name_in_db'
sp_addrolemember 'role', 'security_account'
- name Microsoft® SQL Server™ 用户名或 Microsoft Windows NT® 用户名或组名。
- login Windows NT 组和用户必须用 Windows NT 域名限定,格式为"域\用户"。
- name_in_db 数据库中帐户的名称。
- role 当前数据库中 SQL Server 角色的名称。
- security_account 添加到角色的安全帐户,与 name_in_db 相同。
总结
- sp_dropuser、sp_adduser 用于 Microsoft® SQL Server™ 用户名或 Microsoft Windows NT® 用户名。
- sp_revokedbaccess、sp_grantdbaccess 用于 Microsoft® SQL Server™ 用户名或 Microsoft Windows NT® 用户名或组名。