脚本用户&在SQL Azure中创建登录

时间:2013-12-03 14:34:28

标签: sql sql-server azure

我有一堆用户帐户和服务器帐户,我需要在SQL Azure上创建(然后在其他4个环境中用于(dev,qa,uat和pre-production),我遇到了一些问题。

问题1. CREATE LOGIN必须在master上完成/ CREATE USER必须在数据库中完成。但由于您无法使用Use语句切换数据库,至少我需要分两批执行此操作。

问题2.您似乎无法在动态sql中执行CREATE LOGIN / CREATE USER代码或作为IF块的一部分执行,因此我无法执行IF NOT EXISTS检查每个创建语句。

我是否在这里搞笑,或者是否有任何其他简单/强大的方法来编写SQL Logins&amp ;;在SQL Azure中进行基本存在检查的数据库用户?

2 个答案:

答案 0 :(得分:3)

您应该能够使用Powershell for Azure来完成您的需求。

以下是如何创建数据库的示例: http://blogs.msdn.com/b/windowsazure/archive/2013/02/07/windows-azure-sql-database-management-with-powershell.aspx

以下是创建sql用户的PowerShell示例: http://sqldbawithabeard.com/2013/09/23/add-user-to-database-role-with-powershell/

答案 1 :(得分:3)

我确定你已经解决了这个问题,但我刚刚在Azure SQL中使用这个脚本来创建一个登录名,如果它不存在的话:

IF NOT EXISTS (SELECT * FROM sys.sql_logins WHERE name = 'Blah')
    CREATE LOGIN Blah WITH PASSWORD = 'BS#ah12!!@#' 
ELSE
    PRINT 'Already exist'

和此脚本创建用户(如果不存在):

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

(作为旁注,我应该从sys.sql_logins中提取sid值并使用它来查找sys.sysusers,但我正在使用约定来解决这个问题。请参阅https://stackoverflow.com/a/36654590/1462905