如何使用 ConnectionString 中提供的凭据连接到表格多维数据集服务器?

问题描述 投票:0回答:2

微软说:

https://learn.microsoft.com/en-us/analysis-services/instances/connection-string-properties-analysis-services?view=asallproducts-allversions

“通过 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);
 }

它使用运行代码的用户帐户的凭据,而不是 ConnectionString 中的用户 ID 和密码。

如何让它通过“TCP”连接?

更新: 使用 @GregGalloway 的建议和here的逻辑:我已经实现了一个 Impersonator 类。我用它更新了我的代码以执行以下操作:

using (Tabular.Server server = new Tabular.Server())
{
     using (new Impersonator("UserName", "Domain", "Password"))
     {
           server.Connect(connectionString);
     }
}

不幸的是,当我分析对 SSAS 服务器的调用时,我可以看到它仍然使用与以前相同的凭据,并且无论传递给构造函数的任何凭据如何,与服务器的连接都会成功。单步查看代码,我可以看到在任何时候都没有抛出异常。

c# tcp ssas ssas-tabular
2个回答
0
投票

这里的关键是使用正确的库

与直觉相反,不要使用 Microsoft.AnalysisServices.Tabular 库

您需要根据您的代码库使用这些库。 对于 .NET Core,我们需要安装这两个库:

Microsoft.AnalysisServices.NetCore.retail.amd64

Microsoft.AnalysisServices.AdomdClient.NetCore.retail.amd64

对于 .NET Framework 这两个库:

Microsoft.AnalysisServices.retail.amd64

Microsoft.AnalysisServices.AdomdClient.retail.amd64

这些库的代码在这里 https://learn.microsoft.com/en-us/analysis-services/tom/tom-pbi-datasets?view=asallproducts-allversions#add-the-connection-string 应该可以。


-1
投票

如果您的应用程序或网络应用程序尚未在这些凭据下运行,那么您需要在连接之前在代码中模拟该身份。这是一个示例

© www.soinside.com 2019 - 2024. All rights reserved.