我正在SQL Server Management Studio 2018中执行SQL脚本。在我的脚本中,我需要指定一个用户(包括域 - 不确定我是否需要服务器名称)。
因此,我创建了一个用户sam
,将用户类型设置为SQL user without login
,并将用户角色设置为db_datareader
和db_datawriter
。
然后我执行我的脚本,但它给了我错误:User or role 'MHT.sam' does not exist in this database.
但我几乎可以肯定我已将此用户添加到数据库中(请参阅下面的图片进行仔细检查)。 我的用户名和域名格式是否正确?您认为我做错了什么?
答案 0 :(得分:0)
错误非常明显。
在对象资源管理器中的屏幕截图中,您有一个名为SAM
的用户,但对于sp_AddRoleMember,您使用的是MHT.SAM
用户。
你的sp_addrolemember也应该只有Sam
之类的东西......
Exec sp_addrolemember N'RunStoredProc' , N'Sam'
GO
另外,要仔细检查您的用户类型是什么,它将映射到哪个登录名以及实际发生的情况,请使用以下查询。
SELECT
d.name AS User_Name
, d.type_desc AS User_Type
, d.default_schema_name AS User_default_schema_name
, d.create_date AS User_Created_Date
, s.name AS Login_name
, s.type_desc AS Login_LoginType
, s.is_disabled AS Login_is_disabled
, s.create_date AS Login_create_date
, s.default_database_name AS Login_default_database_name
, s.default_language_name AS Login_default_language_name
FROM sys.server_principals s
INNER JOIN sys.database_principals d on s.sid = d.sid
WHERE d.name = 'Sam'