begin process at 2010 03 20 17:56:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > SQL SERVER 2005 - CHANGER LE SCHEMA DES OBJETS D'UNE BASE DE DONNÉES

SQL SERVER 2005 - CHANGER LE SCHEMA DES OBJETS D'UNE BASE DE DONNÉES


 Information sur la source



 Description

Dans la version 2005 de SQL Server, la procédure précédement utilisée (sp_changeobjectowner) n'est pas supportée.
De ce fait, la source présentée ici :
- http://www.sqlfr.com/codes/SQL-SERVER-CHANGER-OWNE R-OBJETS-BASE-DONNEES_33438.aspx

Ne fonctionnera pas sous 2005.
La solution est d'utiliser ALTER SCHEMA .... (comme expliqué ici : http://www.orcsweb.com/articles/change_schema_name .aspx)

Voila donc une source qui va vous permettre de changer le schéma de tous les objets de la base avec le nouveau schéma.

-------------------------------------
A UTILISER AVEC BEAUCOUP DE PRECAUTIONS !!!!!
-------------------------------------

Source

  • USE [MaBase]
  • GO
  • DECLARE @OldSchema AS VARCHAR(50)
  • DECLARE @NewSchema AS VARCHAR(50)
  • DECLARE @DBName AS VARCHAR(50)
  • DECLARE @SQLCMD AS VARCHAR(2000)
  • SET @DBName = 'MaBase'
  • SET @OldSchema = 'AncienSchema'
  • SET @NewSchema = 'NouveauSchema'
  • --------------------------------------------------------------------------
  • DECLARE CURSORCHANGESCHEMA CURSOR FOR SELECT 'USE ['+ @DBName +'] ALTER SCHEMA ['+ @NewSchema +'] TRANSFER ['+ SCH.name +'].['+ OBJ.name +']' AS COMPLETE_NAME
  • FROM sys.objects OBJ INNER JOIN sys.schemas SCH ON SCH.schema_id = OBJ.schema_id WHERE (OBJ.type = 'P' OR OBJ.type = 'FN') AND SCH.name = 'serveur'
  • UNION ALL SELECT 'USE ['+ @DBName +'] ALTER SCHEMA ['+ @NewSchema +'] TRANSFER ['+ TAB.TABLE_SCHEMA +'].['+ TAB.TABLE_NAME +']' AS COMPLETE_NAME
  • FROM INFORMATION_SCHEMA.TABLES TAB WHERE TAB.TABLE_SCHEMA = @OldSchema
  • OPEN CURSORCHANGESCHEMA
  • FETCH NEXT FROM CURSORCHANGESCHEMA INTO @SQLCMD
  • WHILE (@@fetch_status >= 0)
  • BEGIN
  • PRINT 'MODIFICATION : '+ @SQLCMD
  • EXECUTE(@SQLCMD)
  • FETCH NEXT FROM CURSORCHANGESCHEMA INTO @SQLCMD
  • END
  • CLOSE CURSORCHANGESCHEMA
  • DEALLOCATE CURSORCHANGESCHEMA
  • --------------------------------------------------------------------------
USE [MaBase]
GO

DECLARE @OldSchema		AS VARCHAR(50)
DECLARE @NewSchema	AS VARCHAR(50)
DECLARE @DBName		AS VARCHAR(50)
DECLARE @SQLCMD		AS VARCHAR(2000)	


SET @DBName = 'MaBase'
SET @OldSchema = 'AncienSchema'
SET @NewSchema = 'NouveauSchema'


--------------------------------------------------------------------------
DECLARE CURSORCHANGESCHEMA CURSOR FOR SELECT 'USE ['+ @DBName +'] ALTER SCHEMA ['+ @NewSchema +']  TRANSFER ['+ SCH.name +'].['+ OBJ.name +']' AS COMPLETE_NAME 
		FROM sys.objects OBJ INNER JOIN sys.schemas SCH ON SCH.schema_id = OBJ.schema_id WHERE (OBJ.type = 'P' OR OBJ.type = 'FN') AND SCH.name = 'serveur' 
		UNION ALL SELECT 'USE ['+ @DBName +'] ALTER SCHEMA ['+ @NewSchema +']  TRANSFER ['+ TAB.TABLE_SCHEMA +'].['+ TAB.TABLE_NAME +']' AS COMPLETE_NAME 
		FROM INFORMATION_SCHEMA.TABLES TAB WHERE TAB.TABLE_SCHEMA = @OldSchema

OPEN CURSORCHANGESCHEMA
FETCH NEXT FROM CURSORCHANGESCHEMA INTO @SQLCMD
WHILE (@@fetch_status >= 0) 
	BEGIN 
		PRINT 'MODIFICATION : '+ @SQLCMD
		EXECUTE(@SQLCMD)
		FETCH NEXT FROM CURSORCHANGESCHEMA INTO @SQLCMD
	END
CLOSE CURSORCHANGESCHEMA
DEALLOCATE CURSORCHANGESCHEMA

--------------------------------------------------------------------------

 Conclusion

-------------------------------------
ATTENTION :
Ce code est à utiliser avec beaucoup de précautions. En effet, il faut bien modifier après coup les procédures stockées et vue se basant dur le Full Qualified Name, car le schéma des objets appelés a été modifié.
De plus, il ne faut pas utiliser ce code pour passer de DBO vers autre chose, car vous risquez de changer une partie des tables et vues systèmes.

-------------------------------------
B on 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

COMMENT EXPORTER DES DONNERS VERS EXCEL par ig3
COMMENT EXPORTER DES DONNERS VERS EXCEL par ig3
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

 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 - CHANGER LE SCHEMA DES OBJETS DANS LES OBJE... par fabrice69
SQL SERVER 2005 : RÉCUPÉRER LE CONTENU D'UN SCHÉMA XSD par skweeky
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

changer le nom d'un champ dans une base access [ par oluha ] BonjourJ'aimerai savoir s'il est possible de changer le nom d'un champ d'une base access avec une requête sql ?En cherchant sur le web j'ai trouvé ces 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 Probleme ALTER TABLE DANS BOUCLE WHILE AVEC NOM DE TABLE DIFFERENT A CHAQUE ITERATION [ par vds ] Bonjour, je travaille sous sql server et je dois écrire une procédure stockée qui: -Récupere et enregistre dans la table "TableTem 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 Blème script SQL [ par dr_waloo ] Bonjour, Je souhaite ajouter une colonne dans une table et seter sa valaure par défaut à FALSE. Voilà mon script : //------------------------------- renommer une colonne [ par SuperBouly ] bonjour, Je travaille avec VS2005 en VB.Net.Je désire renommer une colonne d'une table ACCESS. J'ai essayé la commande:"ALTER TABLE MaTab 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


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 : 0,593 sec (4)

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