在具有相同 table 名称的 SQL Server 2016 中创建同义词时出错

Error when creating Synonym in SQL Server 2016 with the same table name

我们为特定年份的数据库创建了一个同义词,即 DST2016。我想为 2017 年的数据库创建同义词,即 DST2017,以便我们所有的工作自动指向 2017 年。

当我运行命令 create synonym ABS for [DST2017].[dbo].[ABS] 我收到以下错误:

There is already an object named 'ABS' in the database.

知道如何解决这个问题吗?

我不确定你在哪里创建了旧的(同义词),但也许你可以做这样的事情来删除旧的:

select 'drop  synonym ' + name 
from sys.tables order by name 

然后使用此命令创建新的:

declare @db as varchar(50) = (select db_name())
select 'create synonym ' + name + ' for ' + @db + '.dbo.' + name 
from sys.tables order by name 

您还需要位于表所在的不同数据库中,否则您将收到上述错误。