0

我在存储过程 (SP) 中使用同义词在链接数据库上运行选择。数据库名称是根据 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,任何人都可以删除同义词。是否有任何其他方式来处理这种情况,因为表名稍后在多个位置被引用 - 用于从表中选择插入、变量赋值等。

我不确定这个问题是否已经涵盖 - 我进行了搜索但找不到任何问题。

4

0 回答 0