如何检查Azure Sql Server主体(登录名)是否已存在

如何检查Azure Sql Server主体(登录名)是否已存在,azure,azure-sql-database,azure-sql-server,Azure,Azure Sql Database,Azure Sql Server,我正在使用ARM模板在Azure上实例化一个新的Sql Server资源,作为设置的一部分,我需要创建一些用户登录 ARM模板似乎不提供创建新用户主体的选项,因此我正在考虑运行SQL命令: 创建登录名 密码=“” 使用此命令的问题是,如果用户已经存在,那么它将失败,因此它不是幂等的,这是我们需要的 如何检查Azure SQL Server上是否已存在登录名?以下脚本将在主数据库的逻辑Azure SQL Server级别上创建登录名 IF NOT EXISTS (SELECT * FROM sys

我正在使用ARM模板在Azure上实例化一个新的Sql Server资源,作为设置的一部分,我需要创建一些用户登录

ARM模板似乎不提供创建新用户主体的选项,因此我正在考虑运行SQL命令:

创建登录名 密码=“”

使用此命令的问题是,如果用户已经存在,那么它将失败,因此它不是幂等的,这是我们需要的


如何检查Azure SQL Server上是否已存在登录名?

以下脚本将在主数据库的逻辑Azure SQL Server级别上创建登录名

IF NOT EXISTS (SELECT * FROM sys.sql_logins WHERE name = 'simonel')
    CREATE LOGIN simonel WITH PASSWORD = 'BS#ah12!!@#' 
ELSE
    PRINT 'Already exist'
以下acript将在数据库级别创建用户(如果该用户尚不存在)

IF NOT EXISTS (SELECT * FROM sys.sysusers WHERE name='simonel')
    CREATE USER simonel FOR LOGIN Blah WITH DEFAULT_SCHEMA = dbo
ELSE
    PRINT 'Already exists'

您可以使用以下查询:

If not Exists (select loginname from master.dbo.syslogins 
    where name = @loginName and dbname = 'PUBS')
Begin
    Select @SqlStatement = 'CREATE LOGIN ' + QUOTENAME(@loginName) + ' 
    FROM WINDOWS WITH DEFAULT_DATABASE=[PUBS], DEFAULT_LANGUAGE=[us_english]')

    EXEC sp_executesql @SqlStatement
End
有关更多详细信息,您可以参考以下博客:

希望这有帮助