Обновление DataConnection служб отчетов SQL - PullRequest
2 голосов
/ 14 октября 2008

Можно ли изменить строку подключения опубликованного отчета служб отчетов SQL? Я вижу двоичное поле DataSource в базе данных ReportServer, но, поскольку оно хранится в двоичном формате, я не думаю, что его легко обновить.

Нужно ли повторно публиковать отчет с правильным источником данных? Я надеюсь, что нет, так как я не хочу устанавливать VS2003.

РЕДАКТИРОВАТЬ: на клиенте запущены службы отчетов SQL Server 2000 со всеми установленными пакетами обновления.

1 Ответ

1 голос
/ 17 октября 2008

SQL Reporting Services 2000 имеет [веб-сервис] (http://msdn.microsoft.com/en-us/library/aa274396(SQL.80).aspx)), который можно использовать для изменения источника данных. Учитывая это, следующее позволяет изменять источник данных на общий источник данных. был [адаптирован из MSDN] (http://msdn.microsoft.com/en-us/library/aa225896(SQL.80).aspx).

// Create our reporting services class
ReportingService theRS = new ReportingService();
theRS.Credentials = System.Net.CredentialCache.DefaultCredentials;

// We need to setup a data source reference to an existing shared data source
DataSourceReference theDSRef = new DataSourceReference();
theDSRef.Reference = "/Path/To/ExistingSharedDataSource";
DataSource[] theDSArray = new DataSource[1];
DataSource theDS = new DataSource();
theDS.Item = (DataSourceReference)theDSRef;
theDS.Name = "NameOfSharedDataSource";
theDSArray[0] = theDS;

try
{
    // Attempt to change the data source of the report
    theRS.SetReportDataSources("/Path/To/ReportName", theDSArray);
    Console.Out.WriteLine("We have changed the data source");
}
catch (System.Web.Services.Protocols.SoapException e)
{
    Console.Out.WriteLine(e.Message);
    Console.Out.WriteLine(e.Detail.InnerXml.ToString());
}

В этом примере класс ReportingService взят из класса Proxy, сгенерированного мной для общения с веб-службой, который описан [здесь] (http://msdn.microsoft.com/en-us/library/aa256607(SQL.80).aspx).

Надеюсь, это поможет некоторым. Дайте мне знать, если вы ищете что-то другое.

...