【发布时间】:2021-08-05 14:18:46
【问题描述】:
我正在尝试通过 Electron 应用程序中的 Windows 身份验证连接到 MSSQL 数据库。
我使用包: msnodesqlv8 2.1.0 mssql 7.0.0
结果,当连接池时,显示如下: 'SqlQuery' 的处理程序发生错误:ConnectionError:无法连接到:未定义 - 自签名证书
我的配置代码:
import { IResult, config } from "mssql";
const connectionSettings: config = {
server: "my_server_name",
port: 1443,
driver: "msnodesqlv8",
options: {
trustedConnection: true,
connectionString: "Data Source=my_server_name;database=my_database;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
}
};
我的连接代码:
import { ConnectionPool, IResult, config } from "mssql";
public SqlQuery(poolOptions: config, query: string)
: Promise<IResult<any>> {
return new Promise((resolve, reject) => {
console.log(poolOptions);
const pool = new ConnectionPool({
...poolOptions
});
pool.connect()
.then(() => {
console.log("CONNECT");
return pool.query(query);
})
.then(values => {
console.log(values);
return resolve(values);
})
.catch(reason => {
reject(reason);
});
});
【问题讨论】:
-
如果数据库服务器配置了自签名证书,则需要指定
TrustServerCertificate=True。 -
默认情况下,SQL Server 安装程序会创建一个自签名 X.509 证书并将其分配给实例。您有三个选择: 1. 使用 Dan Guzman 提到的
TrustServerCertificate=True; 2. 登录到运行 SQL 实例的 Windows 服务器,将其 X.509 证书的公钥导出到文件中,并将其导入到客户端计算机的 Trusted Certificates/Roots 存储中; 3. 从 CA(或您的组织)获取(受信任的)X.509 证书,并通过 SQL Server 配置管理器将其分配给 SQL 实例。 -
@AlwaysLearning @DanGuzman 不幸的是,当我使用
trustServerCertificate=true时出现错误:Error: An error occurred while logging in user "" -
也许这很重要,但我在电子应用程序中使用此代码。
标签: javascript node.js sql-server typescript electron