Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come spostare/copiare tutti i database con utenti, schemi e ruoli da un server all'altro

  1. Fai clic con il pulsante destro del mouse sul DB
  2. Fai clic su attività
  3. Fai clic su genera script
  4. Esegui la procedura guidata e seleziona i tuoi tavoli
  5. Nella pagina delle opzioni, fai clic sul pulsante Avanzate (è lì, solo che non risalta molto bene)
  6. Cambia l'opzione "Tipi di dati in script"

Ci sono opzioni per scrivere dati e accessi (un sacco di altre cose). È molto utile.

Ecco lo script che genererà uno script per aggiungere tutti i ruoli su tutti i database

declare @selectStatement varchar(1000)

set @selectStatement = 'Use ?;SELECT ''USE ?''; SELECT ' + '''EXECUTE sp_AddRoleMember ''''' + ''' + roles.name + '''''''+','''''+''' +  Replace(users.name,''DOMAINA'',''DOMAINB'') + ''' + '''''''
     from sys.database_principals users
    inner join sys.database_role_members link
    on link.member_principal_id = users.principal_id
   inner join sys.database_principals roles
     on roles.principal_id = link.role_principal_id'

                            --where users.name like ''%%'''

                EXEC sp_MSForEachDB @selectStatement;