私はMSAccessバックエンドデータベースのスイートをSQLServerにアップサイジングすることに取り組んでいます。SQLのスクリプトを作成して、SQLServerでテーブルスキーマを作成しました。今、私はテーブルにデータを入力しようとしています。ほとんどのテーブルには自動番号付けの主キーがあります。これが私の一般的なアプローチです:
For each TblName in LinkedTableNames
'Create linked table "temp_From" that links to the existing mdb'
'Create linked table "temp_To" that links to the new SQL server table
ExecutePassThru "SET IDENTITY_INSERT " & TblName & " ON"
db.Execute "INSERT INTO temp_To SELECT * FROM temp_From", dbFailOnError
ExecutePassThru "SET IDENTITY_INSERT " & TblName & " OFF"
Next TblName
最初の挿入はすぐに行われます。その後の挿入試行は、「IDENTITY_INSERTがOFFに設定されている場合、テーブル'TblName'のID列に明示的な値を挿入できません。」というエラーで失敗します。
その特定のエラーとタイマーのResumeステートメントを追加しました。エラーが正確に600秒(10分)続くことがわかり、その後、挿入は正常に続行されます。
MS AccessはODBCセッションを10分ごとに自動的に更新しますか?それをより速く発生させる方法はありますか? 明らかな何かが欠けていますか?
「アップサイジングウィザードを使用する」とすぐに言いたい人のための背景情報:
操作全体を最初から最後までスクリプト化できる必要があるため、組み込みのアップサイジングウィザードを使用していません。目標は、クライアントの場所でスイッチを実行する前に、これをテスト環境で実行することです。