Come creare una nuova tabella con gli stessi vincoli e indici?


8

Sto creando una nuova tabella con vincoli di chiave primaria e un indice non cluster in quella tabella.

Lo so, vorrei creare un'altra tabella con la stessa struttura e valori, nonché chiavi e indici.

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)

Ora sto creando una Dmytabella ma chiavi e vincoli non si riflettono nella Dmytabella in SQL Server 2008 R2.

SELECT * 
INTO Dmy 
FROM Dummy

Risposte:


14

SELECT INTO non lo farà per te, perché mentre mantiene i nomi delle colonne e i tipi di dati, non mantiene molti altri aspetti della tabella, come vincoli, indici, ecc. L'unica cosa mantiene al di fuori delle colonne è la proprietà IDENTITY se una delle colonne lo possiede.

Fare clic con il tasto destro del mouse sulla tabella originale in Esplora oggetti e selezionare Tabella script come> Crea in> Nuova finestra query. Dovresti avere uno script CREATE TABLE per la tabella originale, inclusi tutti i vincoli, ecc. Nota che potresti dover impostare alcune di queste impostazioni (Strumenti> Opzioni> Esplora oggetti di SQL Server> Scripting) su true per ottenere tutto gli attributi della tabella desiderati, quindi potrebbero essere necessari alcuni tentativi ed errori:

opzioni in Strumenti> Opzioni> Esplora oggetti di SQL Server> Scripting

Ora, modifica a mano quello script per specificare il nuovo nome della tabella e assicurati di regolare tutti i vincoli e i nomi degli indici in modo che siano univoci (quanto lavoro sarà dipenderà dal fatto che tu abbia una convenzione di denominazione stabilita o se prendi semplicemente ciò che SQL Server ti lancerà).


5

Tutto può essere fatto in SQL Server Management Studio.

L' opzione Tabella script come genera codice di creazione per chiavi e vincoli primari ed esterni. Non crea script per gli indici, quindi devi farlo in un altro passaggio. tipo, suggerisco di espandere tutti i nodi del tipo di oggetto in Esplora oggetti SSMS.

inserisci qui la descrizione dell'immagine

Per creare uno script per la struttura della tabella, chiavi primarie ed esterne e vincoli

  1. Esegui SQL Server Management Studio
  2. In Esplora oggetti , espandere Database
  3. Espandi tabelle
  4. Fare clic con il tasto destro del mouse sulla tabella e selezionare Tabella script come | CREA A | Nuova finestra dell'editor di query

inserisci qui la descrizione dell'immagine

Lo script generato verrà visualizzato nella scheda Editor delle query. Assicurati di cambiare la tabella, la chiave primaria ed esterna e i nomi dei vincoli, poiché questi nomi devono essere univoci.

Altrimenti, riceverai un messaggio di errore che dice qualcosa come "C'è già un oggetto chiamato" Indirizzo "nel database." o "L'operazione non è riuscita perché nella tabella" Person.Address "esiste già un indice o statistiche con nome" AK_Address_rowguid "."

Per creare uno script per un indice

Utilizzare i passaggi simili a quelli sopra:

inserisci qui la descrizione dell'immagine

Per creare uno script INSERT INTO per i dati

  1. Fare clic con il tasto destro del mouse sul database (non sulla tabella!)
  2. Attività aperte | Genera script
  3. Nella scheda Scegli oggetti , selezionare la tabella per lo script

inserisci qui la descrizione dell'immagine

4. Nella scheda Imposta opzioni di script , fare clic su Avanzate e assicurarsi che l' opzione Tipi di dati da script sia impostata su Solo dati

Nota: se si seleziona Schema e dati, lo script dello schema generato sarà identico allo script generato nel primo metodo in questa risposta.

inserisci qui la descrizione dell'immagine

5. Aggiornare il nome della tabella con il nome della nuova tabella prima di eseguire lo script


1

Schema FOR : tabella, vincoli e chiavi

  • In Esplora oggetti, seleziona TABELLA (ad esempio ABC)> Fai clic destro su di esso
  • Quindi selezionare la tabella degli script come> CREA A> Nuova finestra dell'editor di query
  • Si aprirà la tabella Crea script per ABC
  • Cambia nome tabella
  • Cambia PK
  • Cambia il nome del vincolo
  • Cambia nome indice
  • Ora esegui questo script, la tabella verrà creata con la stessa struttura ma con un nome diverso ...

PER indice

  • Seleziona la tabella ABC> Espandi
  • Selezionare INDICE> Fare clic con il tasto destro del mouse sull'INDICE NON CLUSTER
  • Script Index AS> Crea TO> Nuova finestra dell'editor di query
  • Cambia il nome dell'indice
  • Eseguire sulla tabella appena creata per creare INDEX su di essa .....

FOR Data

  • Seleziona il nome del database
  • Fai clic destro su di esso
  • Seleziona Attività> Genera script ...
  • Si aprirà una nuova finestra
  • Seleziona Avanti
  • Ora seleziona Oggetti database specifici e Seleziona tabella ABC
  • Seleziona Avanti
  • Vai in anticipo>
  • Digitare i dati nello script come SOLO DATI
  • Quindi OK> Avanti> Avanti> Fine ....
  • Ora esegui questo script nella tabella appena creata
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.