使用 MDX 查询从 ASP.NET API 检索数据
Retrieve data from ASP.NET API by using MDX queries
当我 运行 在 SQL 服务器上进行一些查询时,它会显示结果,但是当我 运行 通过 ASP.NET 进行相同的查询时,我不能获得与 SQL 服务器相同的结果。我能够获取 table 的列名,但无法从这些行中获取数据,因为我的 _dt.Rows.Count
始终为零。
public dynamic GetData(string business, string email)
{
string sConnStr = "...";
string query = "....";
DataTable _dt = new DataTable();
AdomdConnection connection = new AdomdConnection(sConnStr);
connection.Open();
AdomdCommand cmd = new AdomdCommand(query, connection);
var data = cmd.ExecuteReader();
_dt.Load(data);
return _dt.Columns;
}
结果显示
{
"AllowDBNull": true,
"AutoIncrement": false,
"AutoIncrementSeed": 0,
"AutoIncrementStep": 1,
"Caption": ",,,,,,,",
"ColumnName": ",,,,,,,,",
"Prefix": "",
"DataType": "System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"DateTimeMode": 3,
"DefaultValue": null,
"Expression": "",
"ExtendedProperties": {},
"MaxLength": -1,
"Namespace": "",
"Ordinal": 0,
"ReadOnly": true,
"Table": [],
"Unique": false,
"ColumnMapping": 1,
"Site": null,
"Container": null,
"DesignMode": false
},
对所有列都这样。
如何访问 SQL 服务器中显示的数据?
另一个问题是对于某些查询它会抛出异常:
Cannot query internal supporting structures for column '**'[..] because they are not processed. Please refresh or recalculate the table....
seem to same problem that i faced
实现我的结果的最佳方法是什么?谢谢
您可以使用以下代码在 asp.net 中通过 SSAS Cube 获得结果,
public DataTable Execute(string mdxQuery)
{
using (var connection = new AdomdConnection(this.ConnectionString))
{
using (var command = new AdomdCommand(mdxQuery, connection))
{
connection.Open();
using (var dapter = new AdomdDataAdapter(command))
{
var table = new DataTable(connection.Database);
dapter.Fill(table);
return table;
}
}
}
}
我找到答案了
根据我的情况,我的组织没有授予我将查询应用于分析服务的适当权限。
根据我的组织提供的权限级别,我能够通过我的连接字符串连接分析服务,但该权限级别不足以将查询应用于分析服务。
组织更改了我的权限级别,现在上面的代码运行良好
当我 运行 在 SQL 服务器上进行一些查询时,它会显示结果,但是当我 运行 通过 ASP.NET 进行相同的查询时,我不能获得与 SQL 服务器相同的结果。我能够获取 table 的列名,但无法从这些行中获取数据,因为我的 _dt.Rows.Count
始终为零。
public dynamic GetData(string business, string email)
{
string sConnStr = "...";
string query = "....";
DataTable _dt = new DataTable();
AdomdConnection connection = new AdomdConnection(sConnStr);
connection.Open();
AdomdCommand cmd = new AdomdCommand(query, connection);
var data = cmd.ExecuteReader();
_dt.Load(data);
return _dt.Columns;
}
结果显示
{
"AllowDBNull": true,
"AutoIncrement": false,
"AutoIncrementSeed": 0,
"AutoIncrementStep": 1,
"Caption": ",,,,,,,",
"ColumnName": ",,,,,,,,",
"Prefix": "",
"DataType": "System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"DateTimeMode": 3,
"DefaultValue": null,
"Expression": "",
"ExtendedProperties": {},
"MaxLength": -1,
"Namespace": "",
"Ordinal": 0,
"ReadOnly": true,
"Table": [],
"Unique": false,
"ColumnMapping": 1,
"Site": null,
"Container": null,
"DesignMode": false
},
对所有列都这样。
如何访问 SQL 服务器中显示的数据?
另一个问题是对于某些查询它会抛出异常:
Cannot query internal supporting structures for column '**'[..] because they are not processed. Please refresh or recalculate the table....
seem to same problem that i faced
实现我的结果的最佳方法是什么?谢谢
您可以使用以下代码在 asp.net 中通过 SSAS Cube 获得结果,
public DataTable Execute(string mdxQuery)
{
using (var connection = new AdomdConnection(this.ConnectionString))
{
using (var command = new AdomdCommand(mdxQuery, connection))
{
connection.Open();
using (var dapter = new AdomdDataAdapter(command))
{
var table = new DataTable(connection.Database);
dapter.Fill(table);
return table;
}
}
}
}
我找到答案了
根据我的情况,我的组织没有授予我将查询应用于分析服务的适当权限。
根据我的组织提供的权限级别,我能够通过我的连接字符串连接分析服务,但该权限级别不足以将查询应用于分析服务。
组织更改了我的权限级别,现在上面的代码运行良好