C #: сначала проверяется доступное соединение DB2 - PullRequest
2 голосов
/ 30 сентября 2010

У меня есть программа на C # .NET, в которой запущен ETL, который подключается к базе данных DB2.Иногда эта база данных не работает, поэтому я хотел бы проверить работоспособность в начале приложения, чтобы увидеть, доступна ли база данных, без фактического вызова каких-либо хранимых процедур или отправки каких-либо данных.Вот пример кода, который я сейчас использую:

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

Каков наилучший способ проверить это соединение, не выдавая никаких данных?

1 Ответ

2 голосов
/ 30 сентября 2010

Вы можете просто выполнить какой-нибудь неточный запрос на выборку, чтобы проверить, доступна ли БД.

Вы можете попробовать сделать что-то простое:

Select 1

или

Select getdate()

Эти простые запросы даже не затрагивают таблицы, а возвращаются только в том случае, если запущена rdbms.

Примечание: эти примеры предназначены для сервера sql, но могут работать и для db2.Мне еще не приходилось делать живую проверку на db2, хотя подобная концепция должна быть выполнимой.

Примечание 2: после более внимательного изучения кода все, что вам действительно нужно / нужно сделать, это проверитьдля успешного вызова .Open () вашего соединения odbc.

...