- PR -

SQLServer2000とVB6.0によるDB間データコピーでアクセス拒否→解決済

1
投稿者投稿内容
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2007-12-26 14:12
いつもお世話になっております。

SQLServer2000の同一サーバ内で、あるデータベースのテーブルから別のデータベースのテーブルへデータを単純に全コピーする処理を、VB6.0のADOのレコードセットを使用して行っております。
ところが、6万件中約4千行コピーしたところで以下のメッセージを出力し異常終了してしまいます。

エラーメッセージ:-2147467259 [DBNETLIB][ConnectionOpen(connect0).]SQL Serverが存在しないか、アクセスが拒否されました。

何回やっても約4千行コピー(数は一定ではない)すると失敗してしまいます。
●同じデータを別のサーバへもっていって同じEXEで実行したところ正常終了しました。
●また、該当サーバがあるマシンとは別のマシンへEXEを持っていって宛先を該当サーバにして実行したところ正常終了しました。
●さらに、レコードセットはリアルタイム更新で行っておりますが、これをバッチ更新にしたところ正常終了しました。

○Windowsのファイアウォールは無効にしています。
○コネクションのCommandTimeout値は0(無制限)にしています。

環境は以下の通りです。
OS:WindowsServer2003SP1
VB:VB6.0EnterpriseEditionSP6
SQLServer:SQLServer2000SP4

同じ事象に合われた方や原因をご存知の方いらっしゃいましたら、
宜しくお願い致します。

[ メッセージ編集済み 編集者: 檸檬 編集日時 2007-12-26 14:59 ]

[ メッセージ編集済み 編集者: 檸檬 編集日時 2008-02-25 10:06 ]
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2008-02-20 16:11
ConnectionTimeoutプロパティをデフォルトの15秒から、600秒に変更したところつっかえつっかえで時間がかかりますが全てコピーできるようになりました。
どうやら、カーソルでのコピー中に接続が途切れて再度コネクションオープン処理が走っているようなのですが、このような事象にお心あたりがあおりの方いらっしゃいましたら宜しくご教授願います。宜しくお願いします。
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2008-02-25 10:04
すいません、解決しました。
原因はSQLクライアント設定ユーティリティにおいて、『別名』が定義してあり(本名と同じ別名が定義してあった)、その接続プロトコルが『TCP/IP』であったためUPDATE文発行のたびに新しいポート番号で通信し、ポート番号の空きがなくなりポートの解放を待つため、コピー処理が中断/失敗してしまっていたようです。

ご迷惑お掛けして大変申し訳ありませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)