こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access(Jet4.0)SQLでGRANTが使用できない

AccessでGrantを使った以下のようなSQLクエリを実行し、
特定のユーザに読み取り権限の付与・削除を
行おうとしているのですが、正常に実行されません。

   grant select on [DbName] to [UserName]

エラーの内容としては
『SQLステートメントが正しくありません。
'Delete'、'Insert'、'プロシージャー'、'Select'または
'update'を使用してください』
とのメッセージが表示されます。

管理者権限でログインしてユーザー権限のユーザを
指定して処理を行っています。
構文も間違っていないと思うので、原因がつかめず困惑しています。

心当たり、間違い等、可能性レベルでも結構ですので
ご教授・ご指摘いただけますようお願いいたします。

投稿日時 - 2009-03-23 15:30:51

QNo.4820805

すぐに回答ほしいです

質問者が選んだベストアンサー

経験は特にありませんので参考意見ですが。

Advanced Microsoft Jet SQL for Access 2000
http://msdn.microsoft.com/en-us/library/aa139977(office.10).aspx

上記文書内に、下記の一節があります。

Note The GRANT and REVOKE statements can be executed only through
the Jet OLE DB provider and ADO. They will return an error message
if used through the Access SQL View user interface or DAO.

ですので、推測ですが下記のように DAO 経由で実行しようとして
いらっしゃるのではないでしょうか。

CurrentDb.Execute "GRANT SELECT ON TABLE myTable TO MyGroup"

正しくは、Jet OLE DB プロバイダと ADO 経由で実行する必要が
あります。
たとえば Access 上から開いているカレントのデータベースに
対して実行するなら、こんな感じではないでしょうか。

CurrentProject.Connection.Execute "GRANT SELECT ON TABLE myTable TO MyGroup"

単発の変更でしたら [ツール]-[セキュリティ] から GUI ベースの
手作業で変更したほうが簡単ですが…。

参考URL:http://msdn.microsoft.com/en-us/library/aa139977(office.10).aspx

投稿日時 - 2009-03-23 17:29:00

お礼

yu_tang さま
回答ありがとうございました。

ご指摘の通り、DAO 経由で実行しようとしておりました。

回答を参考にJet OLE DB プロバイダ経由で実行するよう、簡易な
.NETアプリケーションを作成したところ、無事Grantを通すことが
出来ました。
(ワークグループ情報ファイルの指定が必要であることが
分からず随分時間が掛かってしまいましたが f^^;)

拙い質問にも丁寧なご回答いただきありがとうございました。

投稿日時 - 2009-03-23 18:19:05

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問