2015-06-16 95 views
1

我已经给出了一个用传统ASP编写的Web应用程序,用于从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 

但是我不能让连接字符串连接 - 我削减了一个“无法登录”的错误消息(无论我尝试了什么登录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

从MSDN - [不缓存在'应用程序的连接(或会话)'](https://msdn.microsoft.com/en-us/library/bb727078.aspx#EXAA) - 无论如何,在连接池的情况下,几乎没有任何好处。您可以将连接字符串本身存储在应用程序状态中。 – StuartLC

+0

谢谢你,斯图尔特 –

回答

0

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

希望这是有道理的。

0

一个连接创建一个数据库连接字符串的最好和最简单的方法是折痕的根目录或其他地方一个新的ASP文件,并在连接字符串进去:

//Global.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 
%>