Предварительный предварительный фильтр CRM не передает запрос

Я создал простой отчет SSRS с помощью Visual Studio 2012,

Я использую префикс CRMAF_ для использования автоматической фильтрации CRM и достижения контекстного отчета.

Для этого я использую два набора данных; dsFiltered для отфильтрованных данных и dsApprovalSummary для моего отчета.

Это запрос dsFiltered использует:

 declare @sql as nVarchar(max) set @sql = 'SELECT vrp_investdocumentid FROM (' + @CRM_Filteredvrp_investdocument + ') as CRMAF_vrp_investdocument' exec(@sql) 

Это запрос dsApprovalSummary использует:

 select doc.vrp_name as 'Yatırım Dosyası', act.vrp_actioncode as 'Aksiyon Kodu', cfg.vrp_description as 'Aksiyon Açıklaması', act.OwnerIdName as 'Aksiyon Sorumlusu', act.ModifiedOn as 'Son Değiştirme Tarihi' from vrp_action act inner join vrp_investdocument as doc on act.RegardingObjectId=doc.vrp_investdocumentId inner join vrp_actionconfig as cfg on act.vrp_actioncode = cfg.vrp_actioncode where cfg.vrp_reporttask=1 and act.RegardingObjectId = @documentId order by act.ModifiedOn 

Параметры:

@CRM_Filteredvrp_investdocument – параметр CRM должен быть заполнен запросом, по умолчанию – null

@CRM_vrp_investdocumentId – поступает из dsFiltered ( CRMAF_vrp_investdocument.vrp_investdocumentid ); разрешает null.

Отчет отлично работает на сервере разработки. Однако, когда я развертываю отчет на рабочем сервере, он не просит меня выбрать фильтр или не имеет фильтра по умолчанию; пытается запустить непосредственно, а затем дает rsProcessingAborted . Я проверил журналы и увидел, что он сказал, что SYNTAX ERROR NEAR ) .

Это из журналов сервера отчетов:

 processing!ReportServer_0-20!13ec!11/11/2014-13:45:04:: w WARN: Data source 'srcApprovalSummary': Report processing has been aborted. processing!ReportServer_0-20!13ec!11/11/2014-13:45:04:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: , Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: An error has occurred during report processing. ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset 'dsFiltered'. ---> System.Data.SqlClient.SqlException: Incorrect syntax near ')' 

ОБНОВЛЕНИЕ: На сервере разработки у нас все установлено на одной машине ; CRM Frontend, Services, SQL Server, сервер отчетов и т. Д. Но в производственной среде каждый из этих серверов – это разные машины . Может ли это быть источником ошибки?

ОБНОВЛЕНИЕ 2: Запуск профилировщика дал мне, что @CRM_Filteredvrp_investdocument приходит в NULL . См. Запрос ниже из профилировщика:

 exec sp_executesql N'declare @sql as nVarchar(max) set @sql = ''SELECT vrp_investdocumentid FROM ('' + @CRM_Filteredvrp_investdocument + '') as CRMAF_vrp_investdocument'' exec(@sql)',N'@CRM_Filteredvrp_investdocument nvarchar(4000)',@CRM_Filteredvrp_investdocument=NULL 

Оказывается, проблема сопоставления, я пытаюсь использовать собственный источник данных с этой строкой соединения:

 Data Source=myprodsqlserver; Initial Catalog=myorganization_MSCRM; 

Я переписал его в нижнем регистре и заменил источник данных на localhost проблема волшебно ушла.

 data source=localhost; initial catalog=myorganization_MSCRM; 

В редакторе отчетов попробуйте перестроить источник данных, используемый каждым вашим набором данных, используя построитель строк подключения (не вводите его вручную). Создайте их, чтобы они указывали на вашу базу данных Prod CRM, а затем полностью тестировали отчет в редакторе отчетов. Это определит, лежит ли проблема с отчетом или CRM.

Давайте будем гением компьютера.