当我们尝试连接并读取 sql 数据库并将其存储到 sql 数据库时出现错误

问题描述 投票:0回答:1

我们使用Azure数据工厂和集成运行时。 因此,如果我们在管道中使用单个复制活动,并且源是 SQL 数据库,目标是 SQL 数据库,我们会收到下面用 * 标记的错误。 这是我使用单个复制活动的打印,但不起作用

这是错误消息。

(*)ErrorCode=SqlFailedToConnect,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=无法连接到 SQL 数据库。请联系 SQL Server 团队以获得进一步支持。服务器:“qbim.database.windows.net”,数据库:“Hemavan”,用户:“Daniel”。检查链接服务配置是否正确,并确保 SQL 数据库防火墙允许集成运行时访问。,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=已成功建立连接与服务器,但在登录前握手期间发生错误。 (提供程序:TCP 提供程序,错误:0 - 信号量超时期限已过期。),来源=.Net SqlClient 数据提供程序,SqlErrorNumber=121,Class=20,ErrorCode=-2146232060,State=0,Errors=[{Class= 20,Number=121,State=0,Message=已成功与服务器建立连接,但在登录前握手期间发生错误。 (提供程序:TCP 提供程序,错误:0 - 信号量超时期限已过期。),},],''Type=System.ComponentModel.Win32Exception,Message=信号量超时期限已过期,Source=,'

但是如果我们以这种方式使用两个复制活动。 第一个复制活动源读取 SQL 数据库,第一个复制活动中的目标写入 blob 存储,第二个活动中的源读取 blob 存储,第二个活动中的目标写入 SQL 数据库,它工作得很好。 如果我们像这样就可以了

可悲的是,我们无法长时间使用 blob 存储功能,因为我们每天运行此管道 10 次,而且成本很高。 我们必须使用单个活动来最小化成本,首先从 SQL 数据库读取,然后写入目标中的 SQL 数据库。

奇怪的是,我们在管道中使用了具有单个活动的配置,该配置在我们读取源中的 SQL 数据库以及写入 sqldb 的目标中时工作得很好。

如果我们查看错误,我们可以看到它还显示

与服务器成功建立连接,但登录前握手时发生错误。

肯定是源所在的SQL Server配置有问题。

确实很奇怪,当我第一次写入 Blob 存储,然后在第二个活动写入 SQL 数据库时,它会起作用。

注意,我使用自托管集成运行时,源数据库位于本地。

提前非常感谢

sql-server azure azure-data-factory azure-blob-storage
1个回答
0
投票
Cannot connect to SQL Database. Please contact SQL server team for further support. Server: '****.database.windows.net', Database: '****', User: '***'. Check the linked service configuration is correct, and make sure the SQL Database firewall allows the integration runtime to access.

上述错误与防火墙规则有关。尝试将数据从 Blob 存储复制到 Azure SQL 数据库时,如果两者位于同一客户端中,则可能不会遇到与访问相关的错误。但是,将数据从本地复制到 Azure SQL 数据库时,客户端可能会有所不同。要解决此问题,请将客户端 IP 地址添加到 SQL 服务器,如下所示:

转到 Azure SQL Server 网络,单击添加客户端 IP 地址,然后保存,如下所示:

enter image description here

然后,仅使用复制活动使用 SQL 数据库将数据从本地数据库复制到 Azure SQL 数据库。没有任何错误就可以成功运行,如下图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.