在存储过程中创建和使用同义词

时间:2013-01-18 20:13:06

标签: sql-server-2008 synonym

我正在创建一个将从一个数据库调用但需要访问其他数据库中的表的存储过程。我们为每个客户提供不同的数据库。我正在尝试根据参数动态创建同义词:

DECLARE @SQL varchar(150)
SET @SQL = 'CREATE SYNONYM synATClaimMatched FOR ' + ... <params> ...
EXEC @SQL

但是这会导致以下错误:

  

Msg 2812,Level 16,State 62,Line 3
无法找到存储过程''。“。

有人知道我为什么会收到此错误以及如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您的问题实际上与同义词或存储过程无关,只是动态SQL的语法无效。

使用:

EXEC sp_executesql @sql;

-- or

EXEC(@sql);

虽然我更喜欢第一个。原因如下: