Microsoft.SqlServer.Management.Smo抛出InvalidOperationExpcetion

时间:2018-06-06 22:04:28

标签: sql-server exception sqlconnection smo

我正在使用Microsoft.SqlServer.Management.Smo来读取Web API 2.0应用程序中的数据库模式,并验证来自客户端的异步AJAX请求。

我经常遇到异常

  

已经有一个与此命令关联的打开DataReader,必须先关闭

当我访问模式以执行表,视图,存储过程和表函数的验证,最后获取连接字符串时,创建一个单独的SqlConnection和命令来执行调用者的查询。 / p>

似乎数据库对象是按需加载的,数据阅读器处于打开状态,我的新SqlConnection正在获得未正确关闭的池化连接。

是否有其他人遇到此问题,如果有,您是如何解决此问题的?

1 个答案:

答案 0 :(得分:0)

当我针对一个共享的Smo.Server对象运行多个线程时,我也遇到了这个问题。

我通过为访问Smo中数据的每个线程创建Smo.Server对象的新实例解决了该问题。

请注意,如果连续实例化新的Smo.Server对象,这可能会对性能产生影响。在这种情况下,共享Smo.Server对象并谨慎使用lock objects来防止同时访问可能是有益的。