ネットやオンラインの本をよく見て、私の質問に対する答えが見つからなかったので、ここに行きます。
他の誰かの設計に取り組んでいると、いくつかのテーブルがすべて同じパーティション スキーマとパーティション関数に関連付けられています。何億もの行に影響する分割操作を実行したいと考えています。
分割することは問題ありません:
ALTER PARTITION SCHEME [ps_Scheme] NEXT USED [FG1] ;
ALTER PARTITION FUNCTION [pfcn_Function]() SPLIT RANGE (20120331)
ただし、これは一度に多くのテーブルに影響を与えるので望ましくないのではないかと懸念しています。
したがって、テーブルの新しいコピーを作成し、新しい関数で分割を行うつもりでした
CREATE PARTITION FUNCTION [pfcn_Function1](INT)
AS RANGE RIGHT
FOR VALUES
(
20090101, 20090130, 20090131, 20090201...etc
)
CREATE PARTITION SCHEME [ps_Scheme1]
AS PARTITION [pfcn_Function1] TO
([FG1], [FG2] etc
CREATE TABLE [dbo].[myTableCopy]
(
....
) ON ps_Scheme1
次に、分割するパーティションを切り替えます。
-- The partition numbers did not align because they are based on 2 different functions.
ALTER TABLE [Table] SWITCH PARTITION 173 TO [TableCopy] PARTITION 172
最後に私の質問は、これを自動化できますか? SELECT INTO を使用して SQL でテーブルのコピーを簡単に作成できますが、テーブルのパーティション分割を自動化する方法、つまりパーティション スキームを指す CREATE TABLE ステートメントの末尾のビットがわかりません。
返信ありがとうございます。