
AccessアプリでSQL Serverデータベースを更新しています。
データベースをODBCデータソースとして登録して、AccessdeそのODBCデータソースへのリンクテーブルを作っています。
データベースが何回か壊れたのですが、AccessVBAから発行したリンクテーブルへのSQLクエリでデータベースが壊れるようなことはあるんでしょうか?
あるとしたら、そのクエリを発行すると必ず壊れると思うんですが・・・。
同じAccessアプリを使っても、データベースが壊れない環境もありますし・・・。
データベースが壊れた原因がわからなくて困っています。
Windows 7、SQL Server 2008 R2 Express です。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
他の方も書いてるようにSQLを書かないとわかりませんよ。
>パススルークエリで、INSERT/UPDATE/DELETEするという意味です。
疑問だらけですが、これをVBAでするにはその都度CreateQueryDefでクエリをAppendする必要があると思います。なぜそんな面倒なことをするのでしょうか? 直に発行しない理由がわかりません。
さらにそれなリンクテーブルはいらないと思います。フォームなどを作るのに面倒だからという使い方はありますが、こういうことをするとリンクテーブルで開いたテーブルのロックと更新のクエリのロックがバッティングしますから当然壊れます。
No.3
- 回答日時:
質問にはリンクテーブル更新と書いてあり、パススルークエリーを使ってると捕捉があると最早何をやっているのか解りません。
パススルーでリンクテーブルを更新は不可能です。というか意味がないので。この回答への補足
説明不足ですいません。
リンクテーブル更新というのは、リンク先のテーブルに対してパススルークエリで、INSERT/UPDATE/DELETEするという意味です。
No.2
- 回答日時:
何をもって「データベースが壊れる」と表現しているのか不明ですが、クエリ発行後に障害が発生するのであれば、クエリに問題がある可能性はあります。
そのクエリも不明なので、現在の情報ではこれ以上は回答できません。
この回答への補足
回答ありがとうございます。
データベースが壊れたと判断したのは、以下の理由からです。
・Management Studioのオブジェクトエクスプローラで、問題のデータベースを右クリックしても、すべてのメニューがDISABLEになっている。
・Management Studioのオブジェクトエクスプローラで、問題のデータベースのツリーを展開できない。
・バックアップファイルを使ってリストアすると、アクセスできるようになる。
> クエリ発行後に障害が発生するのであれば、クエリに問題がある可能性はあります。
これだと、どの環境でも発生するような気がしませんか?
No.1
- 回答日時:
あると思いますよ。
リンクテーブルはあくまでもAccessの機能でクエリを発行しています。つまり制御不能です。例えばVBAでどのような更新を掛けてるかですが、大量の更新であればリンクテーブルは一件ごとに解析して、別のクエリをSQLサーバーへ投げます。このSQLはAccessが作ったものでロックの排除とか件数などの制御もしていません。どの単位で更新を掛けるかも不明です。これを大量発行した場合SQLサーバー側ではまずロックの制御やログテーブルへの書き出しなどに影響が出ます。また遅延書き込みの制御においてメモリ内での処理が追いつかない場合があります。また変なソートが絡むとTempデータベースが追いつきませんね。処理がバッティングするとそれぞれのシステムデーターベースの整合性が保てずデーターベースは壊れます。つまりリンクテーブルに書き込むというのはやめたほうが良い処理ということになります。
ちゃんと直接SQLサーバーへADO接続して書き込むべきです。VBAであれば当然ADOを使っているはずでわざわざローカルへ書き込む理由もわかりませんけど?
回答ありがとうございます。
> ちゃんと直接SQLサーバーへADO接続して書き込むべきです。
直接書き込んではいませんけど、パススルークエリを使っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessリンクの仕方によるフロ...
-
「マスタ」と「テーブル」の違...
-
ACCESS2007 フォーム 「バリア...
-
Accessにインポートしたら並び...
-
SELECT文でのデッドロックに対...
-
DataTableから条件を満たした行...
-
エクスポート時の改行コードに...
-
accessのロック
-
請求と入金のテーブルの作成の...
-
SQLで○○の値以外を持っているレ...
-
クエリのキャンセルがいつにな...
-
accessで移動平均する方法
-
ACCESS2000のテーブル構造
-
ACCESSのSQLで、NULLかNULLでな...
-
主キーにインデックスは貼らな...
-
ユニオンクエリで繋げられるテ...
-
Access カレントレコードがあり...
-
Accessでクエリを完了できませ...
-
seoについておしえてください
-
accessのエクスポートエラーに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのODBCリンクでSQLServer...
-
ASPからSQLサーバーへ接...
-
accessからSQLサーバへの移行。
-
Accessリンクの仕方によるフロ...
-
NOTESのDBをAccess2000とリンク...
-
SQLクエリでデータベースが壊れ...
-
sqlserverの場合はテーブルの連...
-
SQL Serverのリンクサーバーの
-
「マスタ」と「テーブル」の違...
-
accessで移動平均する方法
-
請求と入金のテーブルの作成の...
-
SQLで○○の値以外を持っているレ...
-
ACCESS2000のテーブル構造
-
ACCESSのSQLで、NULLかNULLでな...
-
ACCESS2007 フォーム 「バリア...
-
Accessにインポートしたら並び...
-
SELECT文でのデッドロックに対...
-
seoについておしえてください
-
SI Object Browserのテーブルス...
-
sqlserverで集計結果をUPDATEし...
おすすめ情報