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



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

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

它显示连接关闭错误。

但是,如果我使用的是 192.5.5.62 等网络服务器,那么它工作正常。我认为"阿曼\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 乏味模块的上下文中将您的问题分为两部分。

  1. 支持命名实例
  2. 支持 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 
}
}

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

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 
}
}

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

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

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

支持 Windows 身份验证

繁琐的模块目前不支持Windows身份验证连接到SQL Server实例。看这里。然而,很少有聪明的头脑已经在努力。看看这个开放的 PR #497。随意为乏味的社区做出贡献。

额外提示:展望未来,您还可以通过繁琐的模块利用调试事件,而不是猜测根本原因,这将引导您朝着正确的方向前进。确保在生产中禁用它。

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

使用四个反斜杠在输出中获取一个

snowflake.createStatement( { sqlText: `insert into log_table (message) values ('\\newdata')` } ).execute(); 

将产生 ewdata

最新更新