如何使用 C# 在 SSAS 中测试与数据源的连接

Posted

技术标签:

【中文标题】如何使用 C# 在 SSAS 中测试与数据源的连接【英文标题】:How to test connection to a data source in SSAS using C# 【发布时间】:2012-09-24 10:45:25 【问题描述】:

我在远程服务器上的 Analysis Services 中有一个数据库。这包含位于另一个远程服务器上的另一个数据库的数据源。

我正在尝试使用 C# 编写一个连接测试,它将检查两个数据库之间的数据库连接。

我无法使用 ADOMD.NET 做到这一点。我目前正在考虑使用 SMO 来执行此操作,但到目前为止我还没有运气。

如果有任何意见或建议,我将不胜感激。

更新: 经过进一步研究,我提出了以下测试(请注意,我打算稍后添加更多 try..catch 块和断言)。

此外,这使用 C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.AnalysisServices.DLL 来访问服务器、数据库和 数据源类。

class ConnectivityTests

    // Variables
    String serverName = "";
    String databaseName = "";
    String dataSourceName = "";

    [Test]
    public void TestDataSourceConnection()
    
        // Creates an instance of the Server
        Server server = new Server();
        server.Connect(serverName);

        // Gets the Database from the Server
        Database database = server.Databases[databaseName];

        // Get the DataSource from the Database
        DataSource dataSource = database.DataSources.FindByName(dataSourceName);

        // Attempt to open a connection to the dataSource.  Fail test if unsuccessful
        OleDbConnection connection = new OleDbConnection(dataSource.ConnectionString);
        try
        
            connection.Open();
        
        catch (OleDbException e)
        
            Assert.Fail(e.ToString());
        
        finally
        
            connection.Close();
        

    

我相信这个测试对于我的测试来说已经足够了(一旦我添加了一些 try..catch 块和断言)。如果测试通过,则意味着我的机器和两台服务器之间没有连接问题,这意味着服务器之间不应该有任何连接问题。

但是,我一直无法弄清楚如何直接测试两台服务器之间的连接,如果有人知道这样做的方法,我很感兴趣。

【问题讨论】:

似乎是什么问题?您的代码与我在测试某些连接问题时使用的代码非常相似。目前我正在使用 Microsoft.AnalysisServices.AdomdClient 中的 AdomdConnection,但我也使用了您正在使用的 Server 类。 @AnttiSimonen 我添加的代码工作正常。它测试我的机器和 DBServer 以及我的机器和数据仓库之间的连接性。我感兴趣的是是否有一种方法可以测试 DBServer 和数据仓库之间的连接。我认为这实际上是不可能的(不将文件放在 DBServer 上)。 @AnttiSimonen 我很高兴看到其他人正在使用类似的方法测试连接问题。谢谢! 【参考方案1】:

我在进行此连接测试时遇到的最佳解决方案如下: 请注意,这需要添加 Microsoft.AnalysisServices.DLL 作为参考。

class ConnectivityTests

    // Variables
    String serverName = "";
    String databaseName = "";
    String dataSourceName = "";

    [Test]
    public void TestDataSourceConnection()
    
        try
        

            // Creates an instance of the Server
            Server server = new Server();
            server.Connect(serverName);

            // Gets the Database from the Server
            Database database = server.Databases[databaseName];

            // Get the DataSource from the Database
            DataSource dataSource = database.DataSources.FindByName(dataSourceName);

            // Attempt to open a connection to the dataSource.  Fail test if unsuccessful
            OleDbConnection connection = new OleDbConnection(dataSource.ConnectionString);

            connection.Open();
        
        catch (Exception e)
        
            Assert.Fail(e.ToString());
        
        finally
        
            connection.Close();
        

     

【讨论】:

当 AS 在我的本地 SQL 实例中时它适用于我。但是,如果要连接到远程 sql server 中部署的 SSAS 怎么办?这是我的远程服务器名称:OLAPServer.Connect("serverIP:Port\\instanceName");

以上是关于如何使用 C# 在 SSAS 中测试与数据源的连接的主要内容,如果未能解决你的问题,请参考以下文章

如何定义维度在 ssas 中使用的连接

SSAS 多维数据集 Excel 数据透视表隐藏字段

如何避免更改 SSAS 角色的 Excel 连接字符串

无法使用 c# 获取特定于 SSAS 的性能计数器类别

来自 Python 的 SSAS 连接

如何执行与 SSAS 多维数据集在红移上的相同机制?