Azure SQL: создайте пользователя для входа, только если он не существует - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь создать автоматический сценарий для создания базы данных SQL Azure для уже существующего экземпляра.

Я знаю, что могу использовать автоматизацию, основанную на CLI, но мне нужно немного больше контролировать, что и когда создается.

Теперь я остановился при создании логина. Я хочу создать пользователя для входа в систему, только если он не существует (и изменить пароль, если он существует).

Это мой код:

IF NOT EXISTS (SELECT name FROM sys.sysusers WHERE name='$(dbUserName)')
    BEGIN
        CREATE LOGIN $(dbUserName) WITH PASSWORD='$(dbUserPassword)';
    END
ELSE
    BEGIN
        ALTER LOGIN $(dbUserName) WITH PASSWORD='$(dbUserPassword)';
    END

Моя проблема в том, что представления sys.sysusers проверяют пользователей базы данных, а не пользователя входа. Я пытаюсь найти, какое представление системного каталога содержит логин пользователей, но я не могу найти (я также пробовал database_principals)

ПРИМЕЧАНИЕ. Я нашел несколько альтернатив для локального сервера SQL Server, но они не работают в Azure SQL

1 Ответ

0 голосов
/ 24 августа 2018

Логины должны создаваться / изменяться в контексте главной базы данных логического сервера базы данных SQL Azure.Используйте представление каталога sys.sql_logins для этой задачи.Представление sys.sysusers предоставляется только для обеспечения обратной совместимости и не должно использоваться в дальнейшем в Azure или на предварительном SQL Server.

IF NOT EXISTS (SELECT name FROM sys.sql_logins WHERE name='$(dbUserName)')
    BEGIN
        CREATE LOGIN $(dbUserName) WITH PASSWORD='$(dbUserPassword)';
    END
ELSE
    BEGIN
        ALTER LOGIN $(dbUserName) WITH PASSWORD='$(dbUserPassword)';
    END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...