2017-07-26 79 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属性。