• ベストアンサー

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

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。

  • SQLサーバーはテーブルの置き場として使えるのでしょうか?

    SQLサーバー初心者です。 アクセスのMDBファイルのリンクテーブルとしてSQLサーバーを使う場合、 クエリとかストアドプロシージャー(?)などの機能があるみたいですが よくわからないので 本当にただテーブルの置き場としてSQLサーバーを使うことはできるのでしょうか? 宜しくお願い致します。

  • アクセスからSQL Serverのデーターを更新することができない。

    アクセスのデーターをSQLサーバーへ移行する計画があり、準備のため SQL Developer バージョンで独習中です。SQLサーバーにコピーしたテーブルにアクセスからログインするとテーブルは見られるのですが、データーの変更については「このレコードセットは更新できません」と表示されます。権限の問題ではないかと思われます。 環境と現状の設定: XP Professional SQL Server 2008 Developer Visual Studio 2008  サーバー名: SVR-1 セキュリティー ログイン名: SVR-1\taro サーバーロールのメンバーシップ:sysadmin データーベース名: project ユーザー名: dbo ログイン名: SVR-1\taro 既定のスキーマ: dbo 所有されているスキーマ:なし データーベースのロールメンバーシップ: db_owner 不思議なことに、Visual Studio 2008を使って試作したデーターベースはアクセスから書き換えができます。セキュリティーの設定も何ら変わりがないのですが。 データーベース (project)のユーザー名(dbo)の「所有しているスキーマ」にあるdata_reader, data_writer欄にチェックをいれても結果は同じです。 どこをどのように設定すれば良いのか、ご教示戴きますようお願い致します。

  • SQLサーバーについて

    アクセスユーザーです。 データベースを操作するならアクセスよりSQLサーバーの方が良いと聞いたのですが SQLサーバーのイメージがいまいちわかりません。 アクセスは、 ・テーブル ・クエリ ・フォーム ・レポート ・マクロ ・VBA がありますが、 SQLサーバーは、テーブルとクエリしかなくて、 テーブルの置き場として使うソフト。と言う認識であってますか?

  • SQLの更新方法について

    SQLの更新方法について 環境 OS:windows XP home sql server express2008 Microsoft SQL Server Management Studio 10.0.1600.22 現象 MS ACCESSからODBCを通してsql server express2008の中に作ったテーブル”TB01”にアクセスしていました。 あるときSQL Server Management StudioでTB01を削除しました。 ところがACCESSからODBCを通して接続すると削除したはずのテーブル”TB01”が見えていて リンクを張るとデータも出てきます、 ためしに新しくデータベースを作ってテーブルを作成してもODBCからは昔のままのテーブルしかありません。 SQL SERVERを再起動しても変わりません、どのようにすればSQLの内容を更新できるのでしょうか? どなたかお知恵を拝借願います。

  • SQLサーバーにあるテーブルをaccessに「テーブルのリンク」をしたい

    こんばんは。 SQL Server 2005の中にある データベース名:test テーブル名:テーブル1 をアクセス2003にリンクしたいのですがどうすればいいのかわかりません。 データベースウインドウのテーブルのところの何もない所で 右クリック → テーブルのリンク をするとファイルを選択するダイアログが開きます。 「SQL Server Management Studio Express」を選択し そこからどうすればいいのでしょうか? また「ファイルの種類(T)」は何を選択すればいいですか? デフォルトでは 「Microsoft Office Access(*.mdb;*.mda;*.mde)」です。 以上よろしくお願いします。

  • SQLサーバーとはリンクテーブルマネージャーのようなものですか?

    初めまして。こんにちは。 アクセスのファイル(mdb)が重いので どうすればいいのか他サイトでご相談したこところ、 「SQLサーバーに移行するのがいい」とのご回答をいただきました。 ただ、 SQLサーバーというもののメリットやイメージがいまひとつわかりません。 テーブルデータ以外はそのままMDBファイルに入れて、 テーブルのみを別ファイルに移行するリンクテーブル(be.mdb)と同じようなものなのでしょうか? よろしくお願いします。

  • リモートPCからSQL Server 2008 に接続できません。ご指導ください。

    環境 SERVER (Dell T-300) SQL-Server 2008 Workgroup Edition Windows認証 Workgroup による共有接続 ファイルサーバーとしては正常に接続できていますが、SQL-Serverのファイルに接続できません。SQL-ServerのデーターフォルダーはドライブDにあり、Administrator はフルコントールの設定です。 データーベース全体のセキュリティーのログインには SERVER\Administratorと表示されています。 個別データーベースのセキュリティーは: ユーザー dbo guest INFORMATION_SCHEMA sys 上記 dbo のプロパティーは ユーザー名  dbo ログイン名  SERVER\Administrator 規定のスキーマ dbo 所有されているスキーマ なし ロールメンバー db_owner にチェック済 上記の設定でAccess 2007からmdb、adpともアクセスを拒否されます。どこをどのように設定すればよいのでしょうか、ご指導のほど宜しくお願い致します。

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • SQLサーバでテーブルをコピーする

    SQLサーバ超初心者です。 A支店用のテーブルを作成(dbo.data_A)したのですが B支店(dbo.data_B)、C支店用(dbo.data_C)のテーブルを作成したいです。 Accessなどのように、コピーペーストなどはできないのですよね? ご教授お願いいたします!

このQ&Aのポイント
  • FAX送信で、ドキュメントフィーダーでA4をセットするのに、縦位置か横位置か分からない
  • お使いの環境はWindows10で無線LANに接続しています。
  • 電話回線はアナログ回線を使用しています。
回答を見る