Использование SSRS 2008R2 с базой данных SQL Server 2005 для источника данных.
У меня есть отчет (RDL-файл), встроенный в Business Intelligence Development Studio (VS 2008). Он использует хранимую процедуру в качестве источника данных. Процесс принимает один параметр, INT, который является уникальным ключом для главной таблицы в одном из SELECT в процедуре.
Для некоторых значений параметров выполнение proc из конструктора запросов BIDS не возвращает строк. Выполнение такой же процедуры из SSMS с использованием того же значения параметра возвращает строки. Профилировщик показывает один и тот же SELECT независимо от того, сделан ли вызов из BIDS или SSMS. Как они могли получить разные результаты?
Вот проц:
CREATE PROCEDURE [Report_BatchEdit]
@BatchAltId INT
AS
SELECT b.[BatchAltId]
, fs.[Name] AS [FundingSource]
, b.[StartDate] AS [StartDate]
, b.[StopDate] AS [StopDate]
, b.[Description]
, b.[Created]
, bl.[BillId]
, COALESCE(c.[Name], bill.RecipientCustomerName) AS [CustomerName]
, COALESCE(ri.[Identifier], bill.[RecipientIdentifier]) AS [MedicaidNumber]
, bill.[NetTotal] AS [ClaimAmount]
, bl.[BillingCodeCode] AS [BillingCode]
, bl.[BillingCodeDescription] AS [BillingCodeDescription]
, bl.[StartDate] AS [FromDate]
, bl.[StopDate] AS [ToDate]
, bl.[UnitSizeName] AS [UnitSize]
, bl.[CalculatedUnits] AS [Units]
, bl.[Rate]
, bl.[Amount]
, fs.UsesModifiers
, CASE WHEN fs.UsesModifiers = 1 THEN rm1.[Code] ELSE NULL END AS [RateModifier1Code]
, CASE WHEN fs.UsesModifiers = 1 THEN rm2.[Code] ELSE NULL END AS [RateModifier2Code]
, CASE WHEN fs.UsesModifiers = 1 THEN rm3.[Code] ELSE NULL END AS [RateModifier3Code]
, CASE WHEN fs.UsesModifiers = 1 THEN rm4.[Code] ELSE NULL END AS [RateModifier4Code]
FROM [Batch] AS b
JOIN [Bill] AS bill ON b.[BatchId] = bill.[BatchId]
JOIN [BillLine] AS bl ON bill.[BillId] = bl.[BillId]
JOIN [Customer] AS fs ON b.[PayerCustomerId] = fs.[CustomerId]
LEFT JOIN [Customer] AS c ON bill.[RecipientCustomerId] = c.[CustomerId]
LEFT JOIN [RecipientIdentifier] AS ri ON b.[PayerCustomerId] = ri.[PayerCustomerId] AND bill.[RecipientCustomerId] = ri.[RecipientCustomerId]
LEFT JOIN [RateModifier] AS rm1 ON bl.[RateModifier1Id] = rm1.[RateModifierId]
LEFT JOIN [RateModifier] AS rm2 ON bl.[RateModifier2Id] = rm1.[RateModifierId]
LEFT JOIN [RateModifier] AS rm3 ON bl.[RateModifier3Id] = rm1.[RateModifierId]
LEFT JOIN [RateModifier] AS rm4 ON bl.[RateModifier4Id] = rm1.[RateModifierId]
WHERE BatchAltId = @BatchAltId
ORDER BY [FundingSource], b.[StartDate], b.[Description], [CustomerName], [BillingCode], [FromDate], [ToDate]