4

リモート サーバー上の Analysis Services にデータベースがあります。これには、別のリモート サーバーにある別のデータベースのデータ ソースが含まれています。

C# を使用して、2 つのデータベース間のデータベース接続をチェックする接続テストを作成しようとしています。

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 ブロックとアサーションを追加したら)。テストに合格した場合、私のマシンと両方のサーバーの間に接続の問題がないことを意味します。これは、サーバー間に接続の問題がないことを意味します。

ただし、2 つのサーバー間の接続を直接テストする方法を見つけることができませんでした。誰かがこれを行う方法を知っているかどうかに興味があります。

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 に答える