1 votes

Migration de bases de données Mssql de différentes instances vers un nouveau serveur

J'ai 3 instances de Sql (2008 R2) sur 3 serveurs différents. Les versions sont (10.50.2550.0 SP1 Standard Edition (64-bit), 10.50.2550.0 SP1 Standard Edition (64-bit)). L'objectif est de migrer toutes les bases de données et les logins au nouveau serveur, nous venons d'acheter avec Sql server 2012.

Je ne sais pas comment m'y prendre. J'ai essayé d'utiliser l'assistant de copie de base de données, mais il échoue toujours. Si je décide de sauvegarder chaque base de données et de les restaurer sur les nouveaux serveurs, je ne sais pas comment migrer les identifiants.

Quelle est la meilleure approche pour faire face à cette situation ?

Désolé pour la confusion : (Plus de détails sur le problème)

  1. Nombre de bases de données à déplacer : 10
  2. Erreur listée pendant l'assistant de copie de la base de données :

Ligne 60 :

OnError,DUPFAIDS,NT AUTHORITY \SYSTEM ,DUAPPSRV1_EXAPPSVR1_DUPFAIDS_PFAIDS_Transfer Objects Task,{8F0C82BB-4C5D-4796-BE75-BAB033C59039},{3818CD1B-9685-46B7-AFE2-AE0FE962DA03},

12/3/2014 12:10:15 PM,12/3/2014 12:10:15 PM,0,0x,ERROR : errorCode=-1073548784

description=L'exécution de la requête "--------------------------------------------------..." a échoué avec l'erreur suivante : "Nom d'objet non valide 'xwd_window_disabled_objects'.".

Raisons possibles de l'échec : Problèmes avec la requête, propriété "ResultSet" non définie correctement, paramètres non définis correctement, ou connexion non établie correctement.**

4voto

Katherine Villyard Points 18470

Il existe de nombreuses façons différentes de migrer les bases de données. La sauvegarde et la restauration sont les plus couramment recommandées, mais si vous avez plus de 100 bases de données, vous pourriez vouloir script quelque chose pour détacher et attacher les bases de données. J'ai utilisé avec succès cette méthode pour migrer un très grand nombre (des centaines) de bases de données vers un nouveau serveur :

@ECHO ON

set controlfile=control.txt

set newipmdf=\\newserver\g$
set newipldf=\\newserver\e$
set oldserver=oldserver\Prod1
set oldmdfpath=d:\prod1
set newmdfpath=g:\data
set copymdfpath=m:\data
set newserver=newserver
set oldlogpath=e:\prod1
set newlogpath=e:\log
set copylogpath=l:\log
set movedmdfpath=%oldmdfpath%\moved
set movedldfpath=%oldlogpath%\moved

mkdir %movedmdfpath%
mkdir %movedldfpath%

net use m: %newipmdf%
net use l: %newipldf%

SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (%controlfile%%) DO (
  SET "line=%%L"
  SETLOCAL ENABLEDELAYEDEXPANSION
  ECHO !line!
  sqlcmd -E -S!oldserver! -Q"EXEC master.dbo.sp_detach_db @dbname = N'!line!'"
  copy "!oldmdfpath!\!line!.mdf" !copymdfpath!
  copy "!oldlogpath!\!line!_log.ldf" !copylogpath!
  sqlcmd -E -S!newserver! -Q"CREATE DATABASE [!line!] ON ( FILENAME = N'!newmdfpath!\!line!.mdf' ),( FILENAME = N'!newlogpath!\!line!_log.ldf' ) FOR ATTACH"
  move "!oldmdfpath!\!line!.mdf" !movedmdfpath!
  move "!oldlogpath!\!line!_log.ldf" !movedldfpath!
  ENDLOCAL
)
ENDLOCAL

net use m: /z
net use l: /z

En ce qui concerne les identifiants, je ne peux pas vous aider avec les mots de passe mais vous devriez pouvoir obtenir une liste de noms d'utilisateurs avec :

SELECT [name], type, type_desc
  FROM [master].[sys].[server_principals]
  where is_disabled=0 and type in ('S','U')

2voto

Jim G. Points 2592

Sauvegardez et restaurez les bases de données comme suggéré. Ensuite, exécutez ce microsoft script ( https://support.microsoft.com/kb/918992 ) sur les anciens serveurs pour générer un script pour créer les logins sur le nouveau serveur. Puisque vous avez deux serveurs sources, assurez-vous de revoir votre script attentivement pour vous assurer qu'il n'y a pas d'entrées en double ou d'autres problèmes.

1voto

Warren Blanchet Points 881

Le script de Katherine Villyard pour détacher / attacher est bon.

Si vous voulez sauvegarder et restaurer, c'est aussi une bonne option, fréquemment utilisée. Mais faites d'abord les connexions.

Copiez le code pour sp_hexadecimal y sp_help_revlogin von cet article de Technet et utiliser sp_help_revlogin pour générer des instructions TSQL que vous pouvez utiliser pour copier vos identifiants. Le processus est le suivant :

  1. Exécuter le code mentionné ci-dessus pour créer les procédures stockées (en master)
  2. Exécuter EXEC sp_help_revlogin sur votre ancien serveur
  3. Copiez les résultats de sp_help_revlogin et les coller dans une nouvelle fenêtre de requête connectée à votre nouvelle instance de SQL Server
  4. Exécutez les instructions TSQL que vous venez de coller

Si cela est fait correctement, votre nouvelle instance aura des logins correspondants (avec des SID et des mots de passe correspondants, c'est essentiel). Vous pourrez alors sauvegarder et restaurer vos bases de données sur la nouvelle instance sans vous soucier des identifiants orphelins.

(NOTE aux futurs visiteurs : si pour une raison quelconque, le lien est rompu, faites une recherche sur sp_help_revlogin pour trouver la nouvelle page).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X