2011-06-22 23 views
0

C#.NETクラスを使用して、テーブルに水平パーティショニングを自動的に設定できるかどうかは疑問です。Microsoft SQL Server 2008 R2の水平パーティショニング?

これは、サーバー管理オブジェクト(SMO)またはネイティブT-SQLのいずれかを使用して達成できると確信しています。

水平パーティショニングは、ファイルごとに1か月の日付で表示されます。

更新

このスキームは、驚くほどうまく動作します。私の.NETアプリは完璧に動作しています:

  • 90,000行/秒商品のハードウェアでの挿入速度。
  • 330万行、52GBのデータ。データベースがこのような大きさであっても、挿入の遅延はありません。
  • 各行は30列の非常に複雑です。 2つの利点があり、日付列、上
  • クラスタ化インデックス(非ユニーク):
    • 選択は、はるかに高速(特定の日付の120秒2秒対)です。
    • テーブルは常に日付順にソートされています。これは時系列データを処理する場合に最適で、カーソルまたは一括ダウンロードを使用してデータを取得する必要があります。

あなたは私が使用したコードを投稿したい場合は、このスレッドに質問を投稿することで、私に連絡。

答えて

2

あなたのコードでT-SQLを使用しても問題がないとわからない場合は、例を探している、またはT-SQLを避けようとしています。それはSystem.Data.SqlClientを使用して、このようなものになるだろうよりも、かつてのだ場合:

SqlConnection cn = new SqlConnection("a connection string to your server"); 
SqlCommand cm = new SqlCommand("", cn); 

cn.Open(); 

最初のステップは、partition functionを作成することです。これは、各パーティションの境界が何であるかを示すパーティションのガイドです。日時を個々の月に分割するこの例は、Books Onlineから直接得られます。

cm.CommandText = "CREATE PARTITION FUNCTION [myDateRangePF1] (datetime) 
     AS RANGE RIGHT FOR VALUES ('20110201', '20110301', '20110401', 
     '20110501', '20110601', '20110701', '20110801', 
     '20110901', '20111001', '20111101', '20111201')"; 
cm.ExecuteNonQuery(); 

次のステップはcreate a schemeです。これは、作成した関数を各パーティション(月)ごとに1つ、ファイルグループにマップします。ファイルグループはすでに存在していなければなりません。ファイルグループ(複数可)上

cm.CommandText = "CREATE PARTITION SCHEME myRangePS1 
       AS PARTITION myRangePF1 TO 
       (test1fg, test2fg, test3fg, test4fg, test5fg, test6fg, 
       test7fg, test8fg, test9fg, test10fg, test11fg, test12fg)"; 
cm.ExecuteNonQuery(); 

そして最後にcreating a table

cm.CommandText = "CREATE TABLE PartitionTable (col1 int, col2 datetime) 
       ON myRangePS1 (col2)"; 
cm.ExecuteNonQuery(); 

cn.Close(); 

そして最後に、あなたはすでにパーティション分割しようとしているテーブルには、あなたが機能を構築する必要があるとしているが存在する場合スキーム、それと同じように見える別のテーブルを作成し、データを新しいテーブルに移動します。

+0

うわー、良い答えをありがとう!私は今それを試しています。 – Contango

+0

私はこれを試しましたが、エラーが発生しました: "無効なオブジェクト名 'test1fg'。"ファイルグループを追加する必要がありますか? – Contango

+1

はい、ファイルグループは既に存在する必要があります。また、あなたはそれらをtest1fgなどと名付ける必要はありません。オンラインの本はすべてのことを話す良い仕事をしているので、3つのステップのそれぞれとのリンクを確認してください。 – RThomas

関連する問題