SQL Server孤立用户检测与处理(2)
来源:未知 责任编辑:责任编辑 发表时间:2013-12-01 14:21 点击:次
sp_change_users_login 不能用于将数据库用户映射到 Windows 级主体、证书或非对称密钥。
sp_change_users_login 不能与通过 Windows 主体创建的 SQL Server 登录名一起使用,也不能与使用 CREATE USER WITHOUT LOGIN 创建的用户一起使用。
不能在用户定义的事务中执行 sp_change_users_login。
2、 如果这些账号没有用了,可以考虑直接删除,附上一个快速删除的代码
删除当前库的所有孤立用户
declare @s varchar(1000)
if OBJECT_ID('tempdb..#tb') is not null drop table #tb
create table #tb(username varchar(50))
insert into #tb
SELECT name
FROM sys.database_principals DP WITH(NOLOCK)
WHERE NOT EXISTS(
SELECT *
FROM sys.server_principals SP WITH(NOLOCK)
WHERE SP.sid = DP.sid
) www.2cto.com
AND DP.type IN(
'S', 'G', 'U'
)
AND DP.sid IS NOT NULL
AND DP.sid <> 0x00
if @@ROWCOUNT >0
begin
select @s=ISNULL(@s,'')+'drop user ['+username+'];'+CHAR(13)from #tb
--print @s
exec (@s)
end
drop table #tb
删除所有数据库的孤立用户
exec sp_msforeachdb
'use [?]
declare @s varchar(1000)
if OBJECT_ID(''tempdb..#tb'') is not null drop table #tb
create table #tb(username varchar(50))
insert into #tb SELECT name
FROM sys.database_principals DP WITH(NOLOCK)
WHERE NOT EXISTS(
SELECT *
FROM sys.server_principals SP WITH(NOLOCK)
WHERE SP.sid = DP.sid
) www.2cto.com
AND DP.type IN(
''S'', ''G'', ''U''
)
AND DP.sid IS NOT NULL
AND DP.sid <> 0x00 ;
if @@ROWCOUNT >0
begin
select @s=ISNULL(@s,'''')+''drop user [''+username+''];''+CHAR(13)from #tb
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>