begin process at 2010 03 16 19:42:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > SQL SERVER 2005 - CHANGER LE SCHEMA DES OBJETS DANS LES OBJETS APPELANT

SQL SERVER 2005 - CHANGER LE SCHEMA DES OBJETS DANS LES OBJETS APPELANT


 Information sur la source



 Description

Après avoir changé le schéma pour les objets (c'est-à-dire passer de MonAncienSchema.MaTable a MonNouveauSchema.MaTable), il faut appliquer ces changement dans les objets appelant (Procédures, Vues ou fonctions).

Voila donc un script qui effectue ce travail.

---------------------------------------- -------------------------------------------------- ----------------------
ATTENTION : FAITES UN BACKUP DE VOS BASE OU UN EXPORT EN SCRIPT DE TOUS LES OBJETS QUI SERONT MODIFIES
----------------------------------------- -------------------------------------------------- ---------------------

Source

  • USE [sccEnc]
  • GO
  • DECLARE @SQLCMD AS NVARCHAR(4000)
  • DECLARE @SQL AS NVARCHAR(max)
  • DECLARE @OldSchema AS VARCHAR(200)
  • DECLARE @NewSchema AS VARCHAR(200)
  • DECLARE @IDOBJECT AS INT
  • DECLARE @NUMBERLINE AS INT
  • SET @OldSchema = 'serveur'
  • SET @NewSchema = 'dbo'
  • DECLARE CURSORCHANGESCHEMA CURSOR FOR SELECT DISTINCT CMT.id FROM sys.syscomments CMT INNER JOIN sys.sysobjects OBJ ON CMT.id = OBJ.id
  • WHERE (OBJ.type = 'V' OR OBJ.type = 'P' OR OBJ.type='FN') AND NOT(OBJ.name LIKE 'dt_%') AND NOT(OBJ.name LIKE 'sp_%')
  • OPEN CURSORCHANGESCHEMA
  • FETCH NEXT FROM CURSORCHANGESCHEMA INTO @IDOBJECT
  • WHILE (@@fetch_status >= 0)
  • BEGIN
  • SET @SQL = ''
  • SELECT @NUMBERLINE = COUNT(CMT.id) FROM sys.syscomments CMT WHERE CMT.id = @IDOBJECT
  • PRINT CAST(@NUMBERLINE AS VARCHAR(5)) +' - '+ CAST(@IDOBJECT AS VARCHAR(10))
  • IF (@NUMBERLINE > 1)
  • BEGIN
  • DECLARE CURSORSP CURSOR FOR SELECT CMT.text FROM sys.syscomments CMT WHERE CMT.id = @IDOBJECT ORDER BY colid ASC
  • OPEN CURSORSP
  • FETCH NEXT FROM CURSORSP INTO @SQLCMD
  • WHILE (@@fetch_status >= 0)
  • BEGIN
  • SET @SQL = @SQL + CAST(@SQLCMD AS NVARCHAR(4000))
  • FETCH NEXT FROM CURSORSP INTO @SQLCMD
  • END
  • CLOSE CURSORSP
  • DEALLOCATE CURSORSP
  • END
  • ELSE
  • BEGIN
  • SELECT @SQL = CMT.text FROM sys.syscomments CMT WHERE CMT.id = @IDOBJECT
  • END
  • SET @SQL = RTRIM(LTRIM(REPLACE(REPLACE(REPLACE(@SQL, 'CREATE', 'ALTER'), @OldSchema +'.', @NewSchema +'.'), '['+ @OldSchema +'].', '['+ @NewSchema +'].')))
  • SET @SQL = '----------------------------------------------------------------'+ char(13) + '-- Modification effectuée le : '+ CONVERT(VARCHAR(100), getdate()) + char(13) + '----------------------------------------------------------------'+ char(10) + char(13) + @SQL
  • SET @SQL = @SQL + char(10) + char(13) +'----------------------------------------------------------------'
  • BEGIN TRY
  • EXECUTE(@SQL)
  • PRINT 'REQUETE REUSSIE : '+ char(13) + @SQL
  • END TRY
  • BEGIN CATCH
  • PRINT 'ERREUR ('+ ERROR_MESSAGE() +') DANS LA REQUETE : '+ char(13) + @SQL
  • END CATCH
  • FETCH NEXT FROM CURSORCHANGESCHEMA INTO @IDOBJECT
  • END
  • CLOSE CURSORCHANGESCHEMA
  • DEALLOCATE CURSORCHANGESCHEMA
USE [sccEnc]
GO

DECLARE @SQLCMD		AS NVARCHAR(4000)
DECLARE @SQL				AS NVARCHAR(max)
DECLARE @OldSchema		AS VARCHAR(200)
DECLARE @NewSchema		AS VARCHAR(200)
DECLARE @IDOBJECT AS INT
DECLARE @NUMBERLINE AS INT

SET @OldSchema = 'serveur'
SET @NewSchema = 'dbo'

DECLARE CURSORCHANGESCHEMA CURSOR FOR SELECT DISTINCT CMT.id FROM sys.syscomments CMT INNER JOIN sys.sysobjects OBJ ON CMT.id = OBJ.id
				WHERE (OBJ.type = 'V' OR OBJ.type = 'P' OR OBJ.type='FN') AND NOT(OBJ.name LIKE 'dt_%') AND NOT(OBJ.name LIKE 'sp_%')
OPEN CURSORCHANGESCHEMA
FETCH NEXT FROM CURSORCHANGESCHEMA INTO @IDOBJECT
WHILE (@@fetch_status >= 0) 
	BEGIN 

		SET @SQL = ''
		SELECT @NUMBERLINE = COUNT(CMT.id) FROM  sys.syscomments CMT WHERE CMT.id = @IDOBJECT
		PRINT CAST(@NUMBERLINE AS VARCHAR(5)) +' - '+ CAST(@IDOBJECT AS VARCHAR(10))

		IF (@NUMBERLINE > 1)
			BEGIN 
				DECLARE CURSORSP CURSOR FOR SELECT CMT.text FROM sys.syscomments CMT WHERE CMT.id = @IDOBJECT ORDER BY colid ASC
				OPEN CURSORSP
				FETCH NEXT FROM CURSORSP INTO @SQLCMD
				WHILE (@@fetch_status >= 0) 
					BEGIN 
						SET @SQL =  @SQL + CAST(@SQLCMD AS NVARCHAR(4000))
						FETCH NEXT FROM CURSORSP INTO @SQLCMD
					END
				CLOSE CURSORSP
				DEALLOCATE CURSORSP
			END
		ELSE
			BEGIN
				SELECT @SQL = CMT.text FROM sys.syscomments CMT WHERE CMT.id = @IDOBJECT
			END

		SET @SQL = RTRIM(LTRIM(REPLACE(REPLACE(REPLACE(@SQL, 'CREATE', 'ALTER'), @OldSchema +'.', @NewSchema +'.'), '['+ @OldSchema +'].', '['+ @NewSchema +'].')))

		SET @SQL = '----------------------------------------------------------------'+ char(13) + '-- Modification effectuée le : '+ CONVERT(VARCHAR(100), getdate()) + char(13) + '----------------------------------------------------------------'+ char(10) + char(13) + @SQL
		SET @SQL = @SQL + char(10) + char(13) +'----------------------------------------------------------------'
		BEGIN TRY
			EXECUTE(@SQL)
			PRINT 'REQUETE REUSSIE : '+ char(13) + @SQL
		END TRY
		BEGIN CATCH
			PRINT 'ERREUR ('+ ERROR_MESSAGE() +') DANS LA REQUETE : '+ char(13) + @SQL
		END CATCH

		FETCH NEXT FROM CURSORCHANGESCHEMA INTO @IDOBJECT
	END
CLOSE CURSORCHANGESCHEMA
DEALLOCATE CURSORCHANGESCHEMA


 Conclusion

Bon coding

Romelard Fabrice [MVP]


 Sources du même auteur

SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE
SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON...
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN...
SQL SERVER - OBTENIR LA POSITION DU PREMIER CHIFFRE D'UNE CH...
SQL SERVER - UPDATE D'UNE TABLE EN BOUCLE PAR LOT

 Sources de la même categorie

Source avec Zip Source avec une capture SQL SERVER - GENERATION AUTOMATIQUE D'UNE RETRO-DOCUMENTATIO... par FENETRES
[SQL SERVEUR] VÉRIFIER L'ESPACE OCCUPÉ DANS UNE BASE DE DONN... par Hyperion
TROUVER LES PROCHAINS ANNIVERSAIRES par zefo
REQUÊTE SQL POUR DÉTERMINER L'ESPACE OCCUPÉ DANS LES TABLESP... par sgoriaud
SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE par fabrice69

 Sources en rapport avec celle ci

SQL SERVER 2005 - CHANGER LE TYPE DE DONNEES DE TOUTES LES C... par fabrice69
SQL SERVER 2005 - CHANGER LE OWNER DE TOUS LES SCHEMAS par fabrice69
SQL SERVER 2005 : RÉCUPÉRER LE CONTENU D'UN SCHÉMA XSD par skweeky
SQL SERVER 2005 - CHANGER LE SCHEMA DES OBJETS D'UNE BASE DE... par fabrice69
SQL SERVER 2005 - CHANGER LE SCHEMA PAR DEFAUT DE TOUS LES U... par fabrice69

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Aide en SQLServer2000 [ par sergiodonini ] Bonjour les amis, Je developpe une application Web en Arabe dynamique avec ASP et SQLServer2000, mon probleme est le suivant:J'ecris dans les champs d Schema de la base de données [ par StephaneNet ] Bonjour a tous,Je debute actuellement avec sqlserver 2000 et je voudrais savoir si le fait de créer le schema de la table accelere l'execution des req Perte connexion MySQL si change date systeme [ par globule ] Bonjour, J'ai fait un programme en VB qui utilise des bases MySQL (en local ou sur un réseau) J'ai installé MySQL essential pour associer un champs xml a son bon schema xml [ par dedzep ] j'ai créé une base sql server 2005 contenant des articlesces articles contiennent des objets tres different (une voiture, un cheval, un ordi, un voyag create schema [ par LiLFinger ] moi c LiL,mon souci c la creation des schema et tou ce que ça implik,a l'aide de sql server 2005. Update d'un schema XSD dans SQL server 2005 [ par yalk1960 ] Bonjour,Je dois mettre à jour un schema XSD dans SQL server 2005 et j'aimerai avoir le query pour la réussir et si c'est possible savoir si au niveau Want to change to Mysql [ par jsmikwen ] Hi, Currently, we are using Mssql: we would like to change. Now, we would like to use DB2. Only problem is that most of our customer addresses and o


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,342 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales