Nodejs SQL server 驱动 msnodesql 是不是只支持SQL 2012??

Nodejs SQL server 驱动 msnodesql 是不是只支持SQL 2012??

如题,GITHUB里面也说是只支持2012,我用2008和2005都试过了,会出现错误,哪位大侠用过,求指导。

7 回复

Node.js SQL Server 驱动 msnodesql 是否只支持 SQL Server 2012?

问题描述

最近我在使用 Node.js 连接 SQL Server 数据库时遇到了一些问题。我尝试使用 msnodesql 驱动程序连接不同版本的 SQL Server(包括 SQL Server 2008 和 2005),但发现只有 SQL Server 2012 可以正常工作。这让我怀疑 msnodesql 驱动是否真的只支持 SQL Server 2012。

示例代码

首先,我们需要安装 msnodesql 驱动程序。可以通过 npm 安装:

npm install msnodesql

接下来,我们可以编写一个简单的示例代码来连接 SQL Server 并执行查询:

const sql = require('msnodesql');

// 连接字符串
const connectionString = 'Driver={SQL Server Native Client 11.0};'
                        + 'Server=YOUR_SERVER_NAME;'
                        + 'Database=YOUR_DATABASE_NAME;'
                        + 'Uid=YOUR_USERNAME;'
                        + 'Pwd=YOUR_PASSWORD;';

sql.query(connectionString, 'SELECT * FROM YOUR_TABLE_NAME', (err, results) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(results);
});

分析与结论

根据 GitHub 上的文档,msnodesql 确实只支持 SQL Server 2012。这是因为 msnodesql 使用了 SQL Server Native Client 11.0,而 SQL Server 2008 和 2005 只能使用较旧版本的客户端驱动。

为了兼容更早版本的 SQL Server,可以考虑使用其他驱动程序,例如 tediousmssql,这些驱动程序提供了更广泛的 SQL Server 版本支持。

替代方案

如果您需要连接到 SQL Server 2008 或 2005,可以考虑使用 tedious 驱动程序:

npm install tedious

示例代码:

const Connection = require('tedious').Connection;
const config = {
    server: 'YOUR_SERVER_NAME',
    authentication: {
        type: 'default',
        options: {
            userName: 'YOUR_USERNAME',
            password: 'YOUR_PASSWORD'
        }
    },
    options: {
        database: 'YOUR_DATABASE_NAME',
        encrypt: true
    }
};

const connection = new Connection(config);

connection.on('connect', err => {
    if (err) {
        console.error(err);
        return;
    }
    console.log("Connected to SQL Server");
    
    const request = new Request("SELECT * FROM YOUR_TABLE_NAME", (err, rowCount) => {
        if (err) {
            console.error(err);
        } else {
            console.log(rowCount + ' rows returned');
        }
    });

    connection.execSql(request);
});

通过以上示例,您可以选择合适的驱动程序以适应不同的 SQL Server 版本需求。希望这对您有所帮助!


我用过,2005是可以的

求连接语句,应该是我的了解语句写错了。

顺便补充一下,npm install msnodesql 安装的时候,需要在管理员模式下。不在管理员模式下,就报错,搞的纠结好久。

你好,我在官网上下载了msnodesql-0.2.1-v0.6-x64.msi,并且安装到了桌面,然后管理员运行npm install msnodesql,还是不行,我哪一步错了吗

windows里用node连sql貌似很恶心啊,还要装什么Provider

Node.js 的 msnodesql 驱动程序并不严格限于仅支持 SQL Server 2012。虽然 GitHub 文档可能提到它主要是针对 SQL Server 2012 进行优化或测试,但它实际上可以与更早版本的 SQL Server(包括 SQL Server 2008 和 2005)一起使用。如果你遇到问题,可能是由于某些配置或查询语法的问题。

以下是一个简单的示例,展示如何使用 msnodesql 驱动程序连接到 SQL Server 2008:

const sql = require('msnodesqlv8');

// 数据库连接字符串
const connectionString = 'Driver={SQL Server Native Client 11.0};Server=YOUR_SERVER_NAME;Database=YOUR_DATABASE_NAME;Trusted_Connection=yes;';

// 查询语句
const query = 'SELECT * FROM YourTable';

// 执行查询
sql.query(connectionString, query, (err, results) => {
    if (err) {
        console.error('Error executing query:', err);
        return;
    }
    console.log('Query results:', results);
});

请注意:

  1. 确保安装了正确的驱动程序,例如 SQL Server Native Client 11.0 或其他版本。
  2. 替换 YOUR_SERVER_NAMEYOUR_DATABASE_NAME 为你的实际数据库服务器和数据库名称。
  3. 确保查询语法正确,并且与 SQL Server 2008 兼容。

如果仍然遇到问题,请检查错误消息并确保你的 SQL Server 版本和配置正确。

回到顶部