2017-10-24 2 views
0

Ich möchte Skript eine ganze SQL Server-Datenbank (Tabellen, Ansichten, Funktionen, Prozeduren, Benutzer).Wie erstellt man ein Skript, das ein vollständiges Datenbankschema in der richtigen Reihenfolge erstellt?

Ich habe versucht, die "Skripte generieren" -Funktion von Management Studio, aber es erstellt die Objekte in der falschen Reihenfolge, möchte ich, dass die Reihenfolge der Erstellung sinnvoll ist, zum Beispiel diese Reihenfolge der Erstellung sinnvoll für eine minimalistische 4 Tabellen nur Datenbank :

CREATE TABLE ORDER_LINES 
CREATE TABLE SUPPLIERS 
CREATE TABLE ORDERS 
CREATE TABLE USERS 

gibt es am wenigsten eine Möglichkeit, alle Datenbankobjekte in der Reihenfolge ihrer Abhängigkeit (auf den meisten abhängig von dem am wenigsten abhängig) zur Liste?

Ich versuche, eine Kopie einer Datenbank auf der gleichen Serverinstanz zu erstellen, ohne eine Sicherungsdatei zu verwenden.

Dank

+0

>>> eine Kopie einer Datenbank machen <<< So Sie nur Schema oder Schema wollen + Daten? – sepupic

+1

Sie können auch SSIS verwenden, um eine Datenbank (mit oder ohne Daten) oder SSDT (SQL Server-Projekt) zu kopieren, um das Schema zu exportieren und eine dacpac-Datei zu erstellen. Sie können die Datenebenen-Anwendungsdatei (dacpac) mithilfe von SSMS exportieren und sie mithilfe der Befehlszeile oder SSMS erneut bereitstellen. In SSDT können Sie einen Schemavergleich durchführen und eine Synchronisierung durchführen. Es gibt auch 3rd Party Tools. Diese Frage ist meiner Meinung nach ein bisschen weit für SO, könnte aber auf [dba.se] sinnvoll sein. – Pred

+0

@sepupic Ich möchte Schema und Daten, aber ich würde gerne die Abfragen für Daten schreiben, nachdem ein solides Skript für das Schema erstellt wurde. – LaBracca

Antwort

0

Sie sp_detach_db ‚Database‘ verwenden könnte, dann kopieren und die Dateien einfügen (Daten und Dateien MDF- und LDF-log) und es dann wieder an.

Die kopierten Dateien können dann verwendet werden, es unter einem anderen Namen wieder zu befestigen:

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), 
    (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') 
    FOR ATTACH; 

https://docs.microsoft.com/en-us/sql/relational-databases/databases/attach-a-database

+0

Ich möchte nicht Backup oder MDF LDF Filestream-Dateien verwenden. Ich suche nach einem Skript nur um tabellarische Daten zu replizieren. – LaBracca

Verwandte Themen