使用SQL Server中的同义词创建新表

时间:2014-03-03 17:06:46

标签: sql sql-server-2008 synonym

我为此表ParaPITD.dbo.BM_00_PolicyMaster创建了一个指向ParaPITDYYYYMM.dbo.BM_00_PolicyMaster

的同义词

还没有桌子 - 所以它充当占位符。

我有一个创建临时表#BM_00_PolicyMaster的存储过程,现在我想插入或选择同义词所指向的占位符并在ParaPITDYYYYMM.dbo.BM_00_PolicyMaster中创建表

如果我这样做:

select * 
into ParaPITD.dbo.BM_00_PolicyMaster
from #BM_00_PolicyMaster

它在ParaPITD.dbo.BM_00_PolicyMaster中创建表并忽略同义词

如果我这样做:

INSERT INTO ParaPITD.dbo.BM_00_PolicyMaster
   SELECT * 
   FROM #BM_00_PolicyMaster 

它给了我一个无效的对象错误,就像表格在插入之前必须存在一样。

感谢任何帮助 - 谢谢

1 个答案:

答案 0 :(得分:0)

来自doc(http://technet.microsoft.com/en-us/library/ms187552.aspx):

  

您无法在DDL语句中引用同义词

任何创建表的语句(包括SELECT INTO)都算作DDL语句。 (见这里:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/1085a84c-faac-4d26-8f35-c64d8b901034/insert-into-is-sentence-dml-or-ddl