Cela va sonner comme une requête folle. Les bases de données dont je fais état n'ont pas de clés étrangères et chaque clé primaire est une colonne identity_column. Cela rend difficile l'utilisation d'outils tels que TOAD car l'Intellisense fonctionne en lisant les relations PK et FK. Quelqu'un at-il un script pour supprimer les clés primaires de chaque table dans la base de données afin que je puisse les remplacer par PK "correct" et ajouter FK pour aider à signaler?Suppression de toutes les clés primaires
Pour éviter l'avalanche de "Ne le fais pas !!!" réponses, laissez-moi préciser que je ne vais pas le faire à ma base de données de production, mais copie sur un autre serveur.
Tout conseil serait apprécié.
------- EDIT Ceci est mis à jour avec des informations correctes. ----------------
Merci les gars, mais j'ai réalisé que j'ai fait une erreur. Presque chaque table a une "identity_column" avec la propriété de l'identité. Cette identité est un index clusterisé. Cependant, il n'est pas désigné comme une clé primaire.
Premièrement, quelle est la différence entre une clé primaire et un index clusterisé? Deuxièmement, comment puis-je créer un script sur tous les index clusterisés? Est-ce que cela fonctionnerait?
SELECT
'ALTER TABLE ' + OBJECT_NAME(OBJECT_ID) + ' DROP CONSTRAINT ' + name
FROM sys.indexes WHERE type_desc = 'CLUSTERED'
Merci de patienter
Pourquoi voudriez-vous supprimer des index clusterisés? Cela causerait une réécriture totale de chaque rangée! – TFD
Mon problème est le suivant. Ma base de données n'a pas de clés primaires, seulement des index clusterisés. J'écris un script pour prendre une copie de rapport de la base de données et y mettre des relations PK et FK appropriées pour faciliter la création de rapports par TOAD et SSRS. Étant donné que cela se produirait pendant les temps d'arrêt, et je vais l'effectuer sur un petit sous-ensemble des tableaux, je ne pense pas que la pénalité liée à la performance soit importante. – DavidStein