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