VBA列出SQL Server Analysis Server中的所有多维数据集

问题描述 投票:-1回答:1

我有2台SQL Server分析服务器。在这两台服务器上,是用户根据自己的工作簿中所需的多维数据集选择的数据库。

我需要创建一个用户表单,该表单(1)允许用户选择2台服务器中的1台,并且(2)显示(1)中选择的服务器上每个可用数据库的下拉框。

我已经为(1)创建了功能并为(2)设计了格式,但是我不知道如何获取可用数据库的列表。

[我认为我需要遵循的步骤是,在vba中,连接到指定的服务器,然后执行一些“ Select ... From ...”查询以获取每个数据库名称。

连接是OLEDB,连接字符串的示例是:

.OLEDBConnection.Connection = Array( _
    "OLEDB;Provider=MSOLAP.8;Integrated Security=SSPI;Persist Security Info=True;
      Initial Catalog=" & **database** & "; Data Source=" & **server** & _
    ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2")

服务器由用户指定,数据库将由用户通过我们将创建的下拉框选择。

我看了这篇文章Using VBA in Excel, how do I get the names of all OLAP Cubes on a server?,但我似乎无法出于自己的目的操纵它。

感谢您的所有帮助!

*更新*我能够将其与以下代码一起使用:

Dim conn As ADODB.Connection
Dim sConnString As String
sConnString = "Provider=MSOLAP.8;Integrated Security=SSPI;Persist Security Info=True;Data Source=" & Cube_Server_Options.Value & ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
Set conn = New ADODB.Connection
conn.Open sConnString


Set rst = New ADODB.Recordset
Set rst.ActiveConnection = conn
rst.Source = "SELECT [catalog_name] FROM $system.DBSCHEMA_CATALOGS"
rst.Open
Do While Not rst.EOF

  rst.MoveNext
Loop
rst.Close

Set conn = Nothing
Set rst = Nothing
excel vba mdx cube olap-cube
1个回答
0
投票
Dim conn As ADODB.Connection
Dim sConnString As String
sConnString = "Provider=MSOLAP.8;Integrated Security=SSPI;Persist Security Info=True;Data Source=" & Cube_Server_Options.Value & ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
Set conn = New ADODB.Connection
conn.Open sConnString


Set rst = New ADODB.Recordset
Set rst.ActiveConnection = conn
rst.Source = "SELECT [catalog_name] FROM $system.DBSCHEMA_CATALOGS"
rst.Open
Do While Not rst.EOF

  rst.MoveNext
Loop
rst.Close

Set conn = Nothing
Set rst = Nothing

请注意,此连接字符串特定于我的示例,但是连接到服务器并遍历数据库的逻辑有效

© www.soinside.com 2019 - 2024. All rights reserved.