如何在sql中创建与sql用户同名的数据库用户



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

我创建了一个数据库TestDB,并试图在TestDB中创建一个名为"testuser"的用户,但得到了以下错误:

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

Msg 15410,Level 11,State 1,Procedure sys.sp_addrolemember,Line 35[Batch Start Line 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'

我想我应该能够在数据库级别创建这个用户?

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

要了解该用户名是什么,您可以使用以下查询:

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

相关内容

  • 没有找到相关文章

最新更新