Mono为Microsoft Analysis服务器开发Microsoft身份验证
本文关键字:Microsoft 开发 身份验证 服务器 Analysis Mono | 更新日期: 2023-09-27 18:27:42
在我的研究中,我需要能够使用Unity游戏引擎查询Microsoft分析服务器(2012)数据立方体 对于连接,需要Microsoft身份验证,而Unity正在使用Mono-Develop库进行SQL连接,这给我带来了问题。到目前为止,我还没有找到Mono能够使用Microsoft身份验证的解决方案。
我想找到一种在客户的域内使用windows身份验证的好方法。由于最终应用程序必须能够连接到数据多维数据集,因此最好使用连接字符串。
使用IIS服务器(允许使用SOAP进行HTTP连接)的数据多维数据集并不总是可用的,这取决于客户设置。此外,在多个平台上构建应用程序的愿望使添加自定义库变得困难,如果有自定义库可用于此请求,因为我还找不到。
我目前不太幸运的选择是:
- 使用visualstudio构建一个额外的windows应用程序,查询数据并将其解析为Unity(但需要额外的应用程序运行)
- 将http SOAP连接与IIS服务一起使用(但需要使用IIS设置分析服务器,这并不总是可能的,具体取决于客户)
- 找到一个允许我使用Microsoft身份验证的库(但可能仅适用于windows平台,或不适用于Unity)
我希望有人已经找到或可能知道一个适用于Unity的好解决方案,而不会给出我上面提到的限制。
我正在使用Microsoft.AnalysisServices.AdomdClient;visualstudio可以很好地构建visualstudio,但不能在mono-development-in-unity中工作。
try
{
using (AdomdConnection adcon = new AdomdConnection(connectionString))
{
adcon.Open();
using (AdomdCommand adcmd = adcon.CreateCommand())
{
adcmd.CommandText = textBox3.Text.ToString();
AdomdDataReader dr = adcmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
textBox2.AppendText(dr[i] + (i == dr.FieldCount - 1 ? "" : ", ") + Environment.NewLine);
}
dr.Close();
textBox2.AppendText(adcmd.CommandText.ToString() + Environment.NewLine + Environment.NewLine);
adcmd.Connection.Close();
}
adcon.Close();
}
}
catch(Exception e)
{
textBox2.AppendText(e.ToString() + Environment.NewLine);
}
感谢您的任何建议、反馈或回答!
您可以尝试使用关系型SQL Server引擎作为一种代理。只要Analysis Services可用,关系SQL Server引擎就应该可用。
您可以在关系SQL server中设置一个链接服务器,该服务器使用Analysis Services OLEDB客户端链接到Analysis Services服务器。此处介绍如何设置链接服务器。
然后,您可以将MDX发送到这个链接的服务器,并在关系引擎中返回结果,如下所示:
select * from openquery(AdventureWorksOLAP,
'select [Measures].[Sales Amount] on columns from [Adventure Works]')
其中AdventureWorksOLAP
是链接服务器的名称。
但是,您应该注意,列名很奇怪(包含右方括号,需要通过加倍将其转义在包含列名的方括号内)。例如,上面的查询将有一个列,您必须将其作为[[Measures]].[Sales Amount]]]
访问。此外,所有单元格值都返回为nvarchar
,可能需要强制转换为数字类型才能使用它们。
也许您可以将列名更改和列类型转换封装到一个存储过程中。
您还可以使用SQL服务器身份验证来访问关系数据库。