質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

5522閲覧

SQL Serverとリンクテーブルの同期がされません。

greeash

総合スコア30

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2018/10/18 03:43

質問したいこと

1.SQL Serverとリンクテーブルは同期されるというイメージは間違っていますか?
2.間違っていなければ、なにか必要な設定はありますか?

実現したいこと・問題

ACCESSでリンクテーブルを使い、ODBCでSQL Serverに接続しています。
(SQL Serverはローカルへインストールしています)

SQL Serverからリンクテーブルへの同期(接続?)はできました。

ですが、ACCESS VBAでデータの登録・更新をした際にリンクテーブルへは正しく処理が反映されているのですが、
SQL Serverと同期されていません。

イメージでは、リンクテーブルとSQL Serverは同期がされると思っています。

設定漏れがあったか調べてみましたが、要件違いの記事ばかりでてきてしまい(SQL Server同士でのコピー方法など)、
行き詰ってしまいました。

そもそも私のイメージが間違っているのかと思い質問させていただくことに至りました。

試したこと

SQL Serverの再起動
手動でリンクテーブルに値を入れて、SQL Serverで確認する

補足情報

Access 2016
SQL Server 2014 (EXPRESS版)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

ファイアウォールの設定を見直したところ、解決しました。
[こちらの記事(https://sql-oracle.com/sqlserver/?p=242)を参考にしました。

投稿2018/10/18 06:19

greeash

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/10/18 06:25

接続できていないなら、VBAの処理ではエラーになっていたはずです。 今回以外のエラーも発生する可能性はありますから、エラーの判定や検出はVBAに組み込んでいた方がいいですよ。
greeash

2018/10/18 06:31 編集

すみません、イメージができないのでもしよろしければ教えていただきたいのですが。 VBAからはAccessのリンクテーブルに向かってInsert/Updateしています。 で、さっきまでできていなかったのはリンクテーブル⇒SQL Serverへの連携です。 VBA⇒リンクテーブルの連携は◎です。 VBAでデバッグをしたところ、リンクテーブルへの処理はエラーが発生せず、処理が終了しました。 リンクテーブル⇒SQL ServerでのエラーをVBAで検知する必要があるということでしょうか? Access内での処理は終わっているので、そこがしっくりきません。
sazi

2018/10/18 08:21

エラーの判定はどのようになっていますか? またトランザクション制御など行われていますか? リンクテーブルに表示される内容と、リンク先のテーブルを直接見たときに値が違うというのは経験したことが無いので。
greeash

2018/10/18 08:27

>トランザクション制御など行われていますか? はい、トランザクション制御をしています。 >エラーの判定 リンクテーブルへのコミット時に、エラーがあればロールバックして、エラーメッセージを出力するようになっています。 SQL Server ⇒ リンクテーブルは、ブロックされず リンクテーブル ⇒ SQL Serverの接続でブロックされていたような挙動でした。 調べても、全然出てこないので私が最初のほうで設定漏れをしてしまったのがいけないのだと思います・・・
guest

0

ACCESS VBAでデータの登録・更新をした際にリンクテーブルへは正しく処理が反映されているのですが、
SQL Serverと同期されていません。

これは具体的にどのような方法で確認されていますか?
リンクテーブルの内容を直接修正して、そのレコードからカーソルが外れるとリンク先にデータは更新されます。(更新可能なら鉛筆マークが出ているはずです)

上記の状態でVBAでの操作が反映されないなら、エラーを検知できていないというのが考えられます。

投稿2018/10/18 03:56

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

greeash

2018/10/18 04:05

回答ありがとうございます。 vba実行後に、select文を発行して確認しています。 そのような挙動が正しいんですね。。。 エラー検知について、調べてみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問