Gibt es eine vorgeschlagene Möglichkeit, eine gesamte SQL Server-Datenbank aus einer anderen Datenbank in SQL Server 2012 SP2 neu zu erstellen?
Lassen Sie mich erklären ... Wir haben eine Datenbank, für die wir versuchen, eine teilweise Eindämmung zu aktivieren, und fügen sie dann unserem AlwaysOn-Cluster hinzu. Beim Versuch, das Containment auf partiell zu setzen, werden nur Deadlock-Fehler angezeigt. Die Datenbank wurde von SQL Server 2008 über 2008R2 bis 2012 (kein SP, SP1, SP2) geändert und hatte für eine Weile TDE.
Der Microsoft-Support hat sich schon seit einigen Tagen damit befasst, aber es sieht nicht sehr vielversprechend aus, und ich denke, wir neigen jetzt zu einer Form von Korruption. Unsere Anwendung und alles andere scheint immer noch in der Lage zu sein, problemlos darauf zuzugreifen. Es wird nur gesetzt, dass dieses eine kleine Flag nicht funktioniert. Sehr seltsames Problem.
Die einzige Referenz, die ich online gefunden habe und die genau das gleiche Problem zeigt, stammt aus einem Beitrag des Technet-Forums auf Portugiesisch ( übersetzter Link ), der jedoch nie behoben wurde.
Zu diesem Zeitpunkt kann ich nicht länger warten und möchte diese Daten nur in einer neuen Datenbank neu erstellen. Ich nehme an, ich könnte das Ganze ausschreiben, aber diese Datenbank hat bereits etwa 20 GB, das wäre also ein böses Skript.
Hat jemand einen Vorschlag, wie eine neue Datenbank basierend auf einer anderen Datenbank neu erstellt werden kann - ohne die standardmäßige Sicherung / Wiederherstellung? Ist das Schreiben von Skripten der richtige Weg?
quelle
Antworten:
Verwenden Sie SSMS, um Skripts für die gesamte Datenbank-DDL zu generieren.
Verwenden Sie das Skript, um eine neue, leere Datenbank zu erstellen.
Verwenden Sie
BCP
diese Option, um die Daten aus allen Tabellen zu exportieren. Verwenden SieBCP
diese Option, um diese Daten in die neue Datenbank zu importieren.BACKUP , dass Sie die Original - Datenbank , bevor
DROPing
es (wenn Sie inTatAbsichtes überhaupt fallen zu lassen). Stellen Sie sicher, dass Sie das Backup wiederherstellen.quelle
Um die Skriptaufgabe erheblich zu vereinfachen, können Sie auch Tools von Drittanbietern verwenden. MSVisualStudio verfügt sowohl über ein Schema- als auch über ein Datenvergleichstoolset. Ich persönlich bevorzuge das SQLCompare-Tool von RedGate.
Ich verwende diese Art von Tools auch ständig, um DEV-> QA-> PROD-Bereitstellungen zu vereinfachen. Sobald das Schema eingerichtet ist, führen Sie einen einfachen "Datenimport-Assistenten" aus, um die Daten nach Bedarf zu kopieren.
Die positive Seite der Verwendung dieser Tools besteht darin, dass sie intelligenter sind, wenn Sie die Skripte erstellen, Elemente in die richtige Erstellungsreihenfolge bringen, Sie vor möglichen Fehlern warnen, nur Elemente erstellen, die Sie erstellen / aktualisieren müssen, und Serverelemente einschließen, die Sie möglicherweise vergessen, wann Verwenden Sie nur das DBscripting-Tool, z. B. Anmeldungen oder Verbindungsserver oder Sicherheit.
quelle
Es gibt eine andere Möglichkeit, eine gesamte MS SQL-Datenbank neu zu erstellen.
Schritt 1: Verwenden Sie ein Skript, um Daten aller Tabellen von der alten in die neue Datenbank zu kopieren.
Schritt 2: Wenden Sie alle Arten von Einschränkungen auf Tabellen der neuen Datenbank an.
1. Primärschlüssel
2. Fremdschlüssel
3. Standardbeschränkungen
4. Berechnete Spalten
5. Identitäten
6. Indizes
Hinweis: Sie finden diese Skripts zur Einschränkungssynchronisierung auf Connectsql.com ( http://www.connectsql.com/2013/11/sql-server-database-sychronization_29.html?utm_source=BP_recent ).
Schritt 3: Generieren Sie ein Skript für Objekte über SSMS und führen Sie es in der neuen Datenbank aus.
1. Generieren Sie ein Funktionsskript über SSMSS und führen Sie es in der neuen Datenbank aus.
2. Generieren Sie das Views-Skript über SSMSS und führen Sie es in der neuen Datenbank aus.
3. Generieren Sie ein Skript für gespeicherte Prozeduren über SSMSS und führen Sie es in der neuen Datenbank aus.
4. Generieren Sie ein Triggerskript über SSMSS und führen Sie es in der neuen Datenbank aus.
quelle