Skip to content

Instantly share code, notes, and snippets.

@Konctantin
Created February 28, 2018 05:51
Show Gist options
  • Select an option

  • Save Konctantin/2eeebb961c4a14d8223a1de398dbb722 to your computer and use it in GitHub Desktop.

Select an option

Save Konctantin/2eeebb961c4a14d8223a1de398dbb722 to your computer and use it in GitHub Desktop.
CREATE DATABASE [arx]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'arx', FILENAME = N'd:\db\arx\arx.mdf' , SIZE = 5120KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'arx_log', FILENAME = N'd:\db\arx\arx_log.ldf' , SIZE = 2048KB , MAXSIZE = 20480000KB , FILEGROWTH = 10%)
GO
ALTER DATABASE [arx] SET COMPATIBILITY_LEVEL = 100
GO
ALTER DATABASE [arx] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [arx] SET ANSI_NULLS OFF
GO
ALTER DATABASE [arx] SET ANSI_PADDING OFF
GO
ALTER DATABASE [arx] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [arx] SET ARITHABORT OFF
GO
ALTER DATABASE [arx] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [arx] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [arx] SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = OFF)
GO
ALTER DATABASE [arx] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [arx] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [arx] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [arx] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [arx] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [arx] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [arx] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [arx] SET DISABLE_BROKER
GO
ALTER DATABASE [arx] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [arx] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [arx] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [arx] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [arx] SET READ_WRITE
GO
ALTER DATABASE [arx] SET RECOVERY FULL
GO
ALTER DATABASE [arx] SET MULTI_USER
GO
ALTER DATABASE [arx] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [arx] SET TARGET_RECOVERY_TIME = 0 SECONDS
GO
ALTER DATABASE [arx] SET DELAYED_DURABILITY = DISABLED
GO
declare @dt smalldatetime = '20100101';
declare @dir nvarchar(100) = N'd:\db\arx';
declare @name nvarchar(20), @sql nvarchar(max), @sqlFunc nvarchar(max), @sqlScheme nvarchar(max);
declare @nl nvarchar(2) = convert(nvarchar(2), char(13)+char(10));
set @sqlFunc = N'CREATE PARTITION FUNCTION arxMonthRange(smalldatetime) AS RANGE RIGHT FOR VALUES ( ';
set @sqlScheme = N'CREATE PARTITION SCHEME [arxMonthRangeScheme] AS PARTITION [arxMonthRange] TO ('
while @dt <= '20181201' begin
set @name = convert(nvarchar(6), @dt, 112);
-- Сначала создаем файловую группу
set @sql = N'ALTER DATABASE [arx] ADD FILEGROUP [arx'+@name+N'];';
print(@sql)
exec (@sql)
-- Добавляем файл для выше созданной группы
set @sql = N'ALTER DATABASE [arx] ADD FILE ' +
N'(NAME = N''arx' + @name + N''',' +
N' FILENAME = N''' + @dir + N'\arx' + @name + '.ndf'',' +
N' SIZE = 1MB,' +
N' MAXSIZE = 100000MB,' +
N' FILEGROWTH = 5MB)' +
N' TO FILEGROUP [arx'+@name+N'];'
print(@sql)
exec (@sql)
set @sqlFunc = @sqlFunc + N''''+convert(nvarchar(8), @dt, 112)+N''',';
set @sqlScheme = @sqlScheme + N'[arx'+@name+N'],' + @nl;
set @dt = dateadd(month, 1, @dt);
end
set @sqlFunc = substring(@sqlFunc, 1, len(@sqlFunc)-1) + N')';
print(@sqlFunc)
exec (@sqlFunc)
set @sqlScheme = @sqlScheme + N' [PRIMARY])';
print(@sqlScheme)
exec (@sqlScheme)
GO
USE [arx]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY')
ALTER DATABASE [arx] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
ALTER DATABASE [arx] ADD FILEGROUP [arx201901]
ALTER PARTITION SCHEME arxMonthRangeScheme NEXT USED arx201901;
ALTER PARTITION FUNCTION [arxMonthRange]() SPLIT RANGE (N'2019-01-01T00:00:00.000');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment