Azure SQL:仅当登录用户不存在时才创建

Sou*_*rer 6 sql-server authentication azure azure-sql-database

我正在尝试创建一个自动化脚本,用于在现有实例上创建 Azure SQL 数据库。

我知道我可以使用基于 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
Run Code Online (Sandbox Code Playgroud)

我的问题是 sys.sysusers 视图检查数据库用户,而不是登录用户。我试图找到哪个系统目录视图包含登录用户,但我找不到(我也尝试过database_principals)

注意:我找到了几种本地 SQL Server 的替代方案,但它们不适用于 Azure SQL

Dan*_*man 8

必须在上下文 Azure SQL 数据库逻辑服务器主数据库中创建/更改登录名。使用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;
Run Code Online (Sandbox Code Playgroud)