对于SQL Server实例,要检查Windows用户是否存在并且具有任何访问权限,可以尝试使用各种方法,如here所述。
我正在寻找类似的SQL Server Analysis Services(SSAS)服务器。
我从右键单击上下文菜单进入SSAS服务器的属性,然后在“安全性”选项卡上可以看到已经配置了多个Windows用户:
是否可以通过建立某种测试连接来从客户端应用程序(用C#编写)进行检查,或者SSAS还维护自己的某些元数据数据库,例如SQL Server实例(数据库引擎)中的master
数据库,可以查询该数据库。 。我检查了SSAS服务器中的Databases
节点,但那里没有看到任何默认数据库:
在我正在使用的客户端应用程序中,我使用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/