我带着SQL用户/登录问题回到这里。 首先,我在SQL Server 2008上工作,而且我不是该服务器上的主服务器。 在那个SQL服务器上我有不同的Login,这些Login被映射到USER到我的数据库' DB_MyDataBase'。 实际上,我有10个不同的登录映射到我的数据库中的10个不同用户' DB_MyDataBase'。
因为,当我使用Login' Laurent'连接到SQL服务器时,那个SQL登录' Laurent'是用户'劳雷尔'在我的数据库' DB_MyDataBase'。目前,没问题。 但是现在对于那10个不同的登录并希望知道他们各自的USER用于我的数据库' DB_MyDataBase'。
经过一番研究后,我发现了一项可以做"工作的请求"
sp_msloginmappings 'Laurent', 1
通常情况下,该用户帐户信息显示在当前数据库上下文中,用于登录帐户' Laurent' 但是当我尝试它时,我收到了一条错误消息。
Nom d'objet 'dbo.syslogins' non valide.
对于非法国用户,错误消息为:Object name 'dbo.syslogins' is not valid
。
我找到了另一个有效的请求"一点"。
SET NOCOUNT ON
CREATE TABLE #temp
(
SERVER_name SYSNAME NULL ,
Database_name SYSNAME NULL ,
UserName SYSNAME ,
GroupName SYSNAME ,
LoginName SYSNAME NULL ,
DefDBName SYSNAME NULL ,
DefSchemaName SYSNAME NULL ,
UserID INT ,
[SID] VARBINARY(85)
)
DECLARE @command VARCHAR(MAX)
--this will contain all the databases (and their sizes!)
--on a server
DECLARE @databases TABLE
(
Database_name VARCHAR(128) ,
Database_size INT ,
remarks VARCHAR(255)
)
INSERT INTO @databases--stock the table with the list of databases
EXEC sp_databases
SELECT @command = COALESCE(@command, '') + '
USE ' + database_name + '
insert into #temp (UserName,GroupName, LoginName,
DefDBName, DefSchemaName,UserID,[SID])
Execute sp_helpuser
UPDATE #TEMP SET database_name=DB_NAME(),
server_name=@@ServerName
where database_name is null
'
FROM @databases
EXECUTE ( @command )
SELECT loginname ,
UserName ,
Database_name
FROM #temp
WHERE LoginName = 'Laurent'
因此,一个人正在努力列出所有映射到每个数据库上的登录的用户BUT(总有一个"但是" ...)它只能使用登录我用来连接。
对于ie当我使用Login' Laurent'连接到SQL服务器时之前的请求正在运行,因为我请求我用来连接到SQL服务器的相同登录但是当我连接到Login' Laurent'并使用不同的登录执行上一个请求(不是' Laurent'而是另一个用户将用户映射到我的数据库' DB_MyDataBase'。)我什么也看不见,它给我留空栏.... 也许是因为我不是那个SQL服务器上的主人。
那么我如何列出用户映射到不同于我连接的登录?
我希望我的问题足够清楚(对于长篇文章感到抱歉)并感谢您将来的回答。如果您需要更多信息来回答我,请不要犹豫,问我。
答案 0 :(得分:0)
您可以看到的内容取决于您登录的用户的权限。如果您拥有必要的权限,则针对security catalog views中的两个的此查询应该为您提供所需的内容。
select
dp.name as UserName,
sp.name as LoginName
from
sys.database_principals dp
left join sys.server_principals sp on sp.sid = dp.sid
where
dp.type in ('S', 'U')