SQL Server域名和用户名格式

时间:2018-03-19 10:16:12

标签: sql-server

我正在SQL Server Management Studio 2018中执行SQL脚本。在我的脚本中,我需要指定一个用户(包括域 - 不确定我是否需要服务器名称)。

因此,我创建了一个用户sam,将用户类型设置为SQL user without login,并将用户角色设置为db_datareaderdb_datawriter

然后我执行我的脚本,但它给了我错误:User or role 'MHT.sam' does not exist in this database.

但我几乎可以肯定我已将此用户添加到数据库中(请参阅下面的图片进行仔细检查)。 我的用户名和域名格式是否正确?您认为我做错了什么?

enter image description here

这是我的域名和服务器:
enter image description here

1 个答案:

答案 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'