c# - 如何检查Windows用户是否可以通过模拟访问(Windows集成安全性身份验证)SQL Server Analysis Services(SSAS)服务器

标签 c# sql-server ssas impersonation adomd.net

对于SQL Server实例,要检查Windows用户是否存在并且具有任何访问权限,可以尝试使用各种方法,如here所述。

我正在寻找类似的SQL Server Analysis Services(SSAS)服务器。

我从右键单击上下文菜单进入SSAS服务器的属性,然后在“安全性”选项卡上可以看到已经配置了多个Windows用户:

enter image description here

是否可以通过建立某种测试连接来从客户端应用程序(用C#编写)进行检查,或者SSAS还维护自己的某些元数据数据库,例如SQL Server实例(数据库引擎)中的master数据库,可以查询该数据库。 。我检查了SSAS服务器中的Databases节点,但那里没有看到任何默认数据库:

enter image description here

在我正在使用的客户端应用程序中,我使用Windows用户名和密码作为输入。在我的客户端应用程序中,有一个带有两个文本框的简单winform,用于输入需要连接到SSAS服务器的AD用户名和密码。我的直觉是,密码在这里无关紧要,因为SSAS仅支持Windows集成身份验证模式。我的客户端应用程序将在一个已经可以访问我尝试连接的SSAS服务器的帐户下运行。

更新:从@Vaishali获得帮助之后,我能够弄清楚可以使用ADOMD.Net建立到SSAS服务器的测试连接。

现在,这里的问题在于,连接字符串隐式地使用了我正在运行客户端应用程序的用户的AD帐户来连接到SSAS服务器。我认为在使用Windows集成身份验证时,不可能在ADOMD.Net connection strings中明确提及Windows AD帐户的用户名和密码。甚至SQL Server的连接字符串也不允许在here中提到的连接字符串中明确提及Windows用户名和密码。

更新2:我从一位朋友那里得到了线索,可以在SSAS上触发一些MDX查询以获取用户访问详细信息。

更新3:SSAS服务器仅支持Windows集成安全性身份验证模式,这与SQL Server DB引擎不同,后者也支持基于用户标识密码的SQL身份验证。因此,将需要某种形式的模拟来代表其他用户触发MDX查询,而我正尝试通过此用户检查仅通过Windows Integrated Security在SSAS服务器上的访问权限。

最佳答案

如果要检查用户是否具有对SSAS服务器的可访问性,可以尝试使用C#的一种方法是:尝试使用给定的用户凭据连接SSAS,如果成功,则可以访问。

如果您正在寻找映射到各个多维数据集数据库的角色和安全性,则以下链接将非常有用。

http://www.lucasnotes.com/2012/09/list-ssas-user-roles-using-powershell.html#comment-form

C#代码行:

导入库Microsoft.AnalysisServices.AdomdClient;
和代码行将是:

      DataSet ds = new DataSet();
          AdomdConnection myconnect = new AdomdConnection(@"provider=olap;datasource=.\SQL20f12");
          AdomdDataAdapter mycommand = new AdomdDataAdapter();
          mycommand.SelectCommand = new AdomdCommand();
          mycommand.SelectCommand.Connection = myconnect;

          try
          {
              myconnect.Open(); 
          }
          catch 
          { 
              MessageBox.Show("error in connection");
          }                    


希望这对您有用。

关于c# - 如何检查Windows用户是否可以通过模拟访问(Windows集成安全性身份验证)SQL Server Analysis Services(SSAS)服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44842160/

相关文章:

c# - MVC 4 为什么我必须在服务器上而不是本地序列化?

c# - 如何使用 string.contains 查找分隔/隔离的子字符串?

.net - Microsoft.AnalysisServices.dll 在哪里

sql-server - 将某些(任何)类型的上下文信息从 SSAS 连接字符串传递到基础数据库

c# - 随机数生成库

c# - 处理文本框中的 Shift-Enter 事件

javascript - JSP:插入不起作用 (SQLSERVER)

SQL Server 读取带有外键的列时出现问题

SQL Agent 显示 "SQL Agent XPs Disabled"但它们不是

SSAS 分区,多少太多了