Javascript 从经典ASP应用程序连接到SQLExpress

Javascript 从经典ASP应用程序连接到SQLExpress,javascript,asp-classic,connection-string,sql-server-express,Javascript,Asp Classic,Connection String,Sql Server Express,我有一个本地SQLExpress数据库。我需要从一个经典的ASP web应用程序连接到这个 我认为我的连接字符串是正确的,因为当我使用C控制台应用程序进行测试时,我能够连接和读取数据: //C示例应用程序 var connectionString=@Data Source=。\SQLEXPRESS;初始目录=测试数据;综合安全=真实; var con=新的SqlConnectionconnectionString; 不公开; var cmd=new-SqlCommandSELECT*FROM-t

我有一个本地SQLExpress数据库。我需要从一个经典的ASP web应用程序连接到这个

我认为我的连接字符串是正确的,因为当我使用C控制台应用程序进行测试时,我能够连接和读取数据:

//C示例应用程序 var connectionString=@Data Source=。\SQLEXPRESS;初始目录=测试数据;综合安全=真实; var con=新的SqlConnectionconnectionString; 不公开; var cmd=new-SqlCommandSELECT*FROM-tbl,con; cmd.ExecuteNonQuery; var reader=cmd.ExecuteReader; 读一读 { Console.WriteLinereader.GetValue1;//显示数据 } 但是,当我在ASP web应用程序中使用相同的字符串时,它会失败:

//ASP Web应用程序 connection=Server.CreateObjectADODB.connection; connectionString=数据源=。\\SQLEXPRESS;初始目录=测试数据;综合安全=真实; Response.WriteconnectionString:+connectionString+; connection.OpenApplicationconnectionString;//错误 打开方法失败,原因是:

0x80004005-用于ODBC驱动程序的Microsoft OLE DB提供程序: [Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且没有 指定的默认驱动程序

我还尝试为SQL数据库设置登录,并使用用户Id和密码:

var connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=TestData;User Id=AspTest;Password=Test";
这同样失败

如何让我的web应用程序连接到我的数据库?

您是否尝试过:


connString=Provider=SQLOLEDB;SERVER=MYSERVER\SQLEXPRESS;数据库=MYDB;Uid=sa;通过@

如果显示的ASP代码是您实际使用的代码,则ApplicationconnectionString很可能返回null/nothing,因为应用程序对象是字典。您是否尝试直接使用连接字符串打开连接:

connection.Open(connectionString); 
通常的模式是在global.asa中指定ApplicationConnectionString=您的连接字符串,然后使用以下代码创建连接:

connection.Open(Application("connectionString")); 
此外,如前一个答案所示,ASP和.NET需要不同的连接字符串。

步骤:

为本地SQL数据库添加用户,包括用户名和 暗语 授予用户读取、写入和选择DB YMMV中所有项目的权限-这是我的应用程序所必需的 配置ODBC 32位C:\Windows\SysWOW64\odbcad32.exe,以便SqlConnectString使用SQL本机客户端11连接到本地\SQLEXPRESS

设置SQL登录凭据 将默认数据库设置为testDB 将ASP连接代码更改为: con.OpenApplicationSqlConnectString; 到 con.OpenDSN=SqlConnectString;用户Id=[用户名];密码=[密码]


您的旧ASP代码现在可以与SQL Express对话。

请尝试从以下内容中删除一个反斜杠:数据源=\\SQLEXPRESS@markpsmith我得到的结果与数据源=。\SQLExpress;我不明白更改连接字符串会有什么帮助,因为您可以看到我使用的连接字符串与我的C示例一起工作。可能是32位与64位的问题吗?在架构方面,c运行的方式是什么?例如,如果服务器是64位,而c运行的是32位,那么,web应用程序是否在应用程序池中启用了32位模式?请注意在应用程序或会话对象中仅存储连接字符串,而不是ADODB.connection对象。不太喜欢使用ApplicationconnectionString模式,因为对连接的更改需要重新启动应用程序池。将其存储在会话对象中效果更好,因为会话很容易被放弃。我的主要观点是,代码使用连接字符串值作为应用程序对象中的查找键。不,我同意。ApplicationconnectionString是错误的,如果他们已经定义了connectionString变量,那么代码示例就使用它。应该是connection.OpenconnectionString;。此时,应用程序将查找一个名为Data Source=。\\SQLEXPRESS;初始目录=测试数据;Integrated Security=True,这毫无意义。这很有用,因为应用程序对象为空。