Access 2003データベースをSQL Server 2012から更新する必要がありますMicrosoft.ACE.OLEDB.12.0プロバイダー。管理者として、すべてがうまく機能します。 AccessデータベースでSelect、Insert、Update、およびDeleteステートメントを問題なく実行できますが、非管理者ユーザーを使用すると、Selectクエリしか実行できません。 挿入、更新、削除のクエリが機能せず、次のエラーメッセージが表示されます。
SQL Serverログインを使用するときのエラーメッセージ:
リンクサーバー "AccessFileTest"のOLE DBプロバイダー "Microsoft.ACE.OLEDB.12.0"に対してクエリ "SELECT * FROM inv_lign"を実行できません。プロバイダーは、UPDATEに必要なインターフェイスをサポートできませんでした/ DELETE/INSERTステートメント。プロバイダーは、他のプロパティまたは要件との競合が発生したことを示しています。
これがクエリです:
_DELETE FROM
OPENQUERY(AccessFileTest,
'SELECT * FROM inv_lign')
_
私はまた、4つの部分のクエリを試しましたが、成功しませんでした。
_DELETE AccessFileTest...inv_lign;
_
Microsoft.ACE.OLEDB.12.0プロバイダーの構成方法は次のとおりです
Linked Server AccessFileTestの構成方法は次のとおりです
では、Microsoft.ACE.OLEDB.12.0プロバイダーを使用してAccess 2003データベースでInsert/Update/Deleteステートメントを実行するにはどうすればよいですか?
これまでに試したこと:
SQL Serverのsysadminではなく、サーバーの管理者であるADユーザーを使用する場合にのみ、それを機能させることができました。ユーザーがサーバーの管理者でない場合、エラーメッセージCannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
が表示されます。次に、このユーザーを追加して、TEMPフォルダーとAccessファイルに対するアクセス許可を取得しようとしましたが、成功しませんでした。だから、私はこれをADユーザーと連携させるためにどんな特別な権利を与えなければならないのか分かりません。
SQL Serverログインを使用する場合、前述のようにエラーメッセージが表示されます。
この問題は、Accessファイルが保存されているサーバーでの権限が不十分であることが原因です。使用しているログインタイプに応じてサーバーを設定する方法は次のとおりです。
SQL Serverログインを使用している場合:
Windows認証ログインを使用している場合: