K09*_*K09 3 sql-server users logins
我删除了 SQL Server Windows登录。然后我运行下面的代码来检查孤立的数据库用户。但是,与删除的 Windows 登录对应的数据库用户不会显示为孤立用户。
为什么会这样?
EXEC sp_change_users_login @Action = 'Report';
Run Code Online (Sandbox Code Playgroud)
Thomas 解释了为什么该存储过程没有捕获孤立的 Windows 用户,但您可以通过以下方式进行检查:
SELECT p.name
FROM database_name.sys.database_principals AS p
WHERE [type] IN (N'U', N'G')
AND NOT EXISTS
(
SELECT 1 FROM sys.server_principals AS sp
WHERE sp.sid = p.sid
);
Run Code Online (Sandbox Code Playgroud)
如果您需要对所有数据库执行此操作,您可以动态生成它,例如
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'SELECT ''' + db.name + ''',p.name
FROM ' + QUOTENAME(db.name) + '.sys.database_principals AS p
WHERE [type] IN (N''U'', N''G'')
AND NOT EXISTS
(
SELECT 1 FROM sys.server_principals AS sp
WHERE sp.sid = p.sid
);'
FROM sys.databases AS db
WHERE [state] = 0;
EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |