使用 SQLx 连接到 SQL 服务器

Connecting to SQL Server with SQLx

我在通过 SQLx 库访问 Azure 上托管的 SQL 服务器数据库时遇到困难。

我可以使用 pymssql 连接到我的数据库:

conn = pymssql.connect(server='SERVER.database.windows.net', user='USER', password='PASSWORD', database='DATABASE')  

因此,我假设我在 Azure 门户中的设置都是正确的,问题确实出在我的 SQLx 代码上。

使用相同的凭据,我尝试连接到数据库:

let mut connection = MssqlConnection::connect(
        "mssql://USER:PASSWORD@SERVER.database.windows.net/DATABASE").await?;

但是这会导致

Error: Io(Kind(ConnectionAborted))

并且根据 rust std::io error docs 这个错误意味着:

The connection was aborted (terminated) by the remote server

我想知道这个错误消息是否准确,因为我不知道为什么远程会终止连接。此外,这些调用不会显示在指标选项卡中,因此我认为请求从未到达服务器。

我正在像这样导入 tokio 和 sqlx 包:

sqlx = { version = "0.5.9", features = [ "runtime-tokio-native-tls" , "mssql" ] }
tokio = { version = "1.14.0", features = ["full"] }

有谁知道这个错误是什么means/what我做错了吗?

我在 SQLx 存储库中发布了一个 GitHub issue 并得到了以下回复:

This may be due to our lack of support for encrypted connections: #414

看来近期不会解决这个问题:

... we will be closing up the source of the MSSQL driver we can no longer accept outside contributions to its code. If you are currently using MSSQL for non-profit or open-source purposes, you will be able to request a free license to use the upcoming closed-source driver. link