修复孤儿用户“访客”?

Jus*_*lle 8 sql-server-2005 sql-server

当特殊guest用户被孤立(未链接到任何登录)时,可以做什么(如果有的话)?

对于我的一个数据库 (SQL Server 2005),执行以下命令将来宾用户列为孤立用户。

exec sp_change_users_login 'report'
Run Code Online (Sandbox Code Playgroud)

结果:

UserName    UserSID
guest       0x3C2E66759FFBC14F84127D6795C27FD3
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用该过程修复来宾用户,则会得到以下信息:

exec sp_change_users_login 'update_one', 'guest', 'guest'
Run Code Online (Sandbox Code Playgroud)

终止此程序。'guest' 是此过程中登录名参数的禁止值。

如果我尝试删除用户,我会得到:

用户 'guest' 不能删除,只能禁用。

select * from sys.database_principals where name = 'guest'
Run Code Online (Sandbox Code Playgroud)

结果是:

name                 guest
principal_id         2
type                 S
type_desc            SQL_USER
default_schema_name  guest
create_date          11/13/98 2:58 AM
modify_date          10/16/01 4:31 PM
owning_principal_id  NULL
sid                  0x3C2E66759FFBC14F84127D6795C27FD3
is_fixed_role        0
Run Code Online (Sandbox Code Playgroud)

数据库似乎对这是否是特殊用户感到困惑。有什么可以做的吗?

Wor*_*DBA 5

用户“guest”永远不会被分配到服务器登录名,即使在全新安装时,它也被归类为没有登录名的 SQL 用户。由于您只能设置登录的 SID(创建时),而不是用户,我认为这是不可能的;sp_change_users_login 不能准确地工作,因为来宾帐户不应映射到服务器登录名。因此,用户“客人”始终是孤立用户。可能不是你想要的答案:)