Tools zum Verwalten der SQL 2008-Datenbankspiegelung?

Tools zum Verwalten der SQL 2008-Datenbankspiegelung?

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:

  1. 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.
  2. Erstellen Sie eine Sicherungskopie jeder SQL 2000-Datenbank.
  3. Kopieren Sie sie auf Server A.
  4. Stellen Sie das Backup auf Server A wieder her.
  5. Backup von Server A, Kopieren auf Server B, dort wiederherstellen.
  6. Führen Sie den Spiegelassistenten „Sicherheit konfigurieren“ aus.
  7. 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?

verwandte Informationen