2

DTS アクセス エクスポーター パッケージを、ストアド プロシージャから (xp_cmdshell を使用して) 呼び出すことができる exe に置き換えようとしています。

私たちは SQL 2000 と SQL 2005 の間の移行の最中にあり、現時点で DTS または SSIS を使用できない場合は、それが最良の選択肢になります。

次のオプションがあると思います。

  • SQL データ リーダーを使用して SQL レコードを読み取り、ADO.net を使用して読み取ったレコードを Access に挿入します。私はこれを実装しましたが、遅すぎます。これはオプションではありません
  • アクセスでリンクされたテーブルを設定し、SQL からデータを取得するためのアクセスを取得します。誰かがこれを行った経験があれば、いくつかのコード例やリソースを指摘していただければ幸いです。

SQL から Access データベースに大量のデータを転送するための他のオプションがあれば素晴らしいですが、テーブルごとに最大 1mil のレコードを処理できるため、パフォーマンスが大きな問題になります。

4

5 に答える 5

1

私は、Access データベースから開始し、SQL Server にアタッチし、テーブルの作成またはクエリ定義の挿入を作成し、おそらく引数を使用してクエリ定義を実行するためのコードを記述するという多くのケースを実行してきました。しかし、あなたの問題と、あなたが Access に精通しているかについて、より詳細に説明するために、多くの仮定を立てる必要があります。その説明でどこまで到達できますか?

于 2009-03-18T04:09:31.010 に答える
1

最も簡単な方法と思われるインポート機能の方向を教えてくれたle dorfierに感謝します..

私は今、これらの線に沿って何かを持っています:

Access.ApplicationClass app = new Access.ApplicationClass();
Access.DoCmd doCmd = null;

app.NewCurrentDatabase(_args.Single("o"));
doCmd = app.DoCmd;

//Create a view on the server temporarily with the query I want to export

doCmd.TransferDatabase(Access.AcDataTransferType.acImport,
    "ODBC Database",
     string.Format("ODBC;DRIVER=SQL Server;Trusted_Connection=Yes;SERVER={0};Database={1}", _args.Single("s"), _args.Single("d")),
     Microsoft.Office.Interop.Access.AcObjectType.acTable,
     viewName,
     exportDetails[0], false, false);
//Drop view on server

//Releasing com objects and exiting properly.
于 2009-03-31T09:04:10.937 に答える
1

これを試しましたか?

于 2009-03-16T05:36:45.800 に答える
1

Access でリンク テーブルを作成し、Sql から Access にプッシュするのではなく、Sql Server からデータをプルしてみませんか?

于 2009-03-16T10:43:13.583 に答える
0

bcpを見たことがありますか?これは、大量のデータのインポートとエクスポートに適したコマンド ライン ユーティリティです。私は Access でうまく動作するように試みたことはありませんが、DTS や SSIS に代わる優れた軽量の代替手段です。

他の人が言ったように、Access mdb にデータを取得する最も簡単な方法は、まず Access で設定することです。大ざっぱに言えば:

  1. エクスポートする SQL データへのリンク テーブルを作成します。(アクセス: ファイル --> 外部データの取得 --> リンク テーブル) これにより、SQL サーバーへの接続が提供されます。
  2. エクスポートするデータのスキーマを表すローカル テーブルを作成します。(テーブルタブで、「新規」ボタンをクリックして鼻をたどってください)。
  3. リンクされたテーブル (SQL Server) からデータを選択し、ローカル テーブルに行を追加する (mdb にアクセスする) 更新クエリを作成します。
  4. [マクロ] タブで、上で作成したばかりのクエリを実行する新しいマクロを作成します (使用する正確な「アクション」を思い出すことはできませんが、OpenQuery や RunQuery のようなものです)。マクロに「autoexec」という名前を付けると、mdb を開いたときに自動的に実行されます。
  5. 必要に応じて、スクリプト (またはその他のもの) を使用して mdb をコピーして開きます。autoexec マクロが開始され、クエリが SQL サーバーから mdb にデータをコピーします。
于 2009-03-18T04:53:42.793 に答える