Wie erstelle ich eine neue Tabelle mit denselben Einschränkungen und Indizes?

8

Ich erstelle eine neue Tabelle mit Primärschlüsseleinschränkungen und einem nicht gruppierten Index in dieser Tabelle.

Ich weiß, ich möchte eine weitere Tabelle mit derselben Struktur und denselben Werten sowie Schlüsseln und Indizes erstellen.

create table Dummy (id integer ,name varchar(20),salary integer
Constraint PK_Con_id primary key(id))

insert into Dummy values(11,'AAA',1000);
insert into Dummy values(12,'BBB',2000);
insert into Dummy values(13,'CCC',3000);
insert into Dummy values(14,'DDD',4000);

select * from Dummy;

create nonclustered index IX_Name 
on Dummy(Name)

Jetzt erstelle ich eine DmyTabelle, aber Schlüssel und Einschränkungen Dmywerden in SQL Server 2008 R2 nicht in der Tabelle angezeigt.

SELECT * 
INTO Dmy 
FROM Dummy
Vinoth _S
quelle

Antworten:

14

SELECT INTO wird dies nicht für Sie tun, da es zwar die Spaltennamen und Datentypen beibehält, aber nicht viele andere Aspekte der Tabelle wie Einschränkungen, Indizes usw. beibehält. Das einzige, was es wirklich ist Außerhalb der Spalten bleibt die IDENTITY-Eigenschaft, wenn eine der Spalten sie hat.

Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die ursprüngliche Tabelle und wählen Sie Skripttabelle als> Erstellen an> Neues Abfragefenster. Sie sollten über ein CREATE TABLE-Skript für die ursprüngliche Tabelle verfügen, einschließlich aller Einschränkungen usw. Beachten Sie, dass Sie möglicherweise einige dieser Einstellungen (Extras> Optionen> SQL Server-Objekt-Explorer> Skripterstellung) auf true setzen müssen, um alle zu erhalten die gewünschten Tabellenattribute, daher kann dies einige Versuche und Irrtümer erfordern:

Optionen unter Extras> Optionen> SQL Server-Objekt-Explorer> Skripterstellung

Ändern Sie das Skript jetzt einfach von Hand, um den neuen Tabellennamen anzugeben, und stellen Sie sicher, dass alle Einschränkungs- und Indexnamen so angepasst werden, dass sie eindeutig sind (wie viel Arbeit dies bedeutet, hängt davon ab, ob Sie eine festgelegte Namenskonvention haben oder nicht wenn Sie nur nehmen, was SQL Server auf Sie wirft).

Aaron Bertrand
quelle
5

Alles kann in SQL Server Management Studio durchgeführt werden.

Die Option Skripttabelle als generiert Erstellungscode für Primär- und Fremdschlüssel und Einschränkungen. Es wird kein Skript für die Indizes erstellt, daher müssen Sie dies in einem anderen Schritt tun. Typ, ich schlage vor, alle Objekttypknoten im SSMS-Objekt-Explorer zu erweitern.

Geben Sie hier die Bildbeschreibung ein

So erstellen Sie ein Skript für die Tabellenstruktur, Primär- und Fremdschlüssel sowie Einschränkungen

  1. Führen Sie SQL Server Management Studio aus
  2. Erweitern Sie im Objekt-Explorer Datenbanken
  3. erweitern Sie Tabellen
  4. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Skripttabelle als | ERSTELLEN ZU | Neues Abfrageeditorfenster

Geben Sie hier die Bildbeschreibung ein

Das generierte Skript wird auf der Registerkarte Abfrageeditor angezeigt. Stellen Sie sicher, dass Sie die Namen der Tabelle, des Primär- und Fremdschlüssels sowie der Einschränkungen ändern, da diese Namen eindeutig sein müssen.

Andernfalls erhalten Sie eine Fehlermeldung mit der Meldung "In der Datenbank befindet sich bereits ein Objekt mit dem Namen" Adresse "." , oder 'Der Vorgang ist fehlgeschlagen, da in der Tabelle' Person.Address 'bereits ein Index oder eine Statistik mit dem Namen' AK_Address_rowguid 'vorhanden ist.'

So erstellen Sie ein Skript für einen Index

Führen Sie die folgenden Schritte aus:

Geben Sie hier die Bildbeschreibung ein

So erstellen Sie ein INSERT INTO-Skript für Daten

  1. Klicken Sie mit der rechten Maustaste auf die Datenbank (nicht auf die Tabelle!)
  2. Aufgaben öffnen | Skripte generieren
  3. Auf der Objekte Wählen Sie Registerkarte, wählen Sie die Tabelle Skript

Geben Sie hier die Bildbeschreibung ein

4.Klicken Sie auf der Registerkarte Set Scripting Option s auf Advanced, und stellen Sie sicher, dass die Option Datentypen für das Skript auf Nur Daten festgelegt ist

Hinweis: Wenn Sie Schema & Daten auswählen, ist das generierte Schemaskript mit dem Skript identisch, das in der ersten Methode in dieser Antwort generiert wurde.

Geben Sie hier die Bildbeschreibung ein

5. Aktualisieren Sie den Tabellennamen auf den Namen der neuen Tabelle, bevor Sie das Skript ausführen

Milena Petrovic
quelle
1

FOR Schema - Tabelle, Einschränkungen und Schlüssel

  • Wählen Sie im Objekt-Explorer TABELLE (z. B. ABC)> Rechtsklick darauf
  • Wählen Sie dann Skripttabelle als> ERSTELLEN AUF> Neues Abfrageeditorfenster
  • Das Skript zum Erstellen einer Tabelle für ABC wird geöffnet
  • Ändern Sie den Tabellennamen
  • PK ändern
  • Ändern Sie den Namen der Einschränkung
  • Ändern Sie den Indexnamen
  • Führen Sie nun dieses Skript aus. Die Tabelle wird mit derselben Struktur, aber mit unterschiedlichem Namen erstellt ...

FOR Index

  • Wählen Sie Tabelle ABC> Erweitern
  • Wählen Sie INDEX> Klicken Sie mit der rechten Maustaste auf den NON CLUSTERED INDEX
  • Skriptindex AS> Erstellen an> Neues Abfrageeditorfenster
  • Ändern Sie den Indexnamen
  • In der neu erstellten Tabelle ausführen, um darauf INDEX zu erstellen .....

FÜR Daten

  • Wählen Sie Datenbankname
  • Klicken Sie mit der rechten Maustaste darauf
  • Wählen Sie Aufgabe> Skripte generieren ...
  • Ein neues Fenster wird geöffnet
  • Wählen Sie Weiter
  • Wählen Sie nun Bestimmte Datenbankobjekte und Tabelle ABC auswählen
  • Wählen Sie Weiter
  • Gehen Sie im Voraus>
  • Geben Sie Daten in das Skript NUR als DATEN ein
  • Dann OK> Weiter> Weiter> Fertig stellen ....
  • Führen Sie nun dieses Skript in einer neu erstellten Tabelle aus
dsingh
quelle