节点js连接字符串不接受SQL Server的反斜杠(\)

时间:2017-07-20 17:57:51

标签: sql-server node.js sql-server-2014-express

我在SQL Server的节点js中有连接字符串,如下所示:

 var webconfig = {
     user: 'sa',
     password: 'aman',
     server: 'Aman\AMAN', 
     database: 'Demo',
     options: {
         encrypt: false // Use this if you're on Windows Azure 
     }
 }

显示连接关闭错误。

但是,如果我使用像192.5.5.62等网络服务器,那么它的工作正常。我认为'Aman \ AMAN'中存在问题,因为服务器名称不接受\反斜杠(我认为)。

以下连接对我有用......

var webconfig = {
         user: 'sa',
         password: 'aman',
         server: '192.5.5.62', 
         database: 'Demo',
         options: {
             encrypt: false // Use this if you're on Windows Azure 
         }
     }

如果我对\(反斜杠)的猜测是正确的,那么请建议我如何使用此服务器名称或窗口身份验证等进行修复。

帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

从您的评论中,您似乎可能正在使用默认驱动程序,这是乏味的。看看their docs,似乎他们已经分离出了主机名和实例名称,因此您需要将代码更改为:

var webconfig = {
     user: 'sa',
     password: 'aman',
     server: 'Aman', 
     database: 'Demo',
     options: {
         encrypt: false, // Use this if you're on Windows Azure 
         instanceName: 'AMAN'
     }
 }

答案 1 :(得分:0)

首先,我假设您正在使用tedious模块(通过查看options.encrypt的注释)。我想首先通过评论确认这一点,但我缺乏评论的信誉。我真的很想帮助你,因为我在某个时候遇到了完全相同的问题,所以就这样了。

我将在Nodejs乏味模块的上下文中将您的问题分为两部分。

  1. 支持命名实例
  2. 支持Windows身份验证
  3. 支持命名实例

    默认情况下,繁琐使用服务器 options.port 进行连接。 options.port 是默认设置,默认值为1433.这就是下面提到的配置有效的原因。

    var webconfig = {
         user: 'sa',
         password: 'aman',
         server: '192.5.5.62', 
         database: 'Demo',
         options: {
             encrypt: false // Use this if you're on Windows Azure 
         }
     }
    

    但是如果要在连接配置中使用命名实例,则必须使用 options.instanceName ,如下所示。请参阅documentation

    var webconfig = {
         user: 'sa',
         password: 'aman',
         server: 'Aman', //FQDN is preferred, so assuming you can ping this
         database: 'Demo',
         options: {
             instanceName: 'AMAN'
             encrypt: false // Use this if you're on Windows Azure 
         }
     }
    

    在您的情况下,但是不需要使用命名实例进行连接,因为您可以使用hostname \ IP本身进行连接。

    此外,您可以使用 options.port options.instanceName ,但不能同时使用配置中的两者。

    这让我想到了你的第二个问题。

    支持Windows身份验证

    繁琐的模块不支持Windows身份验证以连接到当前的SQL Server实例。见here。然而,很少有聪明的头脑已经在研究它。看看这个开放的公关#497。随意为Tedious社区做出贡献。

    奖励提示:继续前进,您也可以通过繁琐的模块来使用debug event,而不是猜测根本原因,这会让您朝着正确的方向前进。确保在生产中禁用它。

    如果有帮助,请将此标记为答案。干杯!