我构建了一个Web应用程序(c#ASP.Net 4.0)。在此应用程序中,我想连接到SSAS多维数据集(SQL Server 2017)
using (AdomdConnection connection = new AdomdConnection(connectionString))
{
AdomdCommand command = new AdomdCommand(query, connection)
{
CommandTimeout = connection.ConnectionTimeout
};
AdomdDataAdapter mdAdapter = new AdomdDataAdapter(command);
connection.Open();
result = (CellSet)command.Execute();
connection.Close();
}
如果我在本地开发计算机上启动该应用程序,则连接正常。当我将应用程序部署到IIS(版本6.2 / Server 2012 R2)并浏览到站点时,出现此错误。
消息:无法从传输连接中读取数据:An 现有连接被远程主机强行关闭。
我使用Web服务器上的SQL Management-Studio检查了连接。我在DB主机上使用本地Windows用户登录SSAS。 一切正常(连接,MDX)。
我的连接字符串:
<add name="MyConnection" connectionString="Provider=MSOLAP;Persist Security Info=True;Update Isolation Level=2;User ID= XXX ;Password= XX;Data Source= My DB-HOST:SSAS-Port;Catalog=My SSAS-CUBE;"/>
也许您有任何想法,除了这个问题,我如何获得更多信息?
Thx, 问候 托马斯
答案 0 :(得分:1)
connectionString =“ Provider = MSOLAP;持久安全信息=正确;更新隔离级别= 2;用户ID = XXX;密码= XX;数据源=我的DB-HOST:SSAS端口;目录=我的SSAS-CUBE; “
SSAS仅支持Windows Integrated Auth(或通过数据泵的HTTP Basic)。因此,您可以从连接字符串中删除“用户ID”和“密码”,并授予IIS应用程序池标识对多维数据集的访问权限(假设您没有在模拟)。如果您是模拟用户,除非SSAS与IIS在同一服务器上运行,否则您将需要使Kerberos约束委派正常工作。
如果您对应用程序池使用任何本地自动标识,则将使用计算机帐户来授予对远程资源的访问权限。因此,如果您的IIS服务器名为MyDomain \ MyServer,则授予对MyDomain \ MyServer $的访问权限。