
Wir werden etwa 20 Datenbanken, die auf einer einzelnen Instanz von SQL 2000 liegen, in eine SQL 2008 R2-Umgebung mit Datenbankspiegelung verschieben.
Ich suche nach einem Tool oder Skript, mit dem ich die Konvertierung und Verwaltung dieser 20 DBs in dieser neuen gespiegelten Umgebung problemlos bewältigen kann. Das Einrichten jeder DB umfasst viele Schritte und ich möchte so viel wie möglich automatisieren.
Bearbeiten: Hier sind die Schritte, die ich manuell ausgeführt habe:
- Erstellen Sie dieselben Benutzernamen/Passwörter vom alten SQL 2000-Server auf dem neuen SQL 2008-Server. Synchronisieren Sie dann diese Benutzer/Passwörter auf dem anderen SQL 2008-Server mit denselben SSIDs, damit sie übereinstimmen, wenn wir die Datenbanksicherung und -wiederherstellung durchführen.
- Erstellen Sie eine Sicherungskopie jeder SQL 2000-Datenbank.
- Kopieren Sie sie auf Server A.
- Stellen Sie das Backup auf Server A wieder her.
- Backup von Server A, Kopieren auf Server B, dort wiederherstellen.
- Führen Sie den Spiegelassistenten „Sicherheit konfigurieren“ aus.
- Beginnen Sie mit der Spiegelung.
Ich würde das gerne per Skript erledigen oder ein Tool haben, das das für mich erledigt. Danke! Paul
Antwort1
Ich habe eine Reihe von Batchdateien und SQL-Skripten erstellt, um die folgenden Schritte auszuführen. Ich habe nur die Skripte für die Spiegelung einbezogen, aber die anderen referenzierten SQL-Skripte sind ziemlich einfache SQL-Befehle (außer dem Skript zum Wiederherstellen der Datenbank, das aufgrund meiner Implementierung etwas knifflig ist) und wenn Sie sie erstellen, haben Sie die Möglichkeit, die Variablen im SQLCMD-Modus zu ändern. Wenn Sie mir eine Direktnachricht mit Ihrer E-Mail-Adresse auf Twitter (@jcumberland) senden möchten, kann ich Ihnen den vollständigen Satz von Skripten senden. Ich habe auch die vollständigen Pfade aus den Dateinamen entfernt.
- legt den Wiederherstellungsmodus für die Datenbank fest
- entfernt Spiegelungen
- Spiegeldatenbank entfernen
- Backup-Datenbank
- Sicherungsprotokoll
- kopiert BAK-Datei
- kopiert TRN-Datei
- stellt die Datenbanksicherung wieder her
- stellt die Protokollsicherung wieder her
- löscht Bak-Datei
- löscht trn-Datei
- Einrichten der Spiegelung zwischen dem Haupt- und dem Spiegelserver
/*------------------------------------------------------*/ -- ERSETZEN SIE DIESE WERTE /*------------------------------------------------------*/ /*------------------------------------------------------*/ -- BATCH-DATEI 1, RUFT DAS DIENSTPROGRAMM BATCH-DATEI AUF /*------------------------------------------------------*/ @echo aus PRIMARYHOST festlegen= setze MIRRORHOST= setze INST= setze DRIVE= setze DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" setze LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" setze PORT= setze PRIMARYINST=%PRIMARYHOST%\%INST% setze MIRRORINST=%MIRRORHOST%\%INST% @echo an rufen Sie drdbsetup.bat auf %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT% %LOGDIR% Pause /*------------------------------------------------------*/ -- BATCH-DATEI 2 - RUFT DIE SQL-SCRIPTS AUF /*------------------------------------------------------*/ rem -- Wiederherstellungsmodus auf vollständig setzen sqlcmd /E /S%3 -i SetRecoveryMode.sql -v DATABASE="%8" rem -- Spiegelung entfernen sqlcmd /E /S%3 -i MirroringRemove.sql -v DATABASE="%8" sqlcmd /E /S%4 -i MirroringRemoveMirror.sql -v DATABASE="%8" rem – vollständige Sicherung sqlcmd /E /S%3 -i BackupDatabaseFull.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem -- Protokollsicherung sqlcmd /E /S%3 -i BackupDatabaseLog.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem -- Sicherungsdateien auf Spiegel kopieren kopiere \\%1\%5$\*.bak %6 /y kopiere \\%1\%5$\*.trn %6 /y rem -- Sicherungsdateien vom Primärspeicher entfernen del \\%1\%5$\*.bak del \\%1\%5$\*.trn rem -- Datenbank aus dem Backup-Verzeichnis wiederherstellen sqlcmd /E /S%4 -i RestoreDatabase.sql -v BKDIR=%6 -v DATADIR=%6 -v LOGDIR=%9 rem -- Datenbankprotokoll wiederherstellen sqlcmd /E /S%4 -i RestoreLog.sql -v BACKUPPATH=%6 -v DATABASE=%8 rem – Sicherungsdateien vom Spiegel entfernen del %6\*.bak del %6\*.trn rem -- Spiegelung einrichten sqlcmd /E /S%4 -i MirroringSetup.sql -v PRINCIPAL="%3" -v MIRROR="%4" -v PRINCIPAL_DNS="%1." -v MIRROR_DNS="%2.IhreDomäne.local" -v DATABASE_NAME="%8" -v PORT=%7 /*------------------------------------------------------*/ -- MirroringSetup.sql /*------------------------------------------------------*/ /*-----------------------------------------------------*/ -- auf Prinzipalbasis /*-----------------------------------------------------*/ :verbinden $(PRINCIPAL) GEHEN -- erstellt Endpunkt wenn nicht vorhanden (wählen Sie * aus sys.endpoints, wobei Name = „Mirroring“ ist) beginnen CREATE ENDPOINT Spiegelung AUTORISIERUNG [] STATUS = GESTARTET ALS TCP ( LISTENER_PORT = $(PORT) ,LISTENER_IP = ALLE ) FÜR DATA_MIRRORING ( ROLLE = PARTNER ,AUTHENTICATION = WINDOWS NEGOTIATE ,VERSCHLÜSSELUNG = ERFORDERLICHER ALGORITHMUS RC4 ) Ende gehen /*-----------------------------------------------------*/ -- auf Spiegel laufen /*-----------------------------------------------------*/ :verbinden $(SPIEGEL) GEHEN -- erstellt Endpunkt wenn nicht vorhanden (wählen Sie * aus sys.endpoints, wobei Name = „Mirroring“ ist) beginnen CREATE ENDPOINT Spiegelung AUTORISIERUNG [] STATUS = GESTARTET ALS TCP ( LISTENER_PORT = $(PORT) ,LISTENER_IP = ALLE ) FÜR DATA_MIRRORING ( ROLLE = PARTNER ,AUTHENTICATION = WINDOWS NEGOTIATE ,VERSCHLÜSSELUNG = ERFORDERLICHER ALGORITHMUS RC4 ) Ende gehen -- Richtet eine Spiegelpartnerschaft ein ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(PRINCIPAL_DNS):$(PORT)' gehen -- Entfernt die Spiegelüberwachung falls vorhanden (select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job') beginnen EXEC sp_dbmmonitordropmonitoring Ende gehen -- Richtet die Spiegelüberwachung ein EXEC sys.sp_dbmmonitoraddmonitoring – Standard ist 1 Minute gehen /*-----------------------------------------------------*/ -- auf Prinzipalbasis /*-----------------------------------------------------*/ :verbinden $(PRINCIPAL) GEHEN -- Richtet eine Spiegelpartnerschaft ein ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(MIRROR_DNS):$(PORT)' gehen -- Entfernt die Spiegelüberwachung falls vorhanden (select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job') beginnen EXEC sp_dbmmonitordropmonitoring Ende gehen -- Richtet die Spiegelüberwachung ein EXEC sys.sp_dbmmonitoraddmonitoring – Standard ist 1 Minute gehen /*------------------------------------------------------*/ -- DRMirroringRemove.sql /*------------------------------------------------------*/ falls vorhanden (select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null) beginnen ALTER DATABASE [$(DATABASE)] SET PARTNER OFF Ende gehen WARTEN AUF VERZÖGERUNG '00:00:10' gehen /*------------------------------------------------------*/ --DRMirroringRemoveMirror.sql /*------------------------------------------------------*/ falls vorhanden (select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null) beginnen ALTER DATABASE [$(DATABASE)] SET PARTNER OFF Ende gehen WARTEN AUF VERZÖGERUNG '00:00:10' gehen DATENBANK LÖSCHEN [$(DATENBANK)] gehen
Antwort2
wie wäre es mit dem eingebautenDatenbank-Spiegelungs-Monitor?