SQL Server 2008同义词<name>引用无效对象</name>

时间:2014-08-21 11:41:07

标签: sql-server-2008 ssis synonym

我正在尝试从SSIS调用存储过程。

代码的一行是

select *
FROM dbo.syn_tab_myTable

我实际上可以看到此dbo.syn_tab_myTable位于我的Synonyms文件夹中。但是,我有以下错误:

  

错误:SQL Build中的0xC002F210 tab_Stats,执行SQL任务:正在执行   查询&#34; build.proc_build_stats?&#34;失败,出现以下错误:   &#34;同义词&#39; dbo.syn_tab_myTable&#39;是指无效的对象。&#34;。可能   失败原因:查询问题,&#34; ResultSet&#34;财产没有设定   正确,参数设置不正确,或连接未建立   正确。

然后我刚开始一个新的查询,我再次进行select操作,但我仍然得到了这个:

  

消息5313,等级16,状态1,行1同义词&#39; dbo.syn_tab_myTable&#39;   是指无效的对象。

同一个文件夹中还有其他同义词,当我输入名称时,其中一些同义词出现在下拉列表中,其中一些不是。

我不知道造成这个问题的原因。请帮忙!感谢。

3 个答案:

答案 0 :(得分:2)

同义词引用的对象发生了某些变化。运行这个: -

SELECT *  FROM sys.synonyms WHERE name = 'syn_tab_myTable'

并检查输出中的base_object_name列,然后检查正在引用的对象是否仍然存在。

答案 1 :(得分:0)

右键单击同义词,选择拖放并创建,然后仔细检查脚本。我的手指很胖,尽管它创建了同义词,但它所寻找的视图并不存在。我修复了脚本,重新运行,现在生活又好了。

答案 2 :(得分:0)

您的查询是正确的,请确保您已连接到正确的服务器和数据库。右键单击存在同义词的数据库,选择新查询,然后键入您的语法。您得到的对象无效,因为该对象也不存在于您所连接的服务器/数据库中。

另一个答案 SELECT * FROM sys.synonyms WHERE name = 'syn_tab_myTable 也是有效的。此外,您可以发出

SELECT *  FROM sys.synonyms

查看已连接数据库上的所有同义词以及它们指向的位置,这非常有用。