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 ')'

Обновление: на сервереdevelopment , у нас все установленона той же машине ; CRM Frontend, Services, SQL Server, Report 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
2   2  

2 ответа:

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

Data Source=myprodsqlserver; Initial Catalog=myorganization_MSCRM;

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

data source=localhost; initial catalog=myorganization_MSCRM;

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