【问题标题】:How can i create a database user in sql with same name as sql user?如何在 sql 中创建与 sql 用户同名的数据库用户?
【发布时间】:2020-12-04 00:59:56
【问题描述】:

我在 SQL Server 下有一个用户 -> 安全性-> 以“testuser”身份登录。

我创建了一个数据库 TestDB 并尝试在 TestDB 中创建一个名为“testuser”的用户,但出现以下错误:

消息 15063,第 16 级,状态 1,第 11 行
该登录名已经有一个使用不同用户名的帐户。

消息 15410,级别 11,状态 1,过程 sys.sp_addrolemember,第 35 行 [批处理开始行 0]
此数据库中不存在用户或角色“testuser”。

这是我使用的创建脚本:

USE [TestDB] 

IF NOT EXISTS (SELECT loginname 
               FROM master.dbo.syslogins 
               WHERE name = 'testuser')  
BEGIN
    CREATE LOGIN [testuser] 
        WITH PASSWORD = 'testpassword', 
             DEFAULT_DATABASE = TestDB, 
             DEFAULT_LANGUAGE = [us_english], 
             CHECK_EXPIRATION = OFF,  
             CHECK_POLICY = OFF  
END

USE TestDB; 

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = 'testuser') 
BEGIN
    CREATE USER [testuser] FOR LOGIN [testuser] 
    WITH DEFAULT_SCHEMA = [dbo] 
END

EXEC sys.sp_addrolemember 
     @rolename = N'db_owner', @membername = N'testuser'

我假设我应该能够在数据库级别创建此用户?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    错误信息很清楚,您在TestDB数据库中已经有一个用户名(可以是任何用户名),该用户名链接到相同的登录名,因此您不能在一个登录名下创建多个用户。

    要找出用户名是什么,您可以使用以下查询:

    USE TestDB
    Select u.name , loginname
    from sys.syslogins l
    inner join sys.sysusers u
    on l.sid = u.sid
    where loginname = 'testuser'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多