存储过程中的同义词 - 错误无效的对象名称

时间:2014-05-30 18:16:15

标签: sql-server tsql stored-procedures synonym invalid-object-name

我在存储过程(SP)中使用同义词在链接数据库上运行select。数据库名称是根据SP的输入计算的。 SP在大多数情况下工作正常,但如果通过程序多次调用相同的SP,我会收到错误 -

  

无效的对象名称Synonym_Name

重新启动应用程序修复了错误 - 但这是通过服务调用触发的,这是不可接受的。

在启动SP时,我已经注意检查对象是否存在,如果是,则删除它,然后创建它 -

IF EXISTS(select * from sys.synonyms s where name = 'Synonym_Name' )
BEGIN
    DROP SYNONYM [dbo].[Synonym_Name]
END

EXEC ('CREATE SYNONYM [dbo].[Synonym_Name]  FOR ' +  @DB  + '.[dbo].[TableName]')

如何避免此无效对象名称错误?

根据我在所有论坛上阅读的内容,没有特定的ID,任何人都可以删除同义词。有没有其他方法来处理这种情况,因为表名后来被引用到多个位置 - 从表中选择插入,变量赋值等。

我不确定这个问题是否已经涵盖 - 我确实搜索过并且无法找到任何问题。

0 个答案:

没有答案