1

SQL Server データベース内のいくつかの関連テーブルのスナップショットを取得し、それに日時要素を添付して、別のデータベースに保存するシステムを構築しようとしています。したがって、新しいデータベースには、異なる日時のデータのスナップショットが含まれます (異なるスキーマにつながります)。

Sql Server Management Studioでt-sqlを使用してすでに動作しています。C# でクエリを作成し、2 つのデータベース間で実行できますか? ADO.NET について読みましたが、2 つの SQL 接続を確立し、転送のためにクエリを実行する方法が見つかりませんでした。

これを行うためのより効率的な方法はありますか? Microsoft SQL Server 2012 を使用しています。

4

2 に答える 2

0

おそらく、ETLに関するウィキペディアのページを読み始める必要があります。

また、純粋なC#でETLを実行したい場合は、 RhinoETLのようなものを見てください。

于 2012-06-22T12:58:55.047 に答える
0

ストアド プロシージャにクエリを配置する必要があります。次に、Management Studio、C#、またはその他のプログラム/インターフェイスから呼び出すのは簡単です。簡単な例:

CREATE PROCEDURE dbo.foo
AS
BEGIN
  SET NOCOUNT ON;

  -- your query
END
GO

次に、C# から (ストアド プロシージャが結果を返さないと仮定します):

SqlConnection conn = new SqlConnection("Your Connection String");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "dbo.foo";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

これは完全なコード サンプルではありません (エラー処理、破棄などはありません) が、単にアイデアを提供するためのものです。

編集

2 つの SQL Server インスタンス間にリンク サーバーを作成する必要があります。次に、クエリは次のようになります。

SELECT * INTO [linkedserver].database.dbo.tablename
  FROM dbo.whatever
  -- WHERE ... ;

これは、データを C# にプルするよりもはるかに効率的です。

于 2012-06-22T12:32:16.423 に答える