【发布时间】:2016-11-09 16:14:03
【问题描述】:
我有一个长期存在的 HTA,它在运行 IE 10 的 Windows 8 机器上运行良好。
自从升级到 Windows 10 / IE 11 后,应用程序现在可以不再使用相同的代码库与 SQL 数据库通信。
之前这段代码运行良好:
var connectionstring = "Driver={SQL Server Native Client 10.0};Server=xxxxx;Database=x;Uid=xxxxx;Pwd=xxxxxx";
this.getDataFromDB = function (SQLQuery, returnType)
{
if (Logger) Logger.StartLogItem(Logger.newLoggerMessage("DB COMS - CONFIG DATABASE", "Getting data from config DB : SQL Command Sent - " + SQLQuery, LogEntryType.Task));
var conn = new ActiveXObject("ADODB.Connection");
conn.ConnectionTimeout = 20;
conn.CommandTimeout = 20;
var rs = new ActiveXObject("ADODB.Recordset");
try
{
conn.Open(connectionstring);
rs.Open(SQLQuery, conn);
var respObj = { data: [] };
while (!rs.EOF)
{
switch (returnType)
但是现在它到达 conn.Open(connectionstring) 然后失败:
从数据库中提取数据时出错: [Microsoft][SQL Server Native Client 10.0]命名管道提供程序:无法打开与 SQL Server [53] 的连接。
我能够解决这个问题的唯一方法是在控制面板的 ODBC 数据源管理中手动创建一个 DSN,然后使用连接字符串:
var connectionstring = "DSN=FCMADMIN;Uid=xxxxx;Pwd=xxxxx;"
然后一切都再次完美!
那么为什么我不能使用旧的连接字符串。我不确定这是 Windows 10 问题还是 IE 11。问题是 - 这个应用程序被推广到 1000 个工作站,所以真的不想让他们在每台机器上创建一个 ODBC 用户数据源。
【问题讨论】:
标签: javascript adodb hta