我在 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 乏味模块的上下文中将您的问题分为两部分。
- 支持命名实例
- 支持 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