我正在使用Microsoft.SqlServer.Management.Smo
来读取Web API 2.0应用程序中的数据库模式,并验证来自客户端的异步AJAX请求。
我经常遇到异常
已经有一个与此命令关联的打开DataReader,必须先关闭
当我访问模式以执行表,视图,存储过程和表函数的验证,最后获取连接字符串时,创建一个单独的SqlConnection
和命令来执行调用者的查询。 / p>
似乎数据库对象是按需加载的,数据阅读器处于打开状态,我的新SqlConnection
正在获得未正确关闭的池化连接。
是否有其他人遇到此问题,如果有,您是如何解决此问题的?
答案 0 :(得分:0)
当我针对一个共享的Smo.Server对象运行多个线程时,我也遇到了这个问题。
我通过为访问Smo中数据的每个线程创建Smo.Server对象的新实例解决了该问题。
请注意,如果连续实例化新的Smo.Server对象,这可能会对性能产生影响。在这种情况下,共享Smo.Server对象并谨慎使用lock objects来防止同时访问可能是有益的。