web-dev-qa-db-fra.com

Copier les connexions SQL et les autorisations d'un serveur à un autre

J'ai besoin de dupliquer toutes les connexions et leurs autorisations de niveau de la base de données associées d'un serveur à un autre. J'utilise SQL Server 2008 R2 pour serveur A et SQL Server 2012 pour serveur B, je suis capable de trouver quelques scripts différents pour transférer des connexions de serveur A au serveur B. Toutefois, je ne transférera également pas les autorisations de niveau de la base de données pour chaque connexion.

J'ai examiné ce qui suit pour avoir transféré les connexions:

http://www.sqlsoldier.com/wp/sqlserver/transferring-logins-a-aatabase-mirrorhttp://support.microsoft.com/kb/918992

La solution SQL Soldier semble fonctionner correctement.

Les mêmes bases de données qui résident sur le serveur A résident également sur le serveur B. Comment puis-je automatiser/script le transfert de connexion et d'autorisations d'un serveur à un autre?

4
DMill

J'ai une procédure stockée que vous pouvez utiliser dans le but.

sp_dbpermissions

Lorsque vous l'exécutez, il tire toutes les autorisations de la base de données en trois ensembles de résultats. Le premier est une liste de directeurs, la seconde est l'appartenance du rôle et la dernière est des autorisations directes (Grant Exec sur SP par exemple). Chaque jeu de résultats inclut un script pour supprimer ladite autorisation et une autre à Créez-le. Le meilleur de tout cela a été conçu à l'origine comme un outil de recherche, il existe donc de nombreuses façons de limiter les données. Par exemple, le paramètre @LoginName ne retournera que des directeurs qui correspondent à un nom principal de serveur donné (par opposition au nom principal de la base de données) et encore mieux à vos fonctions toutes les options pour les @DBName Paramètre. Il exécute non seulement les résultats de toutes les bases de données (y compris les systèmes système), mais comprend une déclaration USE au début des déclarations Drop & Create.

De cette façon, si vous devez générer toutes les autorisations pour une connexion donnée, vous pouvez exécuter ceci:

EXEC sp_DBPermissions 'All',@LoginName = 'loginame'

Remarque: cela n'inclut pas l'instruction Créer une connexion. Pour ce faire, utilisez SQL Solds Script ou il existe également une sp_srvpermissions également.

1
Kenneth Fisher

J'ai créé une série de procédures stockées qui ont accompli un objectif similaire (avec un certain PowerShell pour la saveur) sur la base de cet article CLAIRE-HSU - SQL Logins

Je n'ai pas de blog de moi-même (je sais, je sais) donc je ne peux donc pas partager ma solution précise avec vous. J'ai essentiellement créé trois procédures stockées. Un pour les connexions de serveur, une pour la base de données et une autre pour les autorisations d'objet de base de données.

Ah, partagé sur mon entraînement. Lien vers des fichiers Ce sont les procédures stockées dont vous avez besoin. Je les ai dans ma base de données DBA. J'utilise ensuite PowerShell pour obtenir une liste de connexions, puis interroger la procédure stockée, enregistrer le script dans un fichier et répéter. Vous pouvez facilement le changer pour exécuter le script sur un autre serveur.

1
Jonathan Fite