如何使用 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 中测试与数据源的连接的主要内容,如果未能解决你的问题,请参考以下文章