ASP - Использование хранимых процедур с помощью ADO
Использование хранимых процедур с помощью ADO
Хранимая процедура представляет собой откомпилированное заранее семейство инструкций SQL и необязательных инструкций управления порядком выполнения, хранимое под указанным именем и обрабатываемое как единое целое. Создание хранимых процедур со включенной группировкой соединений может явиться предметом отдельного рассмотрения. Например, создание временных хранимых процедур для подготовленных инструкций SQL является возможностью, настраиваемой из администратора источников данных ODBC. По умолчанию для драйверов SQL Server 2.65 и 3.5 используется значение "On", что означает создание и компиляцию временной хранимой процедуры при подготовке инструкций SQL. Когда подготовленная команда вызывается одним из методов ADO, выполняется временная хранимая процедура; такой подход экономит накладные расходы на разбор и компиляцию инструкции SQL. Правильное использование этой возможности позволяет увеличить быстродействие приложения. Если инструкция SQL будет выполняться более двух раз или будет выполняться более одного раза, но содержит параметры, инструкцию следует подготавливать. Помните: чтобы подготовить инструкцию, при первом запуске она должна быть скомпилирована; результаты подготовки инструкции теряются при отключении от базы данных.
Если разрешена группировка соединений, необходимо решить, когда следует удалять временную хранимую процедуру. При работе с драйвером SQL Server 2.65 хранимые процедуры будут освобождены при освобождении подключения. При работе с драйвером SQL Server 3.5 есть возможность удаления их или при освобождении подключения, или в подходящий момент в подключенном состоянии.
С временными хранимыми процедурами и группировкой подключений могут быть связаны проблемы с памятью. Если используются установки по умолчанию, существует риск входа за границы памяти в TempDB, где создаются и хранятся временные хранимые процедуры. Если разрешено группирование подключений, выполняется подключение к базе данных, но когда клиент завершает работу с ним и освобождает его, подключение возвращается в группу. Подключение не освобождается и хранимая процедура не удаляется из TempDB, даже если они не связаны с клиентом и никогда не будут вызваны.
Таким образом, при работе с драйверомSQL Server 2.65 можно посоветовать запретить создание временных хранимых процедур при подготовке, если разрешена группировка подключений. Для драйвера SQL Server 3.5 возможность создания временных хранимых процедур должна быть запрещена или установлена в значение "disconnect and as appropriate" при включенной группировке подключений. Установка этого параметра в значение "disconnect and as appropriate" свидетельствует о том, что ODBC-драйвер SQL Server прервет подключение, когда объект OLE DB Icommand, создавший временную хранимую процедуру, будет освобожден. Если программа клиента использует ADO, хранимая процедура будет освобождена при закрытии объектов ADODB.Recordset и ICommand.