Sql server SQL Server中的节点js连接字符串不接受反斜杠(\)
我在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 } } 它显示连接关闭错误 但如果我使用的是网络服务
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冗长的模块中,我将把您的问题分为两部分
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
}
}