DEFINITIONS

Definitions More Info.
Definition ID800
TitleSQL
CategoryNOTES
DefinitionPartition Kaldirma-Remove For YEAR
Definition Description-- Mevcuttaki partition siler.
DECLARE @dbname NVARCHAR( 100 ),
-- database adı
@tableName nvarchar(100),
-- partition yapılacak tablo adı
@pstartYear int,
-- Partition başlangıç yılı
@pendYear int,
-- Partition bitiş yılı
@filename nvarchar(500),
-- Partition dosyalarının ekleneceği dosya dizini (path)
@initialsize int,
-- Dosyanın başlangıç boyutu.
@sql nvarchar(MAX),
-- Partition dynamic sql içeren sorgu komutu
@sqlDropSchemeFnc nvarchar(2000)
-- Partition Scheme ve Partition Function drop eden sql komutu
SET @dbname = 'TEST'
SET @tableName = 'prItemBarcode'
SET @pstartYear = 2016
SET @pendYear = 2018
-- Mesela sadece 2 yıl için partition yapmak istiyoruz, 2016-01-01 den 2017-01-01 tam bir yıldır.
-- (2016-01-01) - (2017-01-01) - (2018-01-01) tam iki yıldır. 2018-01-01 dan sonraki datalar PRIMARY fileGROUP eklenir.
--Partitionun 2017 yılının sonuna kadar kapsamasını istiyorsak @endyear 2018 yılana KADAR SET etmemiz gerekmektedir.

-- Eğer Partition Scheme ve function varsa drop eder. Bu objeler drop olmadan partition dosyalarını drop edemezsiniz.

SET @sqlDropSchemeFnc = + 'IF EXISTS(SELECT [name] FROM ' + @dbname + '.sys.partition_functions)' + CHAR( 13 )+ CHAR( 10 )
+ 'DROP PARTITION FUNCTION pfnc_' + @tablename + CHAR( 13 )+ CHAR( 10 )
+ 'GO' + CHAR( 13 )+ CHAR( 10 )
+ 'IF EXISTS(SELECT [name] FROM ' + @dbname + '.sys.partition_schemes)' + CHAR( 13 )+ CHAR( 10 )
+ 'DROP PARTITION SCHEME pscheme_' + @tableName PRINT( @sqlDropSchemeFnc )
-- İlk döngü yıl sayısını arttırır
WHILE ( @pstartYear <= @pendYear )
BEGIN
SET
@sql = 'USE ' + @dbname + CHAR( 13 )+ CHAR( 10 )
+ 'GO' + CHAR( 13 )+ CHAR( 10 )
+ 'ALTER DATABASE ' + @dbname + ' REMOVE FILE [' + @tableName + 'F_PARTITIONYEAR' + CAST( @pstartYear AS NVARCHAR( 4 ))+ ']' + CHAR( 13 )+ CHAR( 10 )
+ 'GO' + CHAR( 13 )+ CHAR( 10 )
+ 'ALTER DATABASE ' + @dbname + ' REMOVE FILEGROUP [' + @tableName + 'G' + '_PARTITIONYEAR' + CAST( @pstartYear AS NVARCHAR( 4 ))+ ']' + CHAR( 13 )+ CHAR( 10 )
+ 'GO' + CHAR( 13 )+ CHAR( 10 )
SET
@pstartYear = @pstartYear + 1
PRINT( @sql )
END
RecordBycunay
Record Date13-09-2017 16:40:46
Düzenle
Kopyala
Sil