2012-09-12 13 views
5

Escribí una pequeña aplicación para hacer copias de seguridad de las bases de datos SQL Azure usando el muy útil comando 'CREAR COMO COPIA DE' en SQL Azure. p.ej.Qué permisos son necesarios para copiar bases de datos en SQL Azure

CREATE DATABASE MyNewDB AS COPY OF MyOldDB 

Ejecuto este comando con el inicio de sesión de administrador (primer inicio de sesión al crear un servidor). Mi pregunta: ¿Cuáles son los permisos mínimos que un nuevo inicio de sesión necesitaría para ejecutar el comando anterior?

Hasta el momento esto es lo que he hecho:

-- IN MASTER DB -- 
CREATE LOGIN DBCreator WITH PASSWORD = '?????????????' 
CREATE USER DBCreator FROM LOGIN DBCreator; 
EXEC sp_addrolemember 'dbmanager', 'DBCreator'; 

-- IN MyOldDB -- 
-- (I ran this stuff when the previous commands didn't do it) -- 
CREATE USER DBCreator FROM LOGIN DBCreator; 
EXEC sp_addrolemember 'db_datareader', 'DBCreator'; -- 

Y el resultado cuando se ejecuta el comando anterior CREAR BASE DE DATOS:

CREATE DATABASE permission denied in database 'MyOldDB'. 
+0

Hola, debe estar conectado al maestro cuando ejecuta el comando CREATE DATABASE. También asegúrese de que la cuenta que usa sea parte de la función de base de datos dbmanager (en el maestro); este es el permiso que necesitas Aquí está la documentación de MSDN: http://msdn.microsoft.com/en-us/library/windowsazure/ee336274.aspx –

+0

Sí, estoy ejecutando el comando Crear base de datos desde 'maestro'. Sí, el nuevo inicio de sesión es dbmanager en el maestro. –

+1

Intenté tus pasos y también agregué DBCreator como propietario de db de la base de datos de origen. Tengo el mismo error. Entonces recordé que había una restricción adicional ... básicamente, el usuario que emite la declaración CREATE DATABASE debe ser el usuario "original" que creó la base de datos de origen. –

Respuesta

1

no podía añadir la función db_owner al nuevo inicio de sesión, el comando

EXEC sp_addrolemember 'db_owner', 'NewLogin' 

lanza el error

Cannot alter the role 'db_owner', because it does not exist or you do not have permission.

Pero el uso de la función DBManager funciona

EXEC sp_addrolemember 'dbmanager', 'NewLogin' 

hay información útil en el artículo Managing Databases and Logins in Windows Azure SQL Database.

Cuestiones relacionadas