2014-11-12 1 views
2

Я создал простой отчет 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 
+0

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

+0

извините, это только изменение имени столбца, а не проверка значения, моя ошибка. –

+0

Вы пытались запустить SQL-профайлер, чтобы узнать, каков запрос, который фактически выполняется на сервере sql? может быть параметр не передан правильно по какой-либо причине ... – MarioZG

ответ

2

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

Data Source=myprodsqlserver; Initial Catalog=myorganization_MSCRM; 

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

data source=localhost; initial catalog=myorganization_MSCRM; 
+0

Awesome. Рад, что вы его работали. Так была ли проблема в конечном итоге, что установки dev и prod SQL имели разные сопоставления? –

+0

Точно, база данных prod была 'turkish_ci_ai'; которые в качестве капитала İ и ниже ı (без точки). Поэтому я предполагаю, что он не смог прочитать «Начальный каталог» из-за прописного слова «I». Странно, не так ли? –

+0

@JasonFaulkner, эта награда заканчивается, вы можете отправить ответ, если хотите, я могу поддержать и принять ваш ответ, чтобы вы могли получить щедрость, как подарок благодарности за вашу помощь. –

1

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