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 ответа:
Оказывается, это проблема сортировки, я пытался использовать пользовательский источник данных с этой строкой подключения:
Data Source=myprodsqlserver; Initial Catalog=myorganization_MSCRM;
Я переписал его в нижний регистр и заменил источник данных на
localhost
Проблема волшебным образом исчезла.data source=localhost; initial catalog=myorganization_MSCRM;
В Редакторе отчетов попробуйте перестроить источник данных, используемый каждым из ваших наборов данных, с помощью построителя строк подключения (не вводите его вручную). Постройте их так, чтобы они указывали на вашу базу данных prod CRM, а затем полностью протестируйте отчет в Редакторе отчетов. Это позволит определить, лежит ли проблема с отчетом или CRM.