2010-11-19 67 views
4

我有数据库下有多个模式和对象。我想将这些对象合并到一个模式中。SQL Server多模式对象问题

我试图

ALTER SCHEMA dbo TRANSFER <custom_schema>.<table_name> 

我得到一个 “对象已存在的消息”。但是,我无法在管理工作室中看到它并且

SELECT * from dbo.<table_name> 

返回“对象不存在”错误。

看起来像一些系统表条目是失控。我查看了sysobjects,它只有一个入口。欢迎任何关于如何解决此问题的建议。

注:我可以创建一个同义词

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

工作正常

+0

您是否在尝试传输之前创建同义词? – 2010-11-19 16:42:44

+0

不,我发现我无法做ALTER SCHEMA ... TRANSFER – shikarishambu 2010-11-22 20:42:50

回答

8

根据this MSDN page您的问题可能是由重复的主键名引起的。即您的table_name的主键名与dbo中某个其他表中已定义的主键名冲突。

要解决此问题,重命名为您 要移动的表 主键。在 目标架构中,使用不会出现 的名称作为主键。

+0

我今天遇到这个问题,改了PK名,改变了模式,然后把PK名改回原来的名字,完美地工作! – jlg 2012-08-22 19:14:19

+0

同上。谢谢! – paulio 2013-02-13 17:21:21