2

我得到了一个用 Classic ASP 编写的 Web 应用程序,用于从 Windows 2003 Server(SQL Server 2000 和 IIS 6)移植到 Windows 2008 Server(SQL Server 2008 和 IIS 7.5)。

该站点使用一个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

但是,我无法获取连接字符串来连接——我将其缩减为“无法登录”错误消息(无论我尝试了什么登录 ID)。

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.

我的问题是这会对应用程序产生什么影响(如果有的话)。我已经进行了一些基本(本地)测试,目前一切正常。但是我想知道再次部署该站点时是否可能会出现多用户问题(或类似性质的问题)。

4

2 回答 2

1

连接以创建数据库连接字符串的最佳和最简单的方法之一是在根目录或其他地方创建一个新的 ASP 文件,并将连接字符串包含在其中:

//全局.asp //

<%
Dim connectionString
connectionString = "PROVIDER=SQLOLEDB;DATA SOURCE=YourSQLServer;UID=sa;PWD=*******;DATABASE=YourDataBase"
%>

然后在您要调用此连接的每个文件中创建一个包含语句。

<!-- #include virtual="global.asp" -->

然后,在您需要设置连接调用的地方,只需使用您的代码连接到数据库:

<%
Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open =   ConnectionString
Set rsReports = Server.CreateObject("ADODB.Recordset")
strSQL = "Select * From Customers"
rsReports.Open strSQL, adoCon
%>
于 2016-01-27T19:16:30.040 回答
0

我将连接字符串保留在 Global.asa 中,但在根据需要加载的单独函数中创建连接。应用程序连接对象可能不知道可能关闭该连接的临时网络问题,然后将来尝试使用该连接将不会成功。

希望这是有道理的。

于 2015-06-18T22:49:05.040 回答