在AlwaysOn环境中设置Crystal Report的只读访问权限
我有两个负载均衡的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
?不幸的是我还没有发现这个还没有,但悬而未决的问题的答案:
不幸的是我没有找到一种方法,使用该标志ApplicationIntent=ReadOnly
在我贴出的代码片段。
我最终做了什么:
而不是使用负载平衡器IP地址(或主机名),我直接使用报告服务器的IP地址。 我无法找到任何书面文件,无论是否可以使用ApplicationIntent=ReadOnly
。
这就是我在我身边所做的。智能地更改连接字符串中的只读ServerName。 –
而不是使用ConnectionInfo,您可以使用System.Data.SqlClient.SqlConnectionStringBuilder,它具有可设置的ApplicationIntent属性。
将'userID'的权限设置为只读在数据库服务器上怎么办? – dd4711