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);
        }

感谢您的任何建议、反馈或回答!

Mono为Microsoft Analysis服务器开发Microsoft身份验证

您可以尝试使用关系型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服务器身份验证来访问关系数据库。