我们有 2 个数据库,比如 DB1 和 DB2。
DB1 包含访问 DB2 中数据的所有存储过程。
DB1 使用同义词来访问 DB2 中的表。
(在我们的情况下,使用同义词是一项要求)
这在使用 SQL Server 2005 Developer Edition 的所有情况下都可以正常工作。
但是在 Express Edition 中,当我们执行以下操作时会出现异常:
1 重新启动 SQL Server
2 在 DB1 中执行以下代码:
设置事务隔离级别快照
开始事务
声明@sQuery varchar(max)
设置@sQuery = 'Select * from synToSomeTableInDB2'
exec (@sQuery)
提交事务
这将导致以下错误:
数据库“...”中的快照隔离事务失败,因为在启动当前事务时未恢复数据库。数据库恢复后重试事务。
在不使用 EXEC 或在 Developer Edition 上运行时,相同的选择查询可以正常通过。
在步骤 1 中重新启动服务器很重要,因为一旦连接到 DB2,代码在 SQL Server Express Edition 上也可以正常运行。
有谁知道这是什么?我们需要能够使用 EXEC 进行一些动态查询。我们已经检查了 MSDN,搜索了 Google,......任何帮助都非常感谢。
--- 编辑:2009 年 3 月 10 日
正如下面 Ed Harper 所讨论的,我已经为此提交了一份错误报告。
请参阅https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=422150