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

解決済みの質問

SQLサーバーのテーブルの値が更新できません

お尋ねします。
SQLサーバー2005にDB1というデータベースにdbo_TB1というテーブルがあります。そのテーブルの特定の列の値を更新したいので、AC.mdbというアクセスのファイルにテーブルのリンクをし、更新したいファイルを用意して、アクセスのクエリでデータを更新しようとしましたところ、更新ができませんでした。
 dbo_TB1を更新可能にするためには、どのようにして権限を与えればいいでしょうか。
 SQLサーバー2005の知識を習得しようと学習を始めたばかりで、よく理解できていません。よろしくお願いします。

投稿日時 - 2008-11-07 13:20:51

QNo.4460162

暇なときに回答ください

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

通常SQL Serverの権限はデータベース/ユーザ単位につけるもので、個別のテーブルに権限をつけることは極めて稀です。
また、SQL Serverにはテーブル単位で読み取り専用にする機能もありません。
実際に更新権限をはずしても、表示されるメッセージは異なります。
ということで、ずいぶん悩みましたが、可能性が1つありました。

そのテーブルには主キーがなく、しかも、主キーを指定しないままリンクしたのではありませんか?
主キーのないリンクテーブルは更新できません(ODBCドライバの仕様上)。
その点を確認してみていただけますか?

投稿日時 - 2008-11-07 20:55:03

補足

おっしゃる通り主キーの設定がありませんでした。
主キーの設定をすることで、データの更新ができました。
ご教授ありがとうございました。

投稿日時 - 2008-11-10 16:54:56

お礼

随分ご心配いただきありがとうございます。
主キーの設定を確認してみます。
月曜日にもう一度確認をしてみます。

投稿日時 - 2008-11-07 22:56:18

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

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

回答(2)

ANo.1

・更新できなかったときのエラーメッセージは何でしたか?
(SQL Server側での権限不足が理由だと判断できるようなものでしたか?)
(そのテーブルを照会することはできるのですか?)

・そのSQL Serverは質問者さんが管理されているものですか?
(SQL Server Management Studioを使って管理者権限でログインできますか?)

・今リンクに使っているユーザはsaとかですか?別に作成したものですか?
 それともWindowsのユーザIDですか?

・リンクサーバはどうやって行いましたか?
(ODBCのメニューでDSNを作成してそれを指定しましたか?それとも別の方法ですか?)

・ACCESSのバージョンは何ですか?

投稿日時 - 2008-11-07 13:56:34

お礼

ありがとうございます。
・更新できなかったときのエラーメッセージは何でしたか?
→「更新可能なクエリであることが必要です。」というメッセージでした。

・そのSQL Serverは質問者さんが管理されているものですか?
→私は、管理者権限がありますが。

・今リンクに使っているユーザはsaとかですか?別に作成したものですか?それともWindowsのユーザIDですか?
→サーバーへは、Windows認証でログインしています。そのデータベースにある他のテーブルリンクされたファイルはアクセスを使って更新が可能です。

・リンクサーバはどうやって行いましたか?
→ODBCのメニューでデータソースを選んで作成しました。

・ACCESSのバージョンは何ですか?
→2003を使っていますが、2000のファイル形式でアクセスのファイルは作られています。

よろしくお願いします。

投稿日時 - 2008-11-07 17:46:01

あなたにオススメの質問