Kje*_*sen 5 asp.net smo sql-server-2008
你如何让SMO发布它的连接?
我有这个代码:
public static class SqlServerConnectionFactory
{
public static Server GetSmoServer()
{
using (var c = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString))
{
var s = new ServerConnection(c);
c.Close();
return new Server(s);
}
}
public static Database GetSmoDatabase(Server server)
{
var db = server.Databases[ConfigurationManager.AppSettings["Database"]];
db.AutoClose = true;
return db;
}
}
Run Code Online (Sandbox Code Playgroud)
从IIS中运行的ASP.Net MVC应用程序调用这样的:
public ActionResult Index()
{
server = SqlServerConnectionFactory.GetSmoServer();
database = SqlServerConnectionFactory.GetSmoDatabase(server);
var vm = new SettingsIndexViewmodel(database);
return View(vm);
}
Run Code Online (Sandbox Code Playgroud)
对于我对此索引方法进行的每次调用,都会启动连接 - 并且不会再次释放.
所以在20次调用页面后,我有20个等待命令的连接.当我无法建立新连接时,最终会出现异常,因为连接池已满.

我需要做些什么来避免这种情况发生?我似乎无法在SMO Server对象上找到像Dispose,close或类似的方法.
MSDN文章Disconnecting from an Instance of SQL Server可能会提供一些帮助.它指出:
当连接方法被调用时,连接不是自动释放.该断开方法必须显式调用释放到连接池的连接.此外,您可以请求非池化连接.您可以通过设置引用ServerConnection对象的ConnectionContext属性的NonPooledConnection属性来 执行此操作
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |