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
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • SQL小技巧系列 --- 行转列合并
  • sql server 列转行
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1