Вы используете Enterprise Edition? Если это так, вы можете создать подписку на основе данных. Вам нужно будет настроить таблицу с 150 строками в ней, по крайней мере, с тремя столбцами, представляющими каждый параметр. Для гибкости я бы добавил столбец для формата рендеринга (EXCEL) и для целевой папки. Затем вы можете создать одну подписку.
В противном случае, если у вас есть только стандартная версия, ваш единственный выбор - создать 150 подписчиков. В этом случае я был бы склонен писать сценарий для использования с RS.EXE для создания 150 подписчиков.
Вот пример сценария, который создает файл Excel. Я перечитываю ваше сообщение и решил, что вам действительно не нужен аспект подписки. Вам просто нужно отобразить отчет, а затем запланировать его, просто создайте командный файл для командной строки и запланируйте его с помощью агента SQL Server.
Этот код взят из образца при http://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.render(v=sql.100).aspx#Y1258
Вы печатаете это с помощью блокнота, а затем сохраните файл как renderExcel.rss. Расширение файла важно - не сохраняйте его как txt-файл. Конечно, измените путь к файлу, имена параметров и значения. Я просто попросил их выполнить на моей машине dev и убедиться, что это действительно работает!
Public Sub Main()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Render arguments
Dim result As Byte() = Nothing
Dim reportPath As String = "/Sales/Reseller Sales Cumulative Sales"
Dim format As String = "EXCEL"
Dim historyID As String = Nothing
Dim devInfo As String = Nothing
' Prepare report parameter.
Dim parameters(2) As ParameterValue
parameters(0) = New ParameterValue()
parameters(0).Name = "SalesTerritoryGroup"
parameters(0).Value = "Europe"
parameters(1) = New ParameterValue()
parameters(1).Name = "Year"
parameters(1).Value = "2007"
parameters(2) = New ParameterValue()
parameters(2).Name = "Quarter"
parameters(2).Value = "1"
Dim credentials As DataSourceCredentials() = Nothing
Dim showHideToggle As String = Nothing
Dim encoding As String
Dim mimeType As String
Dim warnings As Warning() = Nothing
Dim reportHistoryParameters As ParameterValue() = Nothing
Dim streamIDs As String() = Nothing
Dim execInfo As New ExecutionInfo
Dim execHeader As New ExecutionHeader()
Dim SessionId As String
Dim extension As String = ""
rs.ExecutionHeaderValue = execHeader
execInfo = rs.LoadReport(reportPath, historyID)
rs.SetExecutionParameters(parameters, "en-us")
SessionId = rs.ExecutionHeaderValue.ExecutionID
Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID)
Try
result = rs.Render(format, devInfo, extension, _
encoding, mimeType, warnings, streamIDs)
Catch e As SoapException
Console.WriteLine(e.Detail.OuterXml)
End Try
' Write the contents of the report to an Excel file.
Try
Dim stream As FileStream = File.Create("myReport.xls", result.Length)
Console.WriteLine("File created.")
stream.Write(result, 0, result.Length)
Console.WriteLine("Result written to the file.")
stream.Close()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Чтобы выполнить это, вам нужно запустить в командной строке:
rs -i renderExcel.rss -s http://localhost/reportserver -e Exec2005
Этот код создает только один файл. Вам нужно добавить путь к нему, чтобы установить параметры для каждой комбинации параметров, а затем визуализировать.
Спасибо Stacia. У меня нет корпоративного издания. Можете ли вы сделать образец сценария для меня, который отображает отчет, чтобы выбрать специальный параметр? – user1443202
Я могу - но это будет несколько дней. Сейчас я под ружьем. – Stacia
Несомненно, без проблем я ценю вашу помощь. – user1443202