Gewusst wie: Programmgesteuertes kopieren einer Tabelle in SQL Server ohne die Daten?
Brauche ich zum kopieren einer Tabelle, die ich schon hab ich in einer SQL server-Datenbank, aber ich brauche nicht die Daten in der Quell-Tabelle. Die Beispiele, die ich gefunden, bei denen nur das kopieren der Daten.
Hier sind die details:
- Kopieren Sie die Tabelle nur Struktur, nicht die Daten.
- Quell-und Ziel-Tabellen in der gleichen Datenbank.
- Zieltabelle noch nicht vorhanden ist.
- Müssen dies programmatisch tun
- Es wäre schön, wenn alle zugehörigen Eigenschaften der Tabelle/Spalten mit kopiert.
- Welche Sprache/Plattform? C#?
- C# und ASP.NET aber das spielt eigentlich keine Rolle, zu viel. Ich bin mehr auf der Suche für die SQL, die ich brauchen würde, um zu laufen.
- Ich bin mir nicht ganz folgenden. Die SQL, die Sie würde ausführen müssen, ist die CREATE TABLE-Skript mit den Namen der Tabelle geändert, wie bereits in den Antworten. Sie müssen wissen, wie Sie programmgesteuert generieren Sie das Skript aus SQL Server (Sie ändert den Namen der Tabelle, sobald Sie diese nicht zu hart), für die die Sprache relevant ist. Ich weiß nicht, die Antwort auf diese, und ich bin interessiert zu sehen, wie dies getan werden kann.
- Gut, beispielsweise, gibt es einen Befehl für "TABELLE ERSTELLEN". Ich war versucht, herauszufinden, ob es einen ähnlichen Befehl für "TABELLE KOPIEREN", oder zumindest ein Weg, dies zu erreichen. Wie es aussieht ist diese Methode nicht vorhanden ist, und die es nicht getan werden kann mit plain-SQL, obwohl scripting-SQL funktionieren würde. Ich denke, marc_s' Antwort wäre sehr angebracht, da es die einfachste/sicherste Methode für das kopieren von die meisten Teile einer Tabelle. Sorry für die Verwirrung!
Du musst angemeldet sein, um einen Kommentar abzugeben.
select * into new_table von old_table, wo 1=0
Ausführen der obige Befehl programmgesteuert.
INTO
auf diese Weise. Idealerweise Referenzen würde den vorbei kommen auch, aber dies ist eine gute erste option.SELECT TOP (0) INTO newTable FROM oldTable;
Aber das ist so ziemlich das gleiche.Skript aus der Tabelle, ändern Sie den Tabellennamen in das Skript, das Skript auszuführen.
Ich Wette mit SMO können Sie dies tun, kein problem:
Schnell fand ich ein paar interessante Artikel, die zeigen, dass zumindest ein Teil der Lösung:
Also grundsätzlich wäre es einkochen, so etwas wie dieses:
Natürlich gibt es weitere Eigenschaften, auf die "Spalte" das könnte Sie kopieren wollen, und Sie möchten vielleicht auch zu kopieren, Indizes, Einschränkungen usw.. - zusätzliche Arbeit.
Bin ich überfragt, dass es nicht eine einfachere Möglichkeit zum duplizieren einer "Spalte" Objekt", um eine neue zu (so etwas wie ein .Clone () - Methode) zur Erleichterung dieser - vielleicht ist es nicht eine top-Priorität Szenario, ich weiß nicht....
Hoffe, das hilft!
Marc
Im SQL Management Studio mit der rechten Maustaste auf den Namen der Tabelle und das Skript für Tabelle als | ERSTELLEN ... | Neues Abfrage-editor-Fenster. Geben Sie ein Skript, das Sie ausführen können, unter eine beliebige Datenbank.
Wenn Sie .NET, können Sie mithilfe des Server-Management-Objekte:
Würden Sie brauchen, um zu ersetzen Sie den Namen der Tabelle und der zugehörigen Objekte (z.B. FK_OldTableName_xxx mit FK_NewTableName_xxx) in das generierte Skript:
Und dann ausführen:
Beachten Sie, dass dies ziemlich naiv code: es funktioniert nur, wenn die Namen Ihrer Einschränkungen und Tasten Folgen dem format: FK_OldTableName_xxx /CK_OldTableName_xxx .. wenn Sie andere Namen haben, müssten Sie Rindfleisch bis die Zeichenfolge-Ersatz-code, wohl mit Regexes zu suchen, die für T-SQL-Objekterstellung Muster (z.B. CREATE INDEX, FOREIGN KEY .. etc).
Müssen Sie tun dies automatisch (ohne manuellen Eingriff)?
Andernfalls können Sie immer verwenden Sie SQL Server Management Studio generieren, ERSTELLEN von Skripts für die Tabellen, die Sie kopieren möchten, und führen Sie es auf der Ziel-Datenbank.
Rechten Maustaste auf das Objekt, das Sie möchten, wählen Sie Skript generieren, und wählen Sie Ihr script zu generieren.