我有一堆用户帐户和服务器帐户,我需要在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中进行基本存在检查的数据库用户?
答案 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)