Сценарий пользователя и создание входа в систему в SQL Azure

StackOverflow https://stackoverflow.com/questions/20353971

  •  25-08-2022
  •  | 
  •  

Вопрос

У меня есть куча учетных записей пользователей и учетных записей серверов, которые мне нужно создать на SQL Azure (а затем в 4 других средах для (DEV, QA, UAT & Pre-Production), и я сталкиваюсь с некоторыми проблемами.

Проблема 1. Создание входа в систему должно быть сделано в Master / Create User, который должен быть сделан в базе данных. Но так как вы не можете переключить базы данных с помощью Use Заявление, по крайней мере, мне нужно сделать это в 2 партиях.

Проблема 2. Вы, кажется, не сможете выполнить CREATE LOGIN/CREATE пользовательский код в Dynamic SQL или как часть IF Блок, поэтому я не могу сделать, если не существует, проверяйте каждый оператор CREATE.

Я смирился здесь, или есть какие -либо другие простые/надежные способы сценария создания логин SQL и пользователей DB с некоторой базовой проверкой существования в SQL Azure?

Это было полезно?

Решение

Вы должны иметь возможность использовать PowerShell для 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/

Другие советы

Я уверен, что вы решили это, но я только что использовал этот скрипт в Azure SQL, чтобы создать логин, если его не существует (против master):

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'

(В качестве примечания я должен вытащить значение SID из sys.sql_logins И используя это для поиска sys.sysusers, но я использую соглашение, чтобы обойти это. Видеть https://stackoverflow.com/a/36654590/1462905)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top