【问题标题】:Cloud SlashDB VM can't connect with Azure SQL DBCloud SlashDB VM 无法与 Azure SQL DB 连接
【发布时间】:2018-12-24 21:48:10
【问题描述】:

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

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

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

由于 OperationalError,无法加载模型 bromach_dev。 (pyodbc.OperationalError) ('08001', u'[08001] [unixODBC][FreeTDS][SQL Server]无法连接到数据源 (0) (SQLDriverConnect)') (此错误的背景:http://sqlalche.me/e/e3q8

Connection Error (Default Connection String)

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

由于 InterfaceError,无法加载模型 bromach_dev。 (pyodbc.InterfaceError) ('IM002', u'[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)') (此错误的背景:@987654324 @)

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;

想法?

【问题讨论】:

  • 您的 SQL Server 是否侦听 TCP/IP 端口 1433 并允许基于用户名/密码的身份验证?请发布您如何创建 Azure SQL 实例,我们将尝试复制您的问题。
  • 新的 SlashDB 镜像存在问题,与此错误报告 github.com/Azure/WALinuxAgent/issues/1151 有关。我将在答案中发布解决方法。

标签: azure-sql-database slashdb


【解决方案1】:

为了让 SlashDB 连接,必须有一个从其虚拟机实例到 Azure SQL Server 的开放 TCP/IP 路由(对不起,如果我说的很明显)。

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

DNS 修复 -- 不再需要 --

让我们从后者开始。新的 SlashDB 镜像有一个 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 门户,导航到您的数据库资源并单击“设置服务器防火墙”按钮。

检查“允许访问 Azure 服务”是否打开。在我们的测试中,一个 SlashDB 实例运行在与数据库服务器相同的位置(在我们的例子中是美国东部),打开了这个设置,连接没有问题。

防火墙设置(更安全)

使用与上述相同的防火墙设置面板,关闭“允许访问 Azure 服务”。相反,我们将为您的 SlashDB 实例添加一个网络路由以进行连接。最好使用如下虚拟网络规则来执行此操作。

  1. 单击屏幕底部的“添加现有虚拟网络”按钮。将打开一个侧面板。
  2. 填写所需的详细信息,最重要的是 SlashDB 实例的虚拟网络名称(您可以在 Azure 门户的“概述”页面中找到)。点击确定。
  3. 点击“保存”。

SlashDB 中的数据库连接

在浏览器中打开您的 SlashDB 用户界面,导航到配置/数据库,然后单击数据库连接旁边的“编辑”按钮。

没有必要覆盖连接字符串。您的数据库连接配置应如下所示:

完成后单击保存,然后单击关闭。您现在应该可以成功连接了。

【讨论】:

  • Victor-- 这就是答案的样子。 :) 因此,由于这并不紧急,而且我还有其他工作要做,所以我打算将其搁置一周,然后使用更新后的图像。 Victor 非常感谢您的帮助和 BIGTIME 对这款出色产品的赞誉!谢谢你!
  • 谢谢。我可以引用你的话吗? :) 顺便说一句,新图像现已上线,不再需要 DNS 修复。
【解决方案2】:

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

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

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

另外,我想你也许可以阅读这个链接作为参考:Configure Azure VM to connect to an Azure SQL Database Managed Instance

希望对你有帮助。

【讨论】:

  • 让我澄清一下...你是说我可以在每月 14 美元的 Linux VM 上使用免费的 SlashDB 试用版玩 SQL Server 游戏的唯一方法是将其连接到每月 1,400 美元的托管 SQL服务器实例??无法在虚拟 Azure SQL Server 上使用单个 Azure DB?
  • 应该不是这样的。可以使用 Azure SQL,但 SlashDB 实例和数据库服务器之间的网络必须工作。
猜你喜欢
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2021-09-19
相关资源
最近更新 更多