4

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

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

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

我将不胜感激任何意见或建议。

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

此外,它使用C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.AnalysisServices.DLL来访问 Server、Database 和 DataSource 类。

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 块和断言)。如果测试通过,这意味着我的机器和两台服务器之间没有连接问题,这意味着服务器之间不应该有任何连接问题。

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

4

1 回答 1

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

     }
}
于 2012-10-02T10:31:35.770 回答