Я создал простой отчет SSRS с использованием Visual Studio 2012,CRM Auto Pre-фильтр не пропускает запрос
Я использую 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 должны были быть заполнены запрос, по умолчанию обнулить
@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 ')'
UPDATE: На сервере развития, мы все установили на той же машине; CRM Frontend, Services, SQL Server, сервер отчетов и т. Д. Но в среде , каждый из эти серверы - это разные машины. Может ли это быть источником ошибки?
UPDATE 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
Эти отчеты работают как ожидается на сервере разработки, действительно ли этот тип данных полей имеет значение? –
извините, это только изменение имени столбца, а не проверка значения, моя ошибка. –
Вы пытались запустить SQL-профайлер, чтобы узнать, каков запрос, который фактически выполняется на сервере sql? может быть параметр не передан правильно по какой-либо причине ... – MarioZG