Sql server 与Nodejs和x2B合作;Linux/Ubuntu上的MSSQL
我已经将我的nodejs应用程序连接到MSSQL服务器,在我的Windows笔记本电脑上运行良好,sing 同一个应用程序无法在我的Ubuntu笔记本电脑中看到数据库 我在Ubuntu中定义了mssql连接,如下所示,我遗漏了什么吗Sql server 与Nodejs和x2B合作;Linux/Ubuntu上的MSSQL,sql-server,node.js,ubuntu,freetds,unixodbc,Sql Server,Node.js,Ubuntu,Freetds,Unixodbc,我已经将我的nodejs应用程序连接到MSSQL服务器,在我的Windows笔记本电脑上运行良好,sing 同一个应用程序无法在我的Ubuntu笔记本电脑中看到数据库 我在Ubuntu中定义了mssql连接,如下所示,我遗漏了什么吗 更新了我的~/.profile,如下所示: 注销笔记本电脑,以激活上述内容,并刷新配置文件 已安装所需的连接包 配置的FreeTDS 使用sqsh测试FreeTDS连接,效果良好: 已配置的ODBC-odbcinst.ini: 已配置的ODBC-ODBC.ini:
{ name: 'ConnectionError',
message: 'Failed to connect to ACUMENSERVER:1433 - getaddrinfo ENOTFOUND',
code: 'ESOCKET' }
这里可能有什么错误/遗漏的地方,我打开了另一个用于mssql连接的npm包。我发现如果使用了服务器的IP地址,服务器名称不工作,这可以工作 以下是与我一起工作的内容: 1安装mssql:
npm install mssql
2.index.js文件:
var sql = require('mssql');
var config = {
user: 'sa',
password: 'sql@123',
// server: 'myServername', --> Not Working
// server: 'ACUMENSERVER', --> Not Working
server: '6192.168.0.10', // WORKED
database: 'myDB'
}
sql.connect(config).then(function() {
// Query
new sql.Request().query('select top 1 itemcode from OITM').then(function(recordset) {
console.dir(recordset);
}).catch(function(err) {console.log(err); /* ... query error checks ... */ });
// Stored Procedure
new sql.Request()
.input('input_parameter', sql.Int, value)
.output('output_parameter', sql.VarChar(50))
.execute('procedure_name').then(function(recordset) {
console.dir(recordset);
}).catch(function(err) {console.log(err); /* ... execute error checks ... */ });
}).catch(function(err) {console.log(err); /* ... connect error checks ... */ });
更新人
您可能需要一个用于myServer
的DNS解析器。。在windows之外,您将无法获得netbios名称解析。。。无论您将什么作为服务器名,如果您不能从命令提示符ping myserver,您将无法通过node连接
然后:
或者使用上面提到的IP(这意味着根本不需要安装ODBCunix或FreeTDS),或者使用本地网络的内部DNS并使用完整的ADS名称myserver.domain.name
应该解析哪个(假设ADS用作本地解析的dns主机)
~$ sqsh -S ACUMENSERVER -U mssql-username -P mssql-password
~$ sudo gedit /etc/odbcinst.ini
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
~$ sudo gedit /etc/odbc.ini
[ACUMENSERVER]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Servername = ACUMENSERVER
Database = myDataBase
isql -v ACUMENSERVER mssql-username mssql-passward
{ name: 'ConnectionError',
message: 'Failed to connect to ACUMENSERVER:1433 - getaddrinfo ENOTFOUND',
code: 'ESOCKET' }
npm install mssql
var sql = require('mssql');
var config = {
user: 'sa',
password: 'sql@123',
// server: 'myServername', --> Not Working
// server: 'ACUMENSERVER', --> Not Working
server: '6192.168.0.10', // WORKED
database: 'myDB'
}
sql.connect(config).then(function() {
// Query
new sql.Request().query('select top 1 itemcode from OITM').then(function(recordset) {
console.dir(recordset);
}).catch(function(err) {console.log(err); /* ... query error checks ... */ });
// Stored Procedure
new sql.Request()
.input('input_parameter', sql.Int, value)
.output('output_parameter', sql.VarChar(50))
.execute('procedure_name').then(function(recordset) {
console.dir(recordset);
}).catch(function(err) {console.log(err); /* ... execute error checks ... */ });
}).catch(function(err) {console.log(err); /* ... connect error checks ... */ });