在这里忍受我,好的!
我们经常使用 SMO 来做各种各样的事情,包括检查数据库中是否存在特定的存储过程。因此,我们的数据访问类中有一个名为 的方法HasProc
,它返回一个布尔值。它位于应用程序的一部分中,一年多(可能是两年)没有更改。
最近,返回一个值需要很长时间(10 秒),我一直在试图找出原因。
事实证明,即使定义将保存 SMO 服务器的变量(不实例化它,只是定义它)也会导致到达函数的代码延迟 10 秒。
这是代码的相关位True
,为了清楚起见,现在才返回:
Public Function HasProc(ByVal storedProcName As String) As Boolean
Dim s As Microsoft.SqlServer.Management.Smo.Server
Return True
End Function
在 Visual Studio 12 中,使用 F11 单步执行代码,10 秒延迟发生在代码高亮到达Public Function etc..
.
如果我注释掉该Dim
声明,它会立即运行。
更奇怪的是,如果我禁用我的以太网适配器,延迟就不会发生。
这可以在三台计算机上重现。我正在使用我们最近升级到的 VS2012 和 SMO v11,以支持 SQL Server 2012。
另一件事是即使Return True
语句在语句之前而不是Dim
语句之后也会发生延迟。
有任何想法吗?