[英]SQL Server Reporting Services Cannot Set Data Source Connection String
我们有许多 SSRS 站点,可向不同地点提供报告。 这些服务器中的每一个在每个报告中都有自定义连接(不要问为什么,这个故事太难说了)。 我们的目标是将所有这些自定义数据源替换为每个服务器上所有报告的单个共享数据源。
为此,我创建了一个 C# 程序,该程序将查找每个服务器上的每个报告,并将当前自定义数据源指向当前现有的共享数据源。 这执行并且似乎工作正常。
我的下一个目标是使用 C# 在当前不存在的每个服务器上创建共享数据源。
我目前的困境出现在这里:
private static void CreateSharedDataSource(string user, string password, string connection)
{
DataSourceDefinition source = new DataSourceDefinition();
source.CredentialRetrieval = CredentialRetrievalEnum.Store;
source.ConnectString = connection;
source.Enabled = true;
source.EnabledSpecified = true;
source.Extension = "SQL";
source.ImpersonateUser = false;
source.ImpersonateUserSpecified = false;
source.Prompt = "Enter a user name and password to access the data source:";
source.UserName = user;
source.Password = password;
source.WindowsCredentials = true;
source.OriginalConnectStringExpressionBased = true;
source.UseOriginalConnectString = true;
try
{
service.CreateDataSource("DbDataSource", "/DsFolder", false, source, null);
Console.WriteLine("Data source created successfully");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
数据源创建正确,用户名和密码更新正确。 问题是,当我查看服务器上新创建的数据源时,Connect 字符串属性为空,是的,正确的值在上面的方法中传递给它。 如果我将该值插入服务器上的共享源并测试连接,它可以正常工作,但我无法让 C# 程序自行更新该值。
那么,我错过了一些微妙的东西吗? 我误解了那里的设置吗? 我是否设置了错误的值?
线索赞赏。
我从来没有尝试过这样的事情,但快速的研究发现这可能会有所帮助。
它指出
“共享数据源不支持基于表达式的连接字符串。”
假设连接字符串只是一个纯文本字符串,那么我猜你可以将它设置为 false。 这可能有助于保留您传入的字符串。
好的,找到了我的答案。 我有一个预先存在的数据源可以正常工作,因此我没有从头开始创建它,而是复制了它并且只更改了名称。 这创建了一个数据源,其中 Connect 字符串确实存在。 将其中的设置与我的设置进行比较显示:
source.UseOriginalConnectString = false;
而我的代码是:
source.UseOriginalConnectString = true;
在文档中查找它,它告诉我“如果为 true,则忽略 ConnectString 属性的值。”
嗯……这很直观。 听起来完全不是那样。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.