Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment déplacer/copier toutes les bases de données avec les utilisateurs, le schéma et les rôles d'un serveur à un autre

  1. Clic droit sur la BD
  2. Cliquez sur les tâches
  3. Cliquez sur générer des scripts
  4. Passez par l'assistant et sélectionnez vos tables
  5. Sur la page des options, cliquez sur le bouton Avancé (il est là, mais ne ressort pas très bien)
  6. Modifier l'option "Types de données à scripter"

Il existe des options pour scripter les données et les connexions (une tonne d'autres choses). C'est très pratique.

Voici le script qui va générer un script pour ajouter tous les rôles sur toutes les bases de données

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;