
現在SQL Server2005を使用しております。
別のサーバー内でAccessのテーブルデータが定期的に更新されており、
このデータを利用したシステムをSQL Server上で作ろうと考えています。
手動でSQL ServerにAccessのテーブルデータをインポートするやり方は分かりましたが、(データ更新の為に)定期的にインポートする方法がわかりません。
どのように実現すればよいか、サンプルや参考になるHPがありましたら
是非教えていただけないでしょうか?
No.1ベストアンサー
- 回答日時:
SQL Serverのエディションと、Accessのバージョンを書いた方がよいです。
(Access2003までを想定して書きます)
1) リンクサーバを設定する
・サーバオブジェクト→リンクサーバで作成
・リンクサーバ名は任意(例えばACC)、「Microsoft jet 4.0 OLE DB Provider」を選択し、製品名に「Microsoft Access」、あとはMDBをフルパス指定するだけでよい。
・SQL Server側では「SELECT * FROM ACC...テーブル名」の形式でクエリを実行できる。
(条件)32ビットマシンであること
2) OPENROWSETを使う
・以下のようなクエリを実行する
SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','MDBのフルパス';;,テーブル名) AS a
・あとはリンクサーバと同じ
(条件)32ビットマシンであること。アドホッククエリの実行を許可しておくこと
3) SSISを使う
・SQL Server Integration Serviceで取り込み処理をパッケージとして作成する
(条件)Standard Edition以上であること
いずれの方法もジョブをSQL Server Agentに登録することで定期実行できます。
1)2)の場合は、TRUNCATE TABLE文とINSERT SELECT文、3)の場合はパッケージの実行を登録することになります。
Expressであれば、sqlcmdを使ったバッチを書いてそれをWindowタスクで実行します。
外部データのアクセス:http://msdn.microsoft.com/ja-jp/library/ms188313 …
OPENROWSET http://msdn.microsoft.com/ja-jp/library/ms190312 …
回答ありがとうございます。
>SQL Serverのエディションと、Accessのバージョンを書いた方がよいです。
申し訳ありませんでした。
SQL Server 2000 StandardがWin2003 Serverに入っているのですが、自分のPC(WinXP)に入っているSQL Server2005 StandardのManagement Studioで2000側を操作している状況です。
2000と2005とVersionが違うので正しい使い方か分かりませんが…。
Accessは2003になります。
1),2),3)の手段、全てで試してみたいのですが取り合えず1)でできそうです。
>「SELECT * FROM ACC...テーブル名」
で実行したところデータがとれました。
しかしデータを読んでいるだけで保存はされていないので、後はテーブルを作ってコピーするSQL文を追加すればよいのでしょうか?
(見当違いでしたらすいません)
SQL Serverは今回初めて使うので実現手段も調べてはみましたが結局はよくわからず途方にくれていたのですが、解決の道筋がみえそうです。
ありがとうございます。
他の手段も追って確認したいと思います。
No.2
- 回答日時:
#1です。
とりあえずリンクサーバが使えたのであれば、よかったです。
>しかしデータを読んでいるだけで保存はされていないので、後はテーブルを作ってコピーするSQL文を追加すればよいのでしょうか?
その通りです。データは入れ替えでよければ、テーブルを作っておいて、
TRUNCATE TABLE テーブル;
INSERT INTO テーブル SELECT * FROM ACC...テーブル;
を実行させればOKです。
Standardということなので、SQL Server Agentが使えます。
タスクを新規登録して、上記の2つのコマンドを打ち込み、スケジュールを指定すれば自動実行されます。
詳細はリンクなど、MSDNを参考にしてください。
サーバはSQL Server 2000だそうですが、通常の作業には全く問題ないです。ただ、タスクの登録までSSMSでできるかは試したことがないので、わかりません。
うまく登録できないようなら、サーバにログインしてEnterprise Managerを開き、そこで設定した方がいいかもしれませんね。
参考URL:http://msdn.microsoft.com/ja-jp/library/ms189237 …
方法(1)での確認完了しました。
また(3)を試したのですが、やはりServer側が2000という事もあり
jamshid6さんがおっしゃるとおりSSISは使えないようです。
(SSISは2005から追加された機能ですので当然といえば当然ですね。)
>サーバにログインしてEnterprise Managerを開き、
>そこで設定した方がいいかもしれませんね
こちらも仰るとおり、サーバー側で設定したら上手くいきました。
(2)の方法も後ほど試したいと思います。
いろいろと教えていただきありがとうございました。
一旦クローズさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
Access VBA [リモートサーバー...
-
ACCESSのODBCリンクテーブルに...
-
ユニオンクエリで繋げられるテ...
-
accessでSQL実行時のテーブル名...
-
アクセスのワークシート変換に...
-
PhpMyAdminで作成して実行せよ...
-
TRY CATCHでシステムエラーを検...
-
CSEでのデータベース作成時のエ...
-
「マスタ」と「テーブル」の違...
-
SELECT文でのデッドロックに対...
-
重複するキーから一番古い年月...
-
オラクルではできるのにSQLSERV...
-
コンボボックスで入力したもの...
-
accessのロック
-
クエリのキャンセルがいつにな...
-
ACCESSでのCSVデータの自動取り...
-
インデックスの再構築の意味っ...
-
ACCESSのSQLで、NULLかNULLでな...
-
IFで条件を分岐させてのINSERT...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
Access VBA [リモートサーバー...
-
Accessでクエリを完了できませ...
-
accessでSQL実行時のテーブル名...
-
ACCESSのODBCリンクテーブルに...
-
実行時エラー3086 削除クエリ...
-
ユニオンクエリで繋げられるテ...
-
大きなテーブルに対する問い合...
-
Select ~ into ~ で作成した...
-
VBAの実行時エラー'2522'について
-
AccessのテーブルをSQL Server...
-
SSIS 変数の値をSQL実行タスク...
-
Oracleデータベーストリガーの...
-
Access Update文の副問い合わせ
-
PhpMyAdminで作成して実行せよ...
-
SQL Serverのテーブルってどう...
-
SQLの構文について
-
Access VBA 読み取り専用かチェ...
-
TRY CATCHでシステムエラーを検...
-
結合テーブルクエリPrimaryKey...
おすすめ情報