Windows 10 / IE 11上的Javascript HTA ADODB连接

时间:2016-07-07 11:03:10

标签: javascript adodb hta

我有一个长期存在的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用户数据源。

1 个答案:

答案 0 :(得分:0)

对不起 - 愚蠢的小学生错误。 同时,服务器名称更改为包含一个实例,即它变为SQLServer \ Instance1

当进入连接字符串时,我忘了逃避斜线!!!!!

当我将其更改为SQLServer \ Instance1时,一切都开始工作了!