Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中的节点js连接字符串不接受反斜杠(\)_Sql Server_Node.js_Sql Server 2014 Express - Fatal编程技术网

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

Sql server SQL Server中的节点js连接字符串不接受反斜杠(\),sql-server,node.js,sql-server-2014-express,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 } } 它显示连接关闭错误 但如果我使用的是网络服务

我在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 
         }
     }
如果我对\(反斜杠)的猜测是真的,那么请建议我如何使用此服务器名称或窗口身份验证等来修复它


我们将不胜感激

从您的评论来看,似乎您使用的是默认驱动程序,这很乏味。看一下,它们似乎已经分离出主机名和实例名,因此您希望将代码更改为如下所示:

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

首先,我假设您正在使用模块(通过查看options.encrypt的注释)。我想先用评论来证实这一点,但我缺乏评论的信用。我真的很想帮你,因为我以前也遇到过同样的问题,所以就这样

在Nodejs冗长的模块中,我将把您的问题分为两部分

  • 对命名实例的支持
  • 支持Windows身份验证
  • 对命名实例的支持 默认情况下,冗长地使用服务器选项。端口进行连接选项。端口是默认设置,默认值为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 
         }
     }
    
    但是,如果要在连接配置中使用命名实例,则必须使用选项.instanceName
    ,如下所示。看

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

    此外,您可以在配置中同时使用选项.port选项.instanceName,但不能同时使用两者

    这就引出了你的第二个问题

    支持Windows身份验证 冗长的模块当前不支持连接到SQL Server实例的Windows身份验证。看见然而,很少有聪明的人已经在做这件事了。看看这个公开的公关。请随意为乏味的社区做贡献

    额外提示:今后,您还可以利用by枯燥的模块,而不是猜测根本原因,它将引导您走向正确的方向。确保在生产中禁用它


    如果这对您有帮助,请将其标记为答案。干杯

    反斜杠需要在JS字符串中转义。试试
    Aman\\Aman
    。可能重复。您正在使用哪个sql server模块?mssql()似乎以您尝试的方式接受命名实例。@Santi我已经尝试过了,但没有working@Paul我不是这样用的。。我正在传递这个函数,比如var connection=new sql.connection(webconfig,function(err){//code here}),您是否如我在回答中提到的那样附加了调试侦听器?它说了什么?是的,我想是的,因为在添加instanceName后,旧的错误消息现在没有显示新的错误消息:“AMAN”我在点击服务器后打印错误。它显示的“连接关闭”只是将IP 192.5.5.62放在服务器名称中。保持instanceName不变。好的,过一段时间它会尝试给您发消息。谢谢你的帮助。你能提供更多的细节吗?除了那个字符串之外,还有其他一些东西会随着那个错误返回。另外,确保您能够在默认端口上连接到SQL server实例,等等;此错误可能是由于急切的防火墙导致的。
    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 
         }
     }