2017-07-26 81 views
5

我有兩個負載均衡的SQL服務器 - AlwaysOn。只有這些服務器中的第二個應該用於水晶報告。我想用readOnly標誌在連接字符串中訪問第二個SQL服務器:ApplicationIntent=ReadOnly在AlwaysOn環境中設置Crystal Report的只讀訪問權限

在我的C#類我基於ConnectionInfo()

var myConnectionInfo = new ConnectionInfo(); 

Tables myTables = reportDocument.Database.Tables; 

for (int i = 0; i < myTables.Count; i++) 
{ 
    var myTable = myTables[i]; 
    var myTableLogonInfo = myTable.LogOnInfo; 
    myConnectionInfo.ServerName = 'serverName'; 
    myConnectionInfo.DatabaseName = 'databaseName'; 
    myConnectionInfo.UserID = 'userId'; 
    myConnectionInfo.Password = 'password'; 
    myTableLogonInfo.ConnectionInfo = myConnectionInfo; 
    myTable.ApplyLogOnInfo(myTableLogonInfo); 
} 

運行水晶報表我還沒有找到一種方法儘管設置爲ApplicationIntent=ReadOnly。這應該是設置myConnectionInfo.Attributes?不幸的是我還沒有發現這個還沒有,但懸而未決的問題的答案:

+0

將'userID'的權限設置爲只讀在數據庫服務器上怎麼辦? – dd4711

回答

1

不幸的是我沒有找到一種方法,使用該標誌ApplicationIntent=ReadOnly在我貼出的代碼片段。

我最終做了什麼:
而不是使用負載平衡器IP地址(或主機名),我直接使用報告服務器的IP地址。 我無法找到任何書面文件,無論是否可以使用ApplicationIntent=ReadOnly

+1

這就是我在我身邊所做的。智能地更改連接字符串中的只讀ServerName。 –

0

而不是使用ConnectionInfo,您可以使用System.Data.SqlClient.SqlConnectionStringBuilder,它具有可設置的ApplicationIntent屬性。