Как вы заставляете 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;
}
}
Вызывается так из приложения ASP.Net MVC, запущенного в IIS ...:
public ActionResult Index()
{
server = SqlServerConnectionFactory.GetSmoServer();
database = SqlServerConnectionFactory.GetSmoDatabase(server);
var vm = new SettingsIndexViewmodel(database);
return View(vm);
}
При каждом обращении к этому методу индекса я подключаюсь - и снова не освобождается.
Итак, после 20 обращений к странице у меня 20 ожидающих команды соединений. В конечном итоге это заканчивается исключением, когда я не могу установить новые соединения, потому что пул соединений переполнен.
![sp_who](https://i.stack.imgur.com/NMYuF.png)
Что мне нужно, чтобы этого не случилось? Кажется, я не могу найти метод объекта SMO Server, такой как Dispose, close или аналогичный.