2010-12-06 10 views
0

スケジュールされたタスクのためにWindows Server 2008タスクスケジューラを使用して、msアクセス2007 accdbに問題があります。問題は、タスクスケジューラによって開かれているファイルが適切に開閉しているが、データベースが閉じられた後に 'ロック'ファイル(.laccdb)が表示されたままであることです。新しいタスクが実行されるたびに、アクセスの新しいインスタンスが開かれています。私はスキーマを開いてデータベース内のすべてのユーザーのリストを表示し、サーバー名/管理者アカウントの3つの複製を表示しています。以下は、アクセスが即座に画面の例を示します。同一のアクセスデータベースの複数のインスタンスが1台のマシンで開いている - 問題

COMPUTER_NAME LOGIN_NAME CONNECTED SUSPECT_STATE サーバ管理真のヌル サーバ管理真のヌル サーバ管理真のヌル

私は他の誰かがこの問題を抱えていたと知っている願っています1)開いているすべてのアクセス・インスタンスを簡単に閉じる方法と、2)タスクの実行時にこれを防ぐ方法。タスクの「設定」タブの下に「新しいインスタンスを開始しないでください」という設定がありますが、これはタスクが同時に実行されていないため無関係です。ご協力いただきましてありがとうございます。

+0

実行しているタスクは何ですか?正しくクリーニングしていないか、正常に終了していない可能性があります。しかし、我々は仕事が何であるかを知るまで推測することはできない。また、アクセス権の問題(データベースのあるフォルダでDELETE権限が拒否されている)がある可能性もありますが、それは明示的に設定する必要のある非標準の権限であるため、これはほとんどありません。 –

答えて

0

開いているすべてのAccessインスタンス(あなたが実行中のインスタンスは、あなたが取得する最後の参照であることを保証することはできませんので、あなたがアクセスからこれを実行することはできません)閉じるには:あなたは上記を実行した後

Sub CloseAllAccessInstances() 
    Dim acc As Access.Application 

    Do 
     Set acc = GetObject(, "Access.Application") 

     If IsNull(acc) Then Exit Do 

     acc.Quit 
    Loop 
End Sub 

をタスクマネージャを確認します。 msaccess.exeが表示された場合は、円形オブジェクト参照がある可能性が最も高いです。これにより、アクセスが終了しなくなります。詳細については、http://msdn.microsoft.com/en-us/library/aa716190(VS.60).aspxをご覧ください。

+0

私の意見では、レコードが編集のためにロックされたときにAccessを強制終了すると、データファイルが破損する可能性があるため、これはお勧めできません。 –

+0

Access.Application.Quit()は何も強制しません。これは、アプリケーションが終了する前にクリーンアップするように、ユーザーインターフェイスを介してアプリケーションを閉じるのと同じです。さらに、オプションのAcQuitOption引数は、アプリケーションがそのクリーンアップ(具体的には、未保存のオブジェクトをどのように処理するか)をどのように処理するかを制御します。 – phoog

関連する問題