2010-09-29 4 views
2

J'ai un programme C# .NET exécutant un ETL qui se connecte à une base de données DB2. Parfois, cette base de données est en panne, donc je voudrais faire un bilan de santé au début de l'application pour voir si la base de données est disponible, sans réellement appeler les procédures stockées ou en poussant des données. Voici un exemple du code que je utilise maintenant:C#: DB2 test connexion disponible d'abord

OdbcConnection myODBCConnection = new OdbcConnection("DSN=DB2AA;UID=ABCD;PWD=1234;"); 
OdbcCommand myODBCCommand = new OdbcCommand(); 
myODBCCommand.CommandType = CommandType.StoredProcedure; 
myODBCCommand.CommandText = "{CALL SYSPROC.ABC001(?, ?)}"; 
myODBCCommand.Parameters.Add("INPUT", OdbcType.VarChar, 500); 
myODBCCommand.Parameters["INPUT"] = myString 

myODBCCommand.Connection = myODBCConnection 
myODBCConnection.Open(); 

OdbcTransaction myTrans; 
myTrans = myODBCConnection.BeginTransaction(); 
myODBCCommand.Transaction = myTrans; 
myTrans.Commit(); 
myODBCCommand.ExecuteNonQuery(); 
myODBCConnection.Close(); 

Quelle est la meilleure façon de tester cette connexion sans pousser réellement les données?

Répondre

2

Vous pouvez simplement exécuter une requête select innoccuous pour vérifier si la base de données est disponible.

Vous pouvez essayer de faire quelque chose d'aussi simple que:

Select 1 

Ou

Select getdate() 

Ces requêtes simples ne touchent même pas de table, mais ne retourneront que si le SGBDR est en cours d'exécution.

Remarque: ces exemples concernent le serveur sql mais peuvent fonctionner avec db2. Je n'ai pas eu à faire une vérification en direct sur un db2 mais le concept similaire devrait être faisable.

Note 2: après avoir regardé de plus près votre code, tout ce que vous devriez vraiment avoir à faire est de vérifier le succès de l'appel .Open() de votre connexion odbc.