我在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'