Question

Je sais comment changer le schéma d'une table dans SQL Server 2005:

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

Mais comment puis-je vérifier et / ou modifier les procédures stockées qui utilisent l'ancien nom de schéma?

Désolé, je veux dire: Il existe des procédures stockées qui portent l'ancien nom de schéma de la table dans le sql de la procédure stockée ... Comment puis-je modifier toutes les procédures stockées qui ont le dbo.Table1 dans le corps de la procédure ...

Était-ce utile?

La solution

Obtenez une liste d'objets dépendants en cliquant avec le bouton droit de la souris sur la table avant de modifier le schéma, puis regardez ce qui dépend de la table, faites-en une liste et modifiez-les ensuite. Cependant, il y a toujours une possibilité que vous manquiez quelque chose car il est possible de casser les dépendances suivies par le serveur SQL.

Mais le meilleur moyen serait de scripter la base de données dans un fichier, puis de rechercher le nom de la table, de répertorier tous les sprocs pour lesquels elle doit être modifiée, puis de les ajouter au script. le schéma de la table.

Autres conseils

  • Utilisez Tâches > Générer des scripts dans SSMS pour fournir une série de scripts Create Proc.
  • Utilisez Rechercher & amp; Remplacez ( Alt - H ) pour remplacer "Créer" par "Modifier"
  • Utilisez F & amp; R pour remplacer "dbo.Table1" par "dbo.Table2"
  • Ensuite, exécutez ( F5 ) pour modifier tous les SP affectés.

Simple mais efficace.

DÉCLAREZ @SearchObject VARCHAR (100)

SET @SearchObject = 'nom_table_recherche' - remplacez 'nom_table_recherche' par le nom de la table que vous souhaitez rechercher

SELECT sc.name [Objet de recherche], so.name [Objet conteneur],
CASE so.xtype QUAND 'U' ALORS 'Table' QUAND 'P' ALORS 'Procédure stockée' QUAND 'F' ALORS 'Fonction définie par l'utilisateur' SINON «Autre» FIN comme [type d'objet de conteneur]

FROM sysobjects so

INNER JOIN syscolumns sc ON so.id = sc.id

WHERE sc.name LIKE '%' + @SearchObject + '%' AND so.xtype IN ('U', 'P', 'F') - U: table, P: procédure stockée, F: utilisateur fonctions définies (udf)

ORDER BY [objet conteneur] ASC

- Affichez les procédures stockées contenant le nom de la table demandé.

Sélectionner du texte à partir de syscomments Où un texte du type '% from' + @SearchObject + '%'

(Sélectionnez id dans sysobjects où type = 'P' et name = '')

- Affiche le contenu d'une procédure stockée spécifique (trouvée ci-dessus)

- Exécutez sp_helptext 'DeleteAssetByID'

Par exemple, j'ai créé une table Rapports. Par défaut, un schéma dbo lui sera attribué. Désormais, si je souhaite modifier le schéma de la table Reports, je vais tout d'abord créer un nouveau schéma nommé Reporting:

CREATE SCHEMA Reporting

alors je vais exécuter le script ci-dessous pour changer le schéma de la table Reports de dbo à Reporting:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

OU pour une meilleure compréhension:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top