74 votes

Dans sql server 2005, comment puis-je changer le "schéma" d'une table sans perdre de données ?

J'ai une table qui a été placée dans le schéma "db_owner" et j'ai besoin qu'elle soit dans le schéma "dbo".

Y a-t-il un script ou une commande à exécuter pour effectuer le changement ?

84voto

Stephen Wrighton Points 15904
ALTER SCHEMA [NewSchema] TRANSFÉRER [OldSchema].[Table1]

82voto

Jason Punyon Points 21244

Dans SQL Server Management Studio :

  1. Cliquez avec le bouton droit sur la table et sélectionnez modifier (c'est maintenant appelé "Conception")

  2. Dans le panneau des propriétés, choisissez le bon schéma propriétaire.

13voto

Suresh Points 131

Utilisez simplement ceci

ALTER SCHEMA dbo TRANSFER db_owner.Tableau

12voto

Afficher tous les TABLE_SCHEMA avec cette requête :

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 

Vous pouvez utiliser cette requête pour changer tous les schémas pour toutes les tables en schéma de table dbo :

DECLARE cursore CURSOR FOR 

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA <> 'dbo' 

DECLARE @schema sysname, 
 @tab sysname, 
 @sql varchar(500) 

OPEN cursore     
FETCH NEXT FROM cursore INTO @schema, @tab 

WHILE @@FETCH_STATUS = 0     
BEGIN 
 SET @sql = 'ALTER SCHEMA dbo TRANSFER ' + @schema + '.' + @tab     
 PRINT @sql     
 FETCH NEXT FROM cursore INTO @schema, @tab     
END 

CLOSE cursore     
DEALLOCATE cursore

7voto

Jeremy Points 447

Réponse simple

sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'

vous n'avez pas besoin d'arrêter toutes les connexions à la base de données, cela peut être fait en vol.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X