Мне предоставлено веб-приложение, написанное в классическом ASP для переноса с Windows 2003 Server (SQL Server 2000 и IIS 6) на Windows 2008 Server (SQL Server 2008 и IIS 7.5) ,Классификация ASP global.asa Строка подключения SQL Server 2008
Сайт использует файл GLOBAL.ASA
для определения глобальных переменных, одним из которых является строка подключения (cnn
) для подключения к SQL Server.
Ниже (старый) Строка соединения с GLOBAL.ASA
:
Sub Application_OnStart
Dim cnnDem, cnnString
Set cnnDem = Server.CreateObject("ADODB.Connection")
cnnDem.CommandTimeout = 60
cnnDem.Mode = admodeshareexclusive
cnnString = "Provider=SQLOLEDB; Data Source=192.xxx.x.xx; User Id=xxxx; Password=xxxxx; default catalog=xxxxxxx;"
Application("conString")=cnnString
Call cnnDem.Open(cnnString)
Application("cnn") = cnnDem
End Sub
В .ASP
страницы затем использовать cnn
значение, как это:
strSQL = "Select * From tblUtilities order by companyname"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, Application("cnn"), adOpenKeyset
Однако я не мог получить строку подключения для подключения - Я отключил его до сообщения об ошибке «Ошибка для входа» (независимо от того, какой идентификатор входа я попробовал).
Я отредактировал файл GLOBAL.ASA
следующим образом, и он работает.
Sub Application_OnStart
Dim cnnDem, cnnString
Set cnnDem = Server.CreateObject("ADODB.Connection")
cnnDem.CommandTimeout = 60
cnnString = "Provider=SQLNCLI10.1;User Id=xxxx; Password=xxxxx;Initial Catalog=xxxxxxx;Data Source=xxxxxx\SQLEXPRESS;"
Application("conString")=cnnString
Application("cnn")=cnnString
Call cnnDem.Open(cnnString)
End Sub
Основное отличие состоит в том, что cnn
теперь содержит строку соединения, в котором, как ранее cnn
был объектом со ссылкой на ADOBD.Connection
.
Вопрос, который у меня есть, - какое воздействие (если оно имеется) будет иметь место в приложении. Я провел базовое (локальное) тестирование, и на данный момент все выглядит нормально. Но мне интересно, могут ли быть проблемы с несколькими пользователями (или что-то подобное), которые могут возникнуть при повторном развертывании этого сайта.
Из MSDN - [не кэшировать соединение в 'Application (или Session) '] (https://msdn.microsoft.com/en-us/library/bb727078.aspx#EXAA) - при любом объединении пула будет мало пользы. Вы можете сохранить строку соединения в состоянии приложения. – StuartLC
Спасибо за это, Стюарт –