web-dev-qa-db-fra.com

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

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 table Dmy mais les clés et les contraintes ne se reflètent pas dans la table Dmy dans SQL Server 2008 R2.

SELECT * 
INTO Dmy 
FROM Dummy
8
Vinoth _S

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 comme> Créer vers> 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 under Tools > Options > SQL Server Object Explorer > Scripting

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).

14
Aaron Bertrand

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.

enter image description here

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

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

enter image description here

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 y a déjà un objet nommé' Address '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:

enter image description here

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. Ouvrir Tâches | Générer des scripts
  3. Dans l'onglet Choose Objects, sélectionnez la table à scripter

enter image description here

4.Dans l'onglet Définir l'option de script s, 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.

enter image description here

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

5
Milena Petrovic

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 l'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
  • Allez-y à l'avance>
  • 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
1
dsingh