Cloud SlashDB VM 无法与 Azure SQL 数据库连接

Cloud SlashDB VM can't connect with Azure SQL DB

我按照说明 here 在 Azure 中设置了一个 SlashDB 实例。

我设置了一个 Azure 数据库,我可以使用服务器管理员帐户从 SSMS 访问它。数据库服务器防火墙似乎已正确连接到 SlashDB 服务器 vnet 子网的服务端点。

当我让 SlashDB 根据主机名和数据库名组成连接字符串时,出现此错误:

Couldn't load model bromach_dev due to OperationalError. (pyodbc.OperationalError) ('08001', u'[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)') (Background on this error at: http://sqlalche.me/e/e3q8)

Connection Error (Default Connection String)

当我使用 Azure 门户中的 ODBC 连接字符串覆盖连接字符串时,我收到此错误:

Couldn't load model bromach_dev due to InterfaceError. (pyodbc.InterfaceError) ('IM002', u'[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)') (Background on this error at: http://sqlalche.me/e/rvf5)

Connection Error (Azure Connection String)

在这种情况下,我使用的连接字符串是:

Driver={ODBC Driver 13 for SQL Server};Server=tcp:org-dev.database.windows.net,1433;Database=bromach_dev;Uid=serveradmin@org-dev;Pwd=****************;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;

想法?

如果您的 Azure SQL 数据库不是托管实例,则 SlashDB VM 无法连接到它。

并且请确保 Azure SQL 数据库服务器防火墙正确连接到 SlashDB 服务器 vnet 子网的服务端点。

关于SlashDB的说明也提供了两种解决连接失败的方案:

另外,我想你也许可以看看这篇link作为参考:Configure Azure VM to connect to an Azure SQL Database Managed Instance

希望对您有所帮助

为了让 SlashDB 连接,必须有一条从其虚拟机实例到 Azure SQL 服务器的开放 TCP/IP 路由(抱歉,如果我说的很明显)。

此外,SlashDB 实例上必须有一个有效的 DNS 解析器,以便它可以获取连接字符串中配置的数据库主机的 IP 地址。

DNS 修复 -- 不再需要 --

让我们从后者开始。新的SlashDB image有一个bug,这是由Azure的发布过程中的一个bug引起的https://github.com/Azure/WALinuxAgent/issues/1151。我们已经向市场发布了修正后的图像。以下解决方法不再需要:

  1. 使用您在启动实例时设置的凭据通过 SSH 登录到您的 SlashDB 实例。
  2. 发出以下命令

    sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

防火墙设置(简单) -- 从这里开始 --

使用 Azure 门户,导航到您的数据库资源并单击 "Set server firewall" 按钮。

检查"Allow access to Azure services"是否开启。在我们的测试中,一个 SlashDB 实例 运行 位于与数据库服务器相同的位置(在我们的例子中是美国东部),启用此设置后连接没有问题。

防火墙设置(更安全)

使用与上述相同的防火墙设置面板,关闭 "Allow access to Azure services"。相反,我们将为您的 SlashDB 实例添加一个网络路由以进行连接。最好使用虚拟网络规则,如下所示。

  1. 单击屏幕底部的 "Add existing virtual network" 按钮。侧面板将打开。
  2. 填写所需的详细信息,最重要的是您的 SlashDB 实例的虚拟网络名称(您可以在 Azure 门户的 "Overview" 页面中找到该名称)。单击“确定”。
  3. 命中"Save".

SlashDB 中的数据库连接

在浏览器中打开 SlashDB 用户界面,导航到 Configure/Databases 并单击数据库连接旁边的 "edit" 按钮。

无需重写连接字符串。您的数据库连接配置应如下所示:

完成后点击保存,然后点击关闭。您现在应该能够成功连接。