Cod*_*ody 6 c# ssas tcp ssas-tabular
微软说:
“当通过 TCP 连接到 SSAS 时,客户端库将使用指定的用户名和密码模拟 Windows 用户,然后照常连接到服务器。”
“通过 HTTP(S) 连接到 SSAS 时,凭据将根据 Web 服务器上配置的身份验证模式(例如基本身份验证或 Windows 身份验证)提供给 Web 服务器。Web 服务器将在连接到之前执行适当的 Windows 模拟SSAS 服务器,因此向服务器提供正确的凭据流。”
但是,当我这样做时:
using Tabular = Microsoft.AnalysisServices.Tabular;
using (Tabular.Server server = new Tabular.Server())
{
//connectionString = "Provider=MSOLAP;DataSource=ServerIP;UserID=xx;Password=xx;Persist Security Info=True;Impersonation Level=Impersonate;"
server.Connect(connectionString);
}
Run Code Online (Sandbox Code Playgroud)
它使用运行代码的用户帐户的凭据,而不是 ConnectionString 中的用户 ID 和密码。
我怎样才能让它通过“TCP”连接?
更新:使用@GregGalloway 的建议和这里的逻辑:我已经实现了一个 Impersonator 类。我用它更新了我的代码以执行以下操作:
using (Tabular.Server server = new Tabular.Server())
{
using (new Impersonator("UserName", "Domain", "Password"))
{
server.Connect(connectionString);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我分析对 SSAS 服务器的调用时,我可以看到它仍然使用与以前相同的凭据,并且无论传递给构造函数的任何凭据如何,与服务器的连接都会成功。单步查看代码,我可以看到在任何时候都没有抛出异常。