我的目标是在Azure数据库服务中运行SSRS报告。但Azure数据库服务不支持SSRS报告,因此需要在Azure虚拟机中配置SSRS。所以我的SSRS报告数据库在VM和数据源中指向Azure数据库。
现在,在Azure数据库服务的存储过程中,我们使用了抛出错误的OPENROWSET。因此,谷歌搜索后才知道它可以通过创建的链接服务器来处理。现在我无法理解两个查询中的一个查询正在运行而第二个抛出错误。
成功查询:
SELECT *
FROM OPENROWSET ('SQLNCLI','Server=AzureVM;Trusted_Connection=yes;',
'SET FMTONLY OFF; SET NOCOUNT ON;
SELECT * FROM [MyAzureDbLinkedServer].[AzureDB].[dbo].CityTable')
As QueryData
以上查询从Azure SQL DB服务正确获取结果。
失败查询:
SELECT *
FROM OPENROWSET ('SQLNCLI','Server=AzureVM;Trusted_Connection=yes;',
'SET FMTONLY OFF; SET NOCOUNT ON;
EXEC [MyAzureDbLinkedServer].[AzureDB].[dbo].PROC_LIST_SYS_ADMIN_CITY 102')
As ProcData
当我执行程序时,它会抛出以下错误:
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "MyAzureDbLinkedServer" was unable to begin a distributed transaction.
Msg 7399, Level 16, State 1, Line 3
The OLE DB provider "SQLNCLI11" for linked server "MyAzureDbLinkedServer" reported an error. One or more arguments were reported invalid by the provider.
OLE DB provider "SQLNCLI11" for linked server "MyAzureDbLinkedServer" returned message "The parameter is incorrect.".
为了解决问题,找到了所有发现的技巧。有些像......
但到目前为止还没有任何工作。它是不会工作,因为Azure数据库服务没有MSDTC服务?我的目标还有其他解决方案吗?
由于