存储过程不使用不同的USE子句进行编译

时间:2016-11-29 21:28:33

标签: sql sql-server

我在数据库1中有几个视图,我在数据库2中编写了一个存储过程。数据库2中的存储过程引用了数据库1中的几个表。

出于某种原因,我有:

USE Database1
GO

在测试时,它完全正常。但是当我使用

USE Database2
GO

存储过程没有编译。没有警告,只是继续旋转。第一种情况只需要大约1秒钟就可以运行。

任何人都知道可能是什么问题?当我尝试在database2中运行使用与database1相同的引用的类似存储过程时,它工作正常。此外,它们位于SQL Server中的同一服务器上。

抱歉,我无法发布代码。

1 个答案:

答案 0 :(得分:0)

SQL Server必须取消对象的锁定,以便创建查询计划。它要么无法连接到数据库,要么无法获取所需的锁。