我需要获取每个数据库中孤立用户的列表,以及它们所在的数据库名称。我做了下面的操作,给出了每个数据库中的孤立用户,但我不知道如何在下一个包含另一列给每个用户找到显示在哪个数据库中。我尝试使用 DB_NAME() 但无济于事。
use master;
GO
CREATE PROCEDURE orphaned_u
AS
BEGIN
DECLARE @command varchar(1000)
SELECT @command = 'use ?
if DB_ID("?")>4
EXEC sp_change_users_login ''Report'' '
EXEC sp_MSforeachdb @command
END
CREATE TABLE tempTable (
user nvarchar(1000),
User_sid sql_variant
)
INSERT INTO tempTable
EXEC master..orphaned_u
SELECT * FROM dbo.tempTable
我已经看过Find orphaned users但最好我使用上面的代码并找到一种方法在具有已内置存储过程 sp_change_users_login ''Report'' 的列中显示数据库名称
如果您必须使用解决问题的非常精细的方法
sp_change_users_login
通过使用游标并插入存储过程中的临时表
如果您不需要,我建议不要将程序/数据放在主数据库中。
运行过程
返回我的两个孤立用户