![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- JavaScript Typescript が必要な理由 1 2023/01/07 11:45
- SQL Server PCが悪くなって新しいPCにSSMSのデータを移すよう頼まれたけど移し方が分からない 1 2023/05/18 16:54
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- ソフトウェア データベースのウェブでの自作 2 2023/08/01 10:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リンクテーブルのようなものは?
-
ネットワーク上のFireBirdへODB...
-
sqlserverの場合はテーブルの連...
-
「マスタ」と「テーブル」の違...
-
[ BETWEEN ] vs [ >= AND <= ]
-
ACCESSのSQLで、NULLかNULLでな...
-
【SQLServer】IS NULLのパフォ...
-
クエリのキャンセルがいつにな...
-
2つのテーブルから条件に一致...
-
エクスポート時の改行コードに...
-
データの二重表示の原因
-
ACCESS2007 フォーム 「バリア...
-
PostgreSQLで外部DB内のテーブ...
-
Accessでクエリを完了できませ...
-
Accessにインポートしたら並び...
-
VIEWしか読み取れないユーザの...
-
重複するキーから一番古い年月...
-
SELECT文でのデッドロックに対...
-
数百万件レコードのdelete
-
ACCESS 一番最新の日付の金額...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL Serverのリンクサーバーの
-
accessからSQLサーバへの移行。
-
AccessとDB2のテーブルリンクで…
-
Accessリンクの仕方によるフロ...
-
sqlserverの場合はテーブルの連...
-
SQLサーバーに登録したテーブル...
-
ACCESSのODBCリンクでSQLServer...
-
他のDBのテーブルと内部結合...
-
SQLクエリでデータベースが壊れ...
-
NOTESのDBをAccess2000とリンク...
-
「マスタ」と「テーブル」の違...
-
MySQLがPostgreSQLより優れてい...
-
ACCESSのSQLで、NULLかNULLでな...
-
データの二重表示の原因
-
2つのテーブルから条件に一致...
-
[ BETWEEN ] vs [ >= AND <= ]
-
オラクルではできるのにSQLSERV...
-
ACCESS2007 フォーム 「バリア...
-
SELECT時の行ロックの必要性に...
-
ACCESS 一番最新の日付の金額...
おすすめ情報