[英]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.