1

我是 azure databricks 的新手。我在 scala 中编写了一个示例 spark 程序,以通过以下查询加载到 azure sql 中。我收到一个错误。有人可以帮我吗

错误消息----
com.microsoft.sqlserver.jdbc.SQLServerException:与主机b63da5ce2d2d.tr27.northeurope1-a.worker.database.windows.net 的TCP/IP 连接失败,端口65535。错误:“连接超时。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止。 "

斯卡拉代码 -

import com.microsoft.azure.sqldb.spark.config.Configimportcom.microsoft.azure.sqldb.spark.connect._// 获取一个DataFrame集合(val collection)valconfig=Config(Map("url"->"mysqlserver. database.windows.net","databaseName"->"MyDatabase","dbTable"->"dbo.Clients""user"->"username","password"->"xxxxxxxx"))importorg.apache.spark .sql.SaveModecollection.write.mode(SaveMode.Append).sqlDB(config)

4

2 回答 2

0

听起来您在 SQL DB 上启用了防火墙。尝试先禁用它以确认问题。

如果它有效,那么如果要启用防火墙,您有两种选择:

1) vnet 将您的数据块和 sqldb 附加到同一个 vnet。https://docs.azuredatabricks.net/administration-guide/cloud-configurations/azure/vnet-inject.html

2)在 sqldb 白名单上,您所在位置的所有 azure ips。这些可供下载。请注意,某些位置的防火墙规则数超过 128,这是可用的最大防火墙规则数。https://www.microsoft.com/en-gb/download/details.aspx?id=41653

于 2019-03-02T05:50:02.427 回答
0

为什么您的端口号是“65535”而不是 1433?

SQL 数据库通过端口 1433 进行通信。我认为这就是您无法连接到 Azure SQL DB 的原因。 在此处输入图像描述

请参考:服务器级IP防火墙规则

我们无法更改 Azure SQL Server 中的端口。您的数据库托管在不受“客户”控制的负载平衡云服务器实例上。

参考:更改 azure sql server 中的端口

端口 1433 是托管 SQL 数据库客户端应用程序的桌面计算机上必须打开的唯一端口。

如果您不知道如何打开计算机上的 1433 端口,

请参阅:如何为 SQL Server 数据库引擎打开防火墙端口 1433

关于如何在 Azure SQL 数据库中加载数据,Azure 提供了很多方法。

  1. 将数据从 CSV 加载到 Azure SQL 数据库(平面文件)

  2. 将文件从 Azure Blob 存储加载到 Azure SQL 数据库

有关更多详细信息,您可以参阅使用 SQL Server 集成服务将数据加载到 SQL Server 或 Azure SQL 数据库

它们都可以帮助你在 Azure SQL 数据库中加载数据。

希望这可以帮助。

于 2019-03-04T03:32:08.833 回答