Pregunta

Tengo un montón de cuentas de usuario y cuentas de servidor que necesito crear en SQL Azure (y luego en otros 4 entornos para (Dev, QA, UAT y preproducción) y me estoy encontrando con algunos problemas.

Problema 1. Crear inicio de sesión debe hacerse en el usuario maestro / creación debe hacerse en la base de datos. Pero dado que no puede cambiar las bases de datos con un Use Declaración, al menos voy a necesitar hacer esto en 2 lotes.

Problema 2. Parece que no puede ejecutar el código de usuario Crear inicio de sesión/Crear en SQL dinámico o como parte de un IF bloque para que no pueda hacer una verificación si no existe en cada declaración de creación.

¿Estoy buceado aquí, o hay alguna otra forma fácil/robusta de escribir la creación de inicios de sesión SQL y usuarios de DB con alguna verificación básica de existencia en SQL Azure?

¿Fue útil?

Solución

Debería poder usar PowerShell para Azure para lograr lo que necesita.

Aquí hay un ejemplo de cómo crear una base de datos:http://blogs.msdn.com/b/windowsazure/archive/2013/02/07/windows-azure-sql-database-management-with-powershell.aspx

Aquí hay un ejemplo de PowerShell de la creación de usuarios de SQL:http://sqldbawithabeard.com/2013/09/23/add-user-to-database-role-with-powershell/

Otros consejos

Estoy seguro de que has resuelto esto, pero acabo de usar este script en Azure SQL para crear un inicio de sesión si no existe (ejecutándose contra master):

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

y este script para crear el usuario si no existe (ejecutándose en la base de datos real):

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

(Como nota al margen, debería sacar el valor SID de sys.sql_logins y usar eso para buscar sys.sysusers, pero estoy usando la convención para trabajar en torno a eso. Ver https://stackoverflow.com/a/36654590/1462905)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top