![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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ランキング
-
ACCESS2007 フォーム 「バリア...
-
SQLのエラー(~付近に不適切な...
-
SQLサーバで和暦から西暦に変換...
-
SQL Date型の列から年月だけを...
-
sqlserverで集計結果をUPDATEし...
-
Visuaal Studio Community 2022...
-
BULK INSERT時のNull許容について
-
SQLCMDにて教えていただきたい...
-
SQLサーバー接続 特定のPCがWin...
-
AccessのInsertクエリのあとつ...
-
SQLて何ですか!
-
これをSQL文で出来るでしょうか?
-
SQL 変化を知りたい
-
【VB.NET】日付型の列にNULLを...
-
SQL文 複数実行
-
<SQL>重複しているデータの場合...
-
【SQLサーバ】float型における...
-
sqlで、600行あるテーブルを100...
-
Access2013で操作ログを残した...
-
インストール可能なISAMド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ネットワーク上のFireBirdへODB...
-
Accessリンクの仕方によるフロ...
-
SQL Serverのリンクサーバーの
-
NOTESのDBをAccess2000とリンク...
-
ASPからSQLサーバーへ接...
-
accessからSQLサーバへの移行。
-
SQLクエリでデータベースが壊れ...
-
sqlserverの場合はテーブルの連...
-
ACCESSのODBCリンクでSQLServer...
-
ACCESSのお勧め教則本
-
複数のテーブルを一括でインポ...
-
リンクテーブルのようなものは?
-
データベース内でテーブルのコ...
-
商品DBの開発
-
AccessとDB2のテーブルリンクで…
-
SQLサーバーに登録したテーブル...
-
Accessの自動終了
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessにインポートしたら並び...
おすすめ情報