2010-11-19 50 views
4

J'ai une base de données qui contient plusieurs schémas et objets. Je veux consolider les objets dans un schéma.Problèmes liés aux objets de schéma multiples SQL Server

J'ai essayé

ALTER SCHEMA dbo TRANSFER <custom_schema>.<table_name> 

je reçois un "objet existe déjà un message". Cependant, je ne peux pas le voir dans le studio de gestion et

SELECT * from dbo.<table_name> 

renvoie l'erreur "l'objet n'existe pas".

Apparemment, une entrée de la table système est détraquée. J'ai regardé sysobjects et il n'a qu'une seule entrée pour. Toutes les suggestions sur la façon de résoudre/résoudre ce problème sont les bienvenues.

Note: Je peux créer un synonyme

CREATE SYNONYM dbo.<table_name> FOR <custom_schema>.<table_name> 

fonctionne très bien

+0

Avez-vous créé le synonyme avant d'essayer de transférer? –

+0

Non. Je l'ai créé quand j'ai trouvé que je ne pouvais pas faire l'ALTER SCHEMA ... TRANSFERT – shikarishambu

Répondre

8

Selon this MSDN page votre question peut être causée par un nom de clé primaire en double . c'est-à-dire que le nom de clé primaire de votre table_name est en conflit avec un nom de clé primaire déjà défini dans une autre table de dbo.

Pour résoudre ce problème, renommez le clé primaire de la table que vous souhaitez déplacer . Utilisez un nom qui n'apparaît pas en tant que clé primaire dans le schéma de destination .

+0

J'ai rencontré ce problème aujourd'hui, changé le nom PK, modifié le schéma, puis changé le nom PK à son nom d'origine et il a parfaitement fonctionné! – jlg

+0

Identique à ci-dessus. Merci! – paulio