使用Azure内部部署网关

时间:2017-12-01 00:08:06

标签: sql-server azure powerbi high-availability gateway

我们正在尝试配置一个内部部署数据网关供Power BI / Power Apps使用。我们希望在" ReadOnly"上连接到SQL Server高可用性群集。用于实时/按需查询的数据库实例。下面是一个连接字符串的示例,它将实现此目的:

Server=MyServer;Database=MyDb;Trusted_Connection=True;applicationintent=readonly

我们下载了最新版本的网关,安装了它,但无法将其连接到HA SQL数据库。我搜索过互联网,还没有找到答案。我们尝试过" SQL Server"和" OleDb" Azure Power BI中的数据源未成功。我们可以毫无问题地连接到SQL Server数据库的非HA实例。可以这样做,如果是这样,怎么办?

https://powerbi.microsoft.com/en-us/gateway/

以下是我在app.powerbi.com门户网站尝试添加SQL连接时看到的错误:

  

无法连接:我们在尝试连接到MyServer时遇到错误。

     

ID:90c2a52c-ba1f-4506-84ed-d6da5a44e684要求

     

ID:75e6338b-6806-9d42-8af3-7f6896485df8群集

     

URI:https://wabi-west-us-redirect.analysis.windows.net

     

状态代码:400错误代码:DMTS_PublishDatasourceToClusterErrorCode

     

时间:2017年12月1日星期五07:53:37 GMT-0700(山地标准时间)

     

版本:13.0.3154.215

     

BI网关:从ID为413243的服务收到错误有效负载:访问目标数据源时遇到SqlException。

以下是运行网关服务的客户端中记录的异常:

  

GatewayPipelineErrorCode = DM_GWPipeline_UnknownError

     

InnerType = SQLEXCEPTION

     

InnerMessage =目标数据库(' MyDatabase')位于可用性组中,当应用程序意图设置为只读时,当前可以访问连接。有关应用程序意图的详细信息,请参阅SQL Server联机丛书。

     

InnerToString = System.Data.SqlClient.SqlException(0x80131904):目标数据库(' MyDatabase')位于可用性组中,当应用程序意图设置为只读时,当前可以访问连接。有关应用程序意图的详细信息,请参阅SQL Server联机丛书。

     

at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity,SqlConnectionString connectionOptions,SqlCredential credential,Object providerInfo,String newPassword,SecureString newSecurePassword,Boolean redirectedUserInstance,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData,DbConnectionPool pool,String accessToken,Boolean applyTransientFaultHandling )

     

at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options,DbConnectionPoolKey poolKey,Object poolGroupProviderInfo,DbConnectionPool pool,DbConnection owningConnection,DbConnectionOptions userOptions)

     

at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection,DbConnectionPoolGroup poolGroup,DbConnectionOptions userOptions)      在System.Data.ProviderBase.DbConnectionFactory。<> c__DisplayClass31_0.b__0(Task`1 _)

     

at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()      在System.Threading.Tasks.Task.Execute()

1 个答案:

答案 0 :(得分:0)

此后,我了解了有关Azure本地网关的更多信息,但这仍然是一个问题。可能的解决方法是使用“ @ provstr = N'ApplicationIntent = ReadOnly'”在HA只读辅助SQL服务器上创建链接服务器。

USE [master]
GO

EXEC master.dbo.sp_addlinkedserver @server = N'HaReadOnlyLink', @srvproduct=N'SQL', @provider=N'SQLNCLI11', @datasrc=N'SqlHaListnerHost', @provstr=N'ApplicationIntent=ReadOnly', @catalog=N'MyHaDb'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'HaReadOnlyLink',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO

然后,您可以使用HA辅助数据库上另一个数据库中的此链接服务器来连接只读HA数据库,如下所示:

SELECT * FROM HaReadOnlyLink.MyHaDb.dbo.MyTable

Microsoft SQL Linked Server Documenation