Comment créer une nouvelle table avec les mêmes contraintes et index?

8

Je crée une nouvelle table avec des contraintes de clé primaire et un index non clusterisé dans cette table.

Je sais, je voudrais créer une autre table avec la même structure et les mêmes valeurs ainsi que les clés et les index.

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)

Maintenant, je crée une Dmytable mais les clés et les contraintes ne se reflètent pas dans la Dmytable dans SQL Server 2008 R2.

SELECT * 
INTO Dmy 
FROM Dummy
Vinoth _S
la source

Réponses:

14

SELECT INTO ne le fera pas pour vous, car tout en conservant les noms de colonne et les types de données, il ne conserve pas beaucoup d'autres aspects de la table, tels que les contraintes, les index, etc. La seule chose vraiment conserve en dehors des colonnes se trouve la propriété IDENTITY si l'une des colonnes l'a.

Cliquez avec le bouton droit sur la table d'origine dans l'Explorateur d'objets et sélectionnez Table de script en tant que> Créer dans> Nouvelle fenêtre de requête. Vous devez avoir un script CREATE TABLE pour la table d'origine, y compris toutes les contraintes, etc. Notez que vous devrez peut-être définir certains de ces paramètres (Outils> Options> Explorateur d'objets SQL Server> Script) sur true afin d'obtenir tous les les attributs de table que vous voulez, donc cela peut prendre quelques essais et erreurs:

options sous Outils> Options> Explorateur d'objets SQL Server> Script

Maintenant, modifiez simplement ce script à la main pour spécifier le nouveau nom de table et assurez-vous d'ajuster tous les noms de contrainte et d'index de manière à ce qu'ils soient uniques (la quantité de travail dépendra de la convention de dénomination établie ou si vous prenez juste ce que SQL Server va vous lancer).

Aaron Bertrand
la source
5

Tout peut être fait dans SQL Server Management Studio.

L' option Script Table As génère un code de création pour les clés et contraintes primaires et étrangères. Il ne crée pas de script pour les index, vous devez donc le faire dans une autre étape. , je suggère d'étendre tous les nœuds de type d'objet dans SSMS Object Explorer.

entrez la description de l'image ici

Pour créer un script pour la structure de la table, les clés primaires et étrangères et les contraintes

  1. Exécutez SQL Server Management Studio
  2. Dans l' Explorateur d'objets , développez Bases de données
  3. Développer les tableaux
  4. Cliquez avec le bouton droit sur la table et sélectionnez Table de script comme | CRÉER POUR | Nouvelle fenêtre de l'éditeur de requête

entrez la description de l'image ici

Le script généré sera affiché dans l'onglet Éditeur de requête. Assurez-vous de modifier les noms de table, de clé primaire et étrangère et de contrainte, car ces noms doivent être uniques.

Sinon, vous obtiendrez un message d'erreur indiquant quelque chose comme "Il existe déjà un objet nommé" Adresse "dans la base de données." ou 'L'opération a échoué car un index ou des statistiques portant le nom' AK_Address_rowguid 'existent déjà sur la table' Person.Address '.'

Pour créer un script pour un index

Suivez les étapes similaires à celles ci-dessus:

entrez la description de l'image ici

Pour créer un script INSERT INTO pour les données

  1. Faites un clic droit sur la base de données (pas sur la table!)
  2. Tâches ouvertes | Générer des scripts
  3. Dans l' onglet Choisir des objets , sélectionnez la table à scripter

entrez la description de l'image ici

4.Dans l' onglet Définir les options de script , cliquez sur Avancé et assurez-vous que l' option Types de données à script est définie sur Données uniquement

Remarque: Si vous sélectionnez Schéma et données, le script de schéma généré sera identique au script généré dans la première méthode de cette réponse.

entrez la description de l'image ici

5.Mettez à jour le nom de la table avec le nom de la nouvelle table avant d'exécuter le script

Milena Petrovic
la source
1

FOR Schema - Table, contraintes et clés

  • Dans l'Explorateur d'objets, sélectionnez TABLE (disons ABC)> Faites un clic droit dessus
  • Sélectionnez ensuite la table de script comme> CRÉER DANS> Nouvelle fenêtre de l'éditeur de requête
  • Le script de création de table pour ABC s'ouvrira
  • Changer le nom de la table
  • Changer PK
  • Modifier le nom de la contrainte
  • Changer le nom de l'index
  • Maintenant, exécutez ce script, Table sera créée avec la même structure mais avec un nom différent ...

POUR Index

  • Sélectionnez le tableau ABC> Développez-le
  • Sélectionnez INDEX> Clic droit sur l'INDICE NON CLUSTERED
  • Index de script AS> Créer vers> Nouvelle fenêtre de l'éditeur de requête
  • Changer le nom de l'index
  • Exécuter sur la table nouvellement créée pour créer INDEX dessus .....

POUR les données

  • Sélectionnez le nom de la base de données
  • Clic droit dessus
  • Sélectionnez Tâche> Générer des scripts ...
  • Une nouvelle fenêtre s'ouvrira
  • Sélectionnez Suivant
  • Sélectionnez maintenant des objets de base de données spécifiques et sélectionnez la table ABC
  • Sélectionnez Suivant
  • Aller de l'avant>
  • Faire taper les données à script en tant que données uniquement
  • Ensuite OK> Suivant> Suivant> Terminer ....
  • Maintenant, exécutez ce script dans la table nouvellement créée
dsingh
la source