Как получить учетные данные источника данных SSRS и открыть соединение SQL в .NET - PullRequest
2 голосов
/ 03 марта 2009

Я использую интерфейс ASP.Net и C # для запуска некоторых отчетов. Я хочу открыть соединение SQL с источником данных, используемым в отчете.

Когда в отчете используется встроенная защита, создать соединение достаточно просто, однако я хочу создать соединение, когда имя пользователя и пароль хранятся на сервере отчетов.

Я могу получить путь к SQL Server и исходный каталог, используя

    DataSource[] dataSources;
    DataSourceReference dsReference;
    DataSourceDefinition dsDefinition;
    string dsPath;
    ReportingService2005 rs = new ReportingService2005();

    dataSources = rs.GetItemDataSources(reportPath);
    if (dataSources.Length > 0)
    {
        dsReference = (DataSourceReference)dataSources[0].Item;
        dsPath = dsReference.Reference;
        dsDefinition = rs.GetDataSourceContents(dsPath);
        // ....
    }

Я также могу получить имя пользователя, используя

    username = dsDefinition.UserName;

однако, если я использую

    password = dsDefinition.Password;

password = null и не может использоваться для открытия Sql-соединения.

Есть ли способ создать SQLConnection, который использует строку подключения и учетные данные имени пользователя и пароля источника данных?

Я использую Reporting Services 2008 и .NET 3.5 с веб-ссылками на ReportService2005.asmx и ReportExecution2005.asmx

Ответы [ 2 ]

2 голосов
/ 03 марта 2009

Я действительно не думаю, что это возможно, так как это в значительной степени представляет собой дыру в безопасности. Я знаю, что это не тот ответ, который вы ищете, но я бы параметризировал расположение ваших отчетов (то есть IP / имя вашего сервера MSRS) и сохранял их в вашем web.config вместе с соответствующим экземпляром SQL. Хотя это не совсем то, что вам нужно, я думаю, это примерно так же близко, как вы собираетесь.

1 голос
/ 14 июля 2009

Я думаю, вы должны прочитать эту страницу: http://msdn.microsoft.com/en-us/library/reportservice2005.datasourcedefinition_properties.aspx

показывает, что поле пароля доступно только для записи, поэтому вы не можете установить его значение, но только для чтения.

...