Я пытаюсь создать пользователя с помощью сценария T-SQL в SQL Server 2005/2008. Я запускаю следующий SQL-запрос, чтобы проверить, существует ли пользователь, и создайте его, если он не существует:
IF NOT EXISTS (SELECT *
FROM sys.database_principals
WHERE name = N'MyDomain\MyUser')
BEGIN
CREATE USER [MyDomain\MyUser] FOR LOGIN [MyDomain\MyUser] WITH default_schema=[dbo];
SELECT 1;
END
ELSE
BEGIN
SELECT 0;
END
К сожалению, это не работает, если учетная запись Windows MyDomain \ MyUser уже находится в базе данных, но под другим именем. Примером этого может быть, если MyDomain \ MyUser была учетная запись, которая создала базу данных, то она уже будет в базе данных под пользователем dbo. В этом случае я получаю следующую ошибку:
Сообщение 15063, Уровень 16, Состояние 1, Строка 1
Логин уже имеет учетную запись под
другое имя пользователя.
Как я могу проверить, является ли пользователь Windows MyDomain \ MyUser уже пользователем в базе данных, даже если он находится под другим именем пользователя?