• ベストアンサー

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

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

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

通常SQL Serverの権限はデータベース/ユーザ単位につけるもので、個別のテーブルに権限をつけることは極めて稀です。 また、SQL Serverにはテーブル単位で読み取り専用にする機能もありません。 実際に更新権限をはずしても、表示されるメッセージは異なります。 ということで、ずいぶん悩みましたが、可能性が1つありました。 そのテーブルには主キーがなく、しかも、主キーを指定しないままリンクしたのではありませんか? 主キーのないリンクテーブルは更新できません(ODBCドライバの仕様上)。 その点を確認してみていただけますか?

89315
質問者

お礼

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

89315
質問者

補足

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

その他の回答 (1)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

・更新できなかったときのエラーメッセージは何でしたか? (SQL Server側での権限不足が理由だと判断できるようなものでしたか?) (そのテーブルを照会することはできるのですか?) ・そのSQL Serverは質問者さんが管理されているものですか? (SQL Server Management Studioを使って管理者権限でログインできますか?) ・今リンクに使っているユーザはsaとかですか?別に作成したものですか?  それともWindowsのユーザIDですか? ・リンクサーバはどうやって行いましたか? (ODBCのメニューでDSNを作成してそれを指定しましたか?それとも別の方法ですか?) ・ACCESSのバージョンは何ですか?

89315
質問者

お礼

ありがとうございます。 ・更新できなかったときのエラーメッセージは何でしたか? →「更新可能なクエリであることが必要です。」というメッセージでした。 ・そのSQL Serverは質問者さんが管理されているものですか? →私は、管理者権限がありますが。 ・今リンクに使っているユーザはsaとかですか?別に作成したものですか?それともWindowsのユーザIDですか? →サーバーへは、Windows認証でログインしています。そのデータベースにある他のテーブルリンクされたファイルはアクセスを使って更新が可能です。 ・リンクサーバはどうやって行いましたか? →ODBCのメニューでデータソースを選んで作成しました。 ・ACCESSのバージョンは何ですか? →2003を使っていますが、2000のファイル形式でアクセスのファイルは作られています。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう