sql samples

This commit is contained in:
shueybubbles
2018-05-06 12:19:40 -04:00
parent 356da36c47
commit 80d5bf59f8
388 changed files with 7343 additions and 0 deletions
@@ -0,0 +1,16 @@
-- =============================================
-- Create Aggregate Template
-- =============================================
IF EXISTS(
SELECT *
FROM sys.objects
WHERE name = N'<aggregate_name, sysname, sample_aggregate>'
AND (type = 'AF')
)
DROP AGGREGATE <aggregate_name, sysname, sample_aggregate>
GO
CREATE AGGREGATE <aggregate_name, sysname, sample_aggregate>(@<parameter_name, sysname, parameter1> <parameter_type, sysname, nvarchar(4000)>)
RETURNS <return_type, sysname, nvarchar(4000)>
EXTERNAL NAME <assembly_name, sysname, sample_assembly>.<clr_type_name, sysname, sample_clr_name>
GO
@@ -0,0 +1,11 @@
-- =============================================
-- Drop Aggregate Template
-- =============================================
IF EXISTS(
SELECT *
FROM sys.objects
WHERE name = N'<aggregate_name, sysname, test_agg>'
AND (type = 'AF')
)
DROP AGGREGATE <aggregate_name, sysname, test_agg>
GO
@@ -0,0 +1,15 @@
--=============================================================
-- Create Assembly Template
--=============================================================
IF EXISTS(
SELECT *
FROM sys.assemblies
WHERE name = N'<assembly_name, SYSNAME, MyClass>'
)
DROP ASSEMBLY <assembly_name, SYSNAME, MyClass>;
GO
CREATE ASSEMBLY <assembly_name, SYSNAME, MyClass>
FROM N'<Assembly_DLL_Name, nvarchar(4000), Path_MyAssembly.dll>'
WITH PERMISSION_SET = <Safe_External_Access_Unsafe, , SAFE>;
GO
@@ -0,0 +1,12 @@
--=============================================================
-- Drop Assembly Template
--=============================================================
IF EXISTS(
SELECT *
FROM sys.assemblies
WHERE name = N'<assembly_name, SYSNAME, MyClass>'
)
DROP ASSEMBLY <assembly_name, SYSNAME, MyClass>
@@ -0,0 +1,16 @@
-- =============================================
-- Alter Database Audit Specification Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER DATABASE AUDIT SPECIFICATION <audit_specification_name,nvarchar,audit_specification_name>
FOR SERVER AUDIT <audit_name,nvarchar,audit_name>
DROP (SELECT on <object,nvarchar,table1> BY <principal, nvarchar, user1>)
ADD (INSERT on <object,nvarchar,table1> BY <principal, nvarchar, user1>)
WITH ( STATE = <state,bool,OFF > )
@@ -0,0 +1,16 @@
-- =============================================
-- Alter Server Audit Specification Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER SERVER AUDIT SPECIFICATION <audit_specification_name,nvarchar,audit_specification_name>
FOR SERVER AUDIT <audit_name,nvarchar,audit_name>
DROP(<audit_action_group_name,name,FAILED_LOGIN_GROUP>)
ADD (<audit_action_group_name,name,SUCCESSFUL_LOGIN_GROUP>)
WITH ( STATE = <state,bool,OFF > )
@@ -0,0 +1,16 @@
-- =============================================
-- Alter Server Audit Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER SERVER AUDIT <audit_name,nvarchar,AUDIT_NAME>
TO FILE(FILEPATH = <filepath,nvarchar,N'file_path'>,
MAXSIZE=<size,integer,2147483647>,
MAX_ROLLOVER_FILES =<files,integer,0>,
RESERVE_DISK_SPACE =<reserve_disk_space,bool,OFF>)
WITH (QUEUE_DELAY = <milliseconds,integer,1000>,
ON_FAILURE = <On_failure,,SHUTDOWN> )
@@ -0,0 +1,14 @@
-- =============================================
-- Create Database Audit Specification Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE DATABASE AUDIT SPECIFICATION <audit_specification_name,nvarchar,audit_specification_name>
FOR SERVER AUDIT <audit_name,nvarchar,audit_name>
ADD (SELECT on <object,nvarchar,table1>BY <principal, nvarchar,user1>) WITH ( STATE = <state,bool,OFF > )
@@ -0,0 +1,15 @@
-- =============================================
-- Create Server Audit Specification Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE SERVER AUDIT SPECIFICATION <audit_specification_name,nvarchar,audit_specification_name>
FOR SERVER AUDIT <audit_name,nvarchar,audit_name>
ADD (<audit_action_group_name,sysname,FAILED_LOGIN_GROUP> )
WITH ( STATE = <state,bool,OFF > )
@@ -0,0 +1,16 @@
-- =============================================
-- Create Server Audit Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE SERVER AUDIT audit_name
TO FILE (FILEPATH = <filepath,nVarChar,N'file_path'>,
MAXSIZE=<size,integer,2147483647 >,
MAX_ROLLOVER_FILES =<files,integer,0>,
RESERVE_DISK_SPACE =<reserve_disk_space,bool,OFF>)
WITH (QUEUE_DELAY = <milliseconds,integer,1000>,
ON_FAILURE = <On_failure,,SHUTDOWN> )
@@ -0,0 +1,11 @@
-- =============================================
-- Drop Database Audit Specification Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
DROP DATABASE AUDIT SPECIFICATION <audit_specification_name,nVarchar,audit_specification_name>
@@ -0,0 +1,10 @@
-- =============================================
-- Drop Server Audit Specification Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
DROP SERVER AUDIT SPECIFICATION <audit_specification_name,nVarchar,audit_specification_name>
@@ -0,0 +1,10 @@
-- =============================================
-- Drop Server Audit Template
-- =============================================
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
DROP SERVER AUDIT <audit_name,nVarchar,audit_name>
@@ -0,0 +1,15 @@
--=================================
-- Create certificate template
--=================================
IF EXISTS(
SELECT *
FROM sys.certificates
WHERE name = N'<certificate_name, sysname, sample_certificate>'
)
DROP CERTIFICATE <certificate_name, sysname, sample_certificate>
GO
CREATE CERTIFICATE <certificate_name, sysname, sample_certificate>
ENCRYPTION BY PASSWORD = <certificate_password, sysname, '1()ds5274-785$0HA05432-22379;}'>
WITH SUBJECT = <certificate_subject, sysname, 'MySampleCertificate'>;
GO
@@ -0,0 +1,10 @@
--=================================
-- Drop certificate template
--=================================
IF EXISTS(
SELECT *
FROM sys.certificates
WHERE name = N'<certificate_name, sysname, sample_certificate>'
)
DROP CERTIFICATE <certificate_name, sysname, sample_certificate>
GO
@@ -0,0 +1,16 @@
-- ======================================
-- Backup a CDC Enabled Database Template
-- ======================================
USE master
GO
BACKUP DATABASE <Database_Name,sysname,Database_Name>
TO DISK = N'<Backup_Path,,C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Backup\><Database_Name,sysname,Database_Name>.bak'
WITH
NOFORMAT,
NOINIT,
NAME = N'<Database_Name,sysname,Database_Name>-Full Database Backup',
SKIP,
STATS = 10;
GO
@@ -0,0 +1,11 @@
-- ===============================================
-- Change CDC Capture Job Pollinginterval Template
-- ===============================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC [sys].[sp_cdc_change_job]
@job_type = N'capture',
@pollinginterval = <pollinginterval,bigint,pollinginterval>
GO
@@ -0,0 +1,11 @@
-- =========================================
-- Change CDC Cleanup Job Retention Template
-- =========================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC [sys].[sp_cdc_change_job]
@job_type = N'cleanup',
@retention = <retention,bigint,retention>
GO
@@ -0,0 +1,66 @@
-- =================================================
-- Compute CPS for Recent Log Scan Sessions Template
-- =================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @command_count bigint,
@duration int,
@total_commands bigint,
@total_duration int
DECLARE @log_scan_sessions TABLE(
session_id int,
start_time datetime,
end_time datetime,
duration int,
scan_phase nvarchar(200),
error_count int,
start_lsn nvarchar(24),
current_lsn nvarchar(24),
end_lsn nvarchar(24),
tran_count bigint,
last_commit_lsn nvarchar(24),
last_commit_time datetime,
log_record_count bigint,
schema_change_count int,
command_count bigint,
first_begin_cdc_lsn nvarchar(24),
last_commit_cdc_lsn nvarchar(24),
last_commit_cdc_time datetime,
latency int,
empty_scan_count int,
failed_sessions_count int)
INSERT INTO @log_scan_sessions
SELECT * FROM [sys].[dm_cdc_log_scan_sessions]
WHERE empty_scan_count = 0
AND session_id <> 0
SET @total_commands = 0
SET @total_duration = 0
DECLARE #session CURSOR LOCAL fast_forward
FOR
SELECT command_count, duration
FROM @log_scan_sessions
OPEN #session
FETCH #session INTO @command_count, @duration
WHILE (@@fetch_status <> -1)
BEGIN
SET @total_commands = @total_commands + @command_count
SET @total_duration = @total_duration + @duration
FETCH #session INTO @command_count, @duration
END
SELECT (@total_commands / @total_duration) AS "Commands Per Second"
CLOSE #session
DEALLOCATE #session
GO
@@ -0,0 +1,26 @@
-- =======================================
-- Restore a CDC Enabled Database Template
-- =======================================
USE master
GO
RESTORE DATABASE <Database_Name,sysname,Database_Name>
FROM DISK = N'<Backup_Path,,C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Backup\><Database_Name,sysname,Database_Name>.bak'
WITH
FILE = 1,
NOUNLOAD,
REPLACE,
STATS = 10,
KEEP_CDC
GO
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_add_job @job_type = N'cleanup'
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture'
GO
@@ -0,0 +1,11 @@
-- =====================================================
-- Return Aggregate Log Scan Session Statistics Template
-- =====================================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT * FROM [sys].[dm_cdc_log_scan_sessions]
WHERE session_id = 0
GO
@@ -0,0 +1,24 @@
-- ======================================
-- Return Capture Job Parameters Template
-- ======================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @cdc_jobs table(
job_id uniqueidentifier,
job_type nvarchar(20) not null,
job_name sysname,
maxtrans int NULL,
maxscans int NULL,
continuous bit NULL,
pollinginterval bigint NULL,
retention bigint NULL,
threshold bigint NULL)
INSERT INTO @cdc_jobs
EXEC [sys].[sp_cdc_help_jobs]
SELECT maxtrans, maxscans, continuous, pollinginterval
FROM @cdc_jobs
WHERE job_type = N'capture'
GO
@@ -0,0 +1,8 @@
-- ===============================================
-- Return Capture Process Log Scan Errors Template
-- ===============================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT * FROM [sys].[dm_cdc_errors]
GO
@@ -0,0 +1,8 @@
-- ===================================================
-- Return Capture Process Log Scan Statistics Template
-- ===================================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT * FROM [sys].[dm_cdc_log_scan_sessions]
GO
@@ -0,0 +1,24 @@
-- ======================================
-- Return Cleanup Job Parameters Template
-- ======================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @cdc_jobs table(
job_id uniqueidentifier,
job_type nvarchar(20) not null,
job_name sysname,
maxtrans int NULL,
maxscans int NULL,
continuous bit NULL,
pollinginterval bigint NULL,
retention bigint NULL,
threshold bigint NULL)
INSERT INTO @cdc_jobs
EXEC [sys].[sp_cdc_help_jobs]
SELECT retention, threshold
FROM @cdc_jobs
WHERE job_type = N'cleanup'
GO
@@ -0,0 +1,10 @@
-- ==============================
-- Start CDC Capture Job Template
-- ==============================
USE <Database_Name,sysname,Database_Name>
GO
EXEC [sys].[sp_cdc_start_job]
@job_type = N'capture'
GO
@@ -0,0 +1,10 @@
-- ==============================
-- Start CDC Cleanup Job Template
-- ==============================
USE <Database_Name,sysname,Database_Name>
GO
EXEC [sys].[sp_cdc_start_job]
@job_type = N'cleanup'
GO
@@ -0,0 +1,10 @@
-- =============================
-- Stop CDC Capture Job Template
-- =============================
USE <Database_Name,sysname,Database_Name>
GO
EXEC [sys].[sp_cdc_stop_job]
@job_type = N'capture'
GO
@@ -0,0 +1,10 @@
-- =============================
-- Stop CDC Cleanup Job Template
-- =============================
USE <Database_Name,sysname,Database_Name>
GO
EXEC [sys].[sp_cdc_stop_job]
@job_type = N'cleanup'
GO
@@ -0,0 +1,54 @@
-- ===================================================
-- Disable All Capture Instances for a Schema Template
-- ===================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @capture_instances table (
source_schema sysname,
source_table sysname,
capture_instance sysname,
object_id int,
source_object_id int,
start_lsn binary(10),
end_lsn binary(10) NULL,
supports_net_changes bit,
has_drop_pending bit NULL,
role_name sysname NULL,
index_name sysname NULL,
filegroup_name sysname NULL,
create_date datetime,
index_column_list nvarchar(max) NULL,
captured_column_list nvarchar(max))
DECLARE @source_schema sysname,
@source_name sysname,
@capture_instance sysname
SET @source_schema = N'<source_schema,sysname,source_schema>'
INSERT INTO @capture_instances
EXEC [sys].[sp_cdc_help_change_data_capture]
DECLARE #hinstance CURSOR LOCAL fast_forward
FOR
SELECT source_table, capture_instance
FROM @capture_instances
WHERE source_schema = @source_schema
OPEN #hinstance
FETCH #hinstance INTO @source_name, @capture_instance
WHILE (@@fetch_status <> -1)
BEGIN
EXEC [sys].[sp_cdc_disable_table]
@source_schema
,@source_name
,@capture_instance
FETCH #hinstance INTO @source_name, @capture_instance
END
CLOSE #hinstance
DEALLOCATE #hinstance
GO
@@ -0,0 +1,11 @@
-- ===============================================
-- Disable a Capture Instance for a Table Template
-- ===============================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_disable_table
@source_schema = N'<source_schema,sysname,source_schema>',
@source_name = N'<source_name,sysname,source_name>',
@capture_instance = N'<capture_instance,sysname,capture_instance>'
GO
@@ -0,0 +1,8 @@
-- =================================
-- Disable Database for CDC Template
-- =================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_disable_db
GO
@@ -0,0 +1,32 @@
-- ===============================================
-- Enable All Tables of a Database Schema Template
-- ===============================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @source_schema sysname, @source_name sysname
SET @source_schema = N'<source_schema,sysname,source_schema>'
DECLARE #hinstance CURSOR LOCAL fast_forward
FOR
SELECT name
FROM [sys].[tables]
WHERE SCHEMA_NAME(schema_id) = @source_schema
AND is_ms_shipped = 0
OPEN #hinstance
FETCH #hinstance INTO @source_name
WHILE (@@fetch_status <> -1)
BEGIN
EXEC [sys].[sp_cdc_enable_table]
@source_schema
,@source_name
,@role_name = NULL
,@supports_net_changes = 1
FETCH #hinstance INTO @source_name
END
CLOSE #hinstance
DEALLOCATE #hinstance
GO
@@ -0,0 +1,8 @@
-- ================================
-- Enable Database for CDC Template
-- ================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_enable_db
GO
@@ -0,0 +1,13 @@
-- ===================================================
-- Enable a Table Naming the Capture Instance Template
-- ===================================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'<source_schema,sysname,source_schema>',
@source_name = N'<source_name,sysname,source_name>',
@role_name = N'<role_name,sysname,role_name>',
@capture_instance = N'<capture_instance,sysname,capture_instance>',
@supports_net_changes = 1
GO
@@ -0,0 +1,13 @@
-- ===================================================
-- Enable a Table Specifying Filegroup Option Template
-- ===================================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'<source_schema,sysname,source_schema>',
@source_name = N'<source_name,sysname,source_name>',
@role_name = N'<role_name,sysname,role_name>',
@filegroup_name = N'<filegroup_name,sysname,filegroup_name>',
@supports_net_changes = 1
GO
@@ -0,0 +1,13 @@
-- ===================================================
-- Enable a Table Specifying the Index Option Template
-- ===================================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'<source_schema,sysname,source_schema>',
@source_name = N'<source_name,sysname,source_name>',
@role_name = N'<role_name,sysname,role_name>',
@index_name = N'<index_name,sysname,index_name>',
@supports_net_changes = 1
GO
@@ -0,0 +1,12 @@
-- ===================================================
-- Enable a Table Without Using a Gating Role Template
-- ===================================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'<source_schema,sysname,source_schema>',
@source_name = N'<source_name,sysname,source_name>',
@role_name = NULL,
@supports_net_changes = 1
GO
@@ -0,0 +1,13 @@
-- ===============================================
-- Enable a Table for All Changes Queries Template
-- ===============================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'<source_schema,sysname,source_schema>',
@source_name = N'<source_name,sysname,source_name>',
@role_name = N'<role_name,sysname,role_name>',
@supports_net_changes = 0
GO
@@ -0,0 +1,12 @@
-- =======================================================
-- Enable a Table for All and Net Changes Queries Template
-- =======================================================
USE <Database_Name,sysname,Database_Name>
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'<source_schema,sysname,source_schema>',
@source_name = N'<source_name,sysname,source_name>',
@role_name = N'<role_name,sysname,role_name>',
@supports_net_changes = 1
GO
@@ -0,0 +1,74 @@
-- ==================================================
-- Instantiate CDC Wrapper TVFs for a Schema Template
-- ==================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @capture_instances table (
source_schema sysname,
source_table sysname,
capture_instance sysname,
object_id int,
source_object_id int,
start_lsn binary(10),
end_lsn binary(10) NULL,
supports_net_changes bit,
has_drop_pending bit NULL,
role_name sysname NULL,
index_name sysname NULL,
filegroup_name sysname NULL,
create_date datetime,
index_column_list nvarchar(max) NULL,
captured_column_list nvarchar(max))
DECLARE @wrapper_functions table (
function_name sysname,
create_script nvarchar(max))
DECLARE @source_schema sysname,
@source_name sysname,
@capture_instance sysname,
@create_script nvarchar(max)
SET @source_schema = N'<source_schema,sysname,source_schema>'
INSERT INTO @capture_instances
EXEC [sys].[sp_cdc_help_change_data_capture]
DECLARE #hinstance CURSOR LOCAL fast_forward
FOR
SELECT capture_instance
FROM @capture_instances
WHERE source_schema = @source_schema
OPEN #hinstance
FETCH #hinstance INTO @capture_instance
WHILE (@@fetch_status <> -1)
BEGIN
INSERT INTO @wrapper_functions
EXEC [sys].[sp_cdc_generate_wrapper_function] @capture_instance
FETCH #hinstance INTO @capture_instance
END
CLOSE #hinstance
DEALLOCATE #hinstance
DECLARE #hscript CURSOR LOCAL fast_forward
FOR
SELECT create_script
FROM @wrapper_functions
OPEN #hscript
FETCH #hscript INTO @create_script
WHILE (@@fetch_status <> -1)
BEGIN
EXEC (@create_script)
FETCH #hscript INTO @create_script
END
CLOSE #hscript
DEALLOCATE #hscript
GO
@@ -0,0 +1,28 @@
-- ======================================================
-- Instantiate a Wrapper TVF With an Update Flag Template
-- ======================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @wrapper_functions table (
function_name sysname,
create_script nvarchar(max))
DECLARE @create_script nvarchar(max),
@capture_instance sysname,
@update_flag_list nvarchar(max)
SET @capture_instance = N'<capture_instance,sysname,capture_instance>'
SET @update_flag_list = N'<column_needing_update_flag,sysname,column_needing_update_flag>'
INSERT INTO @wrapper_functions
EXEC [sys].[sp_cdc_generate_wrapper_function]
@capture_instance = @capture_instance,
@update_flag_list = @update_flag_list
SELECT @create_script = create_script
FROM @wrapper_functions
WHERE function_name like N'fn_net_changes%'
EXEC (@create_script)
GO
@@ -0,0 +1,18 @@
-- =====================================================
-- Append Commit Time to All Changes Result Set Template
-- =====================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
sys.fn_cdc_get_min_lsn('<capture_instance,sysname,capture_instance>')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT q.*, m.tran_end_time AS COMMIT_TIME
FROM cdc.fn_cdc_get_all_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all') q
INNER JOIN cdc.lsn_time_mapping m
ON q.__$start_lsn = m.start_lsn
GO
@@ -0,0 +1,24 @@
-- =====================================================
-- Create Function fn_convertnumericlsntobinary Template
-- =====================================================
USE <Database_Name,sysname,Database_Name>
GO
CREATE FUNCTION dbo.fn_convertnumericlsntobinary(
@numericlsn numeric(25,0)
) returns binary(10)
AS
BEGIN
DECLARE @high4bytelsncomponent bigint,
@mid4bytelsncomponent bigint,
@low2bytelsncomponent int
SELECT @high4bytelsncomponent = CONVERT(bigint, floor(@numericlsn / 1000000000000000))
SELECT @numericlsn = @numericlsn - CONVERT(numeric(25,0), @high4bytelsncomponent) * 1000000000000000
SELECT @mid4bytelsncomponent = CONVERT(bigint,floor(@numericlsn / 100000))
SELECT @numericlsn = @numericlsn - CONVERT(numeric(25,0), @mid4bytelsncomponent) * 100000
SELECT @low2bytelsncomponent = CONVERT(int, @numericlsn)
RETURN CONVERT(binary(4), @high4bytelsncomponent) +
CONVERT(binary(4), @mid4bytelsncomponent) +
CONVERT(binary(2), @low2bytelsncomponent)
END
GO
@@ -0,0 +1,13 @@
-- =========================================================
-- Enumerate All Changes Since the Previous Request Template
-- =========================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10), @previous_to_lsn binary(10)
SET @previous_to_lsn = <previous_to_lsn,binary(10),previous_to_lsn>
SET @from_lsn = sys.fn_cdc_increment_lsn(@previous_to_lsn)
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all')
GO
@@ -0,0 +1,22 @@
-- ===========================================
-- Enumerate All Changes Up Until Now Template
-- ===========================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10), @end_time datetime
SET @from_lsn =
sys.fn_cdc_get_min_lsn('<capture_instance,sysname,capture_instance>')
SET @end_time = GETDATE()
DELAY:
IF (sys.fn_cdc_map_lsn_to_time(sys.fn_cdc_get_max_lsn()) <= @end_time)
BEGIN
WAITFOR DELAY '00:01:00'
GOTO DELAY
END
SET @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time)
SELECT * FROM cdc.fn_cdc_get_all_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all')
GO
@@ -0,0 +1,13 @@
-- ==================================================
-- Enumerate All Changes for the Valid Range Template
-- ==================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
sys.fn_cdc_get_min_lsn('<capture_instance,sysname,capture_instance>')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all')
GO
@@ -0,0 +1,23 @@
-- ==================================================
-- Enumerate Net Changes Using All With Mask Template
-- ==================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10),
@to_lsn binary(10),
@column_ordinal int
SET @from_lsn =
sys.fn_cdc_get_min_lsn('<capture_instance,sysname,capture_instance>')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SET @column_ordinal = sys.fn_cdc_get_column_ordinal
(N'<capture_instance,sysname,capture_instance>',
N'<column_name,sysname,column_name>')
SELECT *,
sys.fn_cdc_is_bit_set(@column_ordinal, __$update_mask)
AS <column_name,sysname,column_name>_changed
FROM cdc.fn_cdc_get_net_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all with mask')
GO
@@ -0,0 +1,46 @@
-- ==============================================
-- Enumerate Net Changes Using TRY CATCH Template
-- ==============================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
sys.fn_cdc_get_min_lsn('<capture_instance,sysname,capture_instance>')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
BEGIN TRY
SELECT * FROM cdc.fn_cdc_get_all_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all')
END TRY
BEGIN CATCH
DECLARE
@ERROR_SEVERITY INT,
@ERROR_STATE INT,
@ERROR_NUMBER INT,
@ERROR_LINE INT,
@ERROR_MESSAGE VARCHAR(245)
SELECT
@ERROR_SEVERITY = ERROR_SEVERITY(),
@ERROR_STATE = ERROR_STATE(),
@ERROR_NUMBER = ERROR_NUMBER(),
@ERROR_LINE = ERROR_LINE(),
@ERROR_MESSAGE = ERROR_MESSAGE()
IF @ERROR_NUMBER = 313
RAISERROR(
'Either a range parameter or the row filter option is not valid.',
@ERROR_SEVERITY, @ERROR_STATE)
ELSE
IF @ERROR_NUMBER = 229
RAISERROR(
'The caller is not authorized to perform the query.',
@ERROR_SEVERITY, @ERROR_STATE)
ELSE
RAISERROR('Msg %d, Line %d: %s',
@ERROR_SEVERITY, @ERROR_STATE, @ERROR_NUMBER,
@ERROR_LINE, @ERROR_MESSAGE)
END CATCH
GO
@@ -0,0 +1,13 @@
-- ==================================================
-- Enumerate Net Changes for the Valid Range Template
-- ==================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
sys.fn_cdc_get_min_lsn('<capture_instance,sysname,capture_instance>')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_net_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all')
GO
@@ -0,0 +1,9 @@
-- ==========================================================
-- Get Net Changes Using a Wrapper With Update Flags Template
-- ==========================================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT * FROM fn_net_changes_<capture_instance,sysname,capture_instance>
(NULL, NULL, N'all with mask')
GO
@@ -0,0 +1,9 @@
-- ======================================================
-- Query for All Changes With a Wrapper Function Template
-- ======================================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT * FROM fn_all_changes_<capture_instance,sysname,capture_instance>
(NULL, NULL, N'all')
GO
@@ -0,0 +1,9 @@
-- ======================================================
-- Query for Net Changes With a Wrapper Function Template
-- ======================================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT * FROM fn_net_changes_<capture_instance,sysname,capture_instance>
(NULL, NULL, N'all')
GO
@@ -0,0 +1,22 @@
-- =======================================================
-- Return All Changes With a Given tran_begin_lsn Template
-- =======================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @from_lsn binary(10),
@to_lsn binary(10),
@database_transaction_begin_lsn numeric(25,0)
SET @from_lsn =
sys.fn_cdc_get_min_lsn('<capture_instance,sysname,capture_instance>')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SET @database_transaction_begin_lsn = <database_transaction_begin_lsn,numeric(25,0),database_transaction_begin_lsn>
SELECT q.*
FROM cdc.fn_cdc_get_all_changes_<capture_instance,sysname,capture_instance>
(@from_lsn, @to_lsn, N'all') q
INNER JOIN cdc.lsn_time_mapping m
ON q.__$start_lsn = m.start_lsn
WHERE dbo.fn_convertnumericlsntobinary(@database_transaction_begin_lsn) = m.tran_begin_lsn
GO
@@ -0,0 +1,11 @@
-- ========================================================
-- Determine Whether a Database is Enabled for CDC Template
-- ========================================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT is_cdc_enabled FROM sys.databases
WHERE name = N'<Database_Name,sysname,Database_Name>'
GO
@@ -0,0 +1,11 @@
-- =====================================================
-- Determine Whether a Table is Enabled for CDC Template
-- =====================================================
USE <Database_Name,sysname,Database_Name>
GO
SELECT is_tracked_by_cdc FROM sys.tables
WHERE object_id = object_id(N'<source_schema,sysname,source_schema>.<source_name,sysname,source_name>')
GO
@@ -0,0 +1,29 @@
-- =========================================================
-- Return All Accessible Database Capture Instances Template
-- =========================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @capture_instances table (
source_schema sysname,
source_table sysname,
capture_instance sysname,
object_id int,
source_object_id int,
start_lsn binary(10),
end_lsn binary(10) NULL,
supports_net_changes bit,
has_drop_pending bit NULL,
role_name sysname NULL,
index_name sysname NULL,
filegroup_name sysname NULL,
create_date datetime,
index_column_list nvarchar(max) NULL,
captured_column_list nvarchar(max))
INSERT INTO @capture_instances
EXEC [sys].[sp_cdc_help_change_data_capture]
SELECT source_schema, source_table, capture_instance
FROM @capture_instances
GO
@@ -0,0 +1,27 @@
-- ==========================================================
-- Return the Captured Columns of a Capture Instance Template
-- ==========================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @captured_columns table (
source_schema sysname,
source_table sysname,
capture_instance sysname,
column_name sysname,
column_id int,
ordinal_position int,
data_type sysname,
character_maximum_length int NULL,
numeric_precision tinyint NULL,
numeric_precision_radix smallint NULL,
numeric_scale int NULL,
datetime_precision smallint NULL)
INSERT INTO @captured_columns
EXEC [sys].[sp_cdc_get_captured_columns] N'<capture_instance,sysname,capture_instance>'
SELECT ordinal_position, column_name, data_type
FROM @captured_columns
ORDER BY ordinal_position
GO
@@ -0,0 +1,60 @@
-- =====================================================
-- Return the DDL Changes to All Enabled Tables Template
-- =====================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @capture_instance sysname
DECLARE @capture_instances table (
source_schema sysname,
source_table sysname,
capture_instance sysname,
object_id int,
source_object_id int,
start_lsn binary(10),
end_lsn binary(10) NULL,
supports_net_changes bit,
has_drop_pending bit NULL,
role_name sysname NULL,
index_name sysname NULL,
filegroup_name sysname NULL,
create_date datetime,
index_column_list nvarchar(max) NULL,
captured_column_list nvarchar(max))
DECLARE @ddl_history table (
source_schema sysname,
source_table sysname,
capture_instance sysname,
required_column_update bit,
ddl_command nvarchar(max),
ddl_lsn binary(10),
ddl_time datetime)
INSERT INTO @capture_instances
EXEC [sys].[sp_cdc_help_change_data_capture]
DECLARE #hinstance CURSOR LOCAL fast_forward
FOR
SELECT capture_instance
FROM @capture_instances
OPEN #hinstance
FETCH #hinstance INTO @capture_instance
WHILE (@@fetch_status <> -1)
BEGIN
INSERT INTO @ddl_history
EXEC [sys].[sp_cdc_get_ddl_history] @capture_instance
FETCH #hinstance INTO @capture_instance
END
CLOSE #hinstance
DEALLOCATE #hinstance
SELECT source_schema, source_table, capture_instance, ddl_time, ddl_command
FROM @ddl_history
ORDER BY ddl_time
GO
@@ -0,0 +1,23 @@
-- ==========================================================
-- Return the DDL Changes to an Enabled Source Table Template
-- ==========================================================
USE <Database_Name,sysname,Database_Name>
GO
DECLARE @ddl_history table (
source_schema sysname,
source_table sysname,
capture_instance sysname,
required_column_update bit,
ddl_command nvarchar(max),
ddl_lsn binary(10),
ddl_time datetime)
INSERT INTO @ddl_history
EXEC [sys].[sp_cdc_get_ddl_history]
N'<capture_instance,sysname,capture_instance>'
SELECT source_schema, source_table, ddl_time, ddl_command
FROM @ddl_history
ORDER BY ddl_time
GO
@@ -0,0 +1,12 @@
-- ===============================================================
-- Alter database with modifyingt change tracking options template
-- ===============================================================
USE master
GO
ALTER DATABASE <Database_Name,sysname,Database_Name> SET CHANGE_TRACKING
(
CHANGE_RETENTION = <Retention_Period,int,Retention_Period> <Retention_Period_Units,int,Retention_Period_Units> ,
AUTO_CLEANUP = <Auto_Cleanup,bit,Auto_Cleanup>
)
GO
@@ -0,0 +1,8 @@
-- =============================================
-- Alter database with Disable change tracking template
-- =============================================
USE master
GO
ALTER DATABASE <Database_Name,sysname,Database_Name> SET CHANGE_TRACKING = OFF
GO
@@ -0,0 +1,11 @@
--==========================================================================
-- Alter Table Change Tracking template
--
-- This template enables the Change Tracking on Table with options
--==========================================================================
USE MASTER
GO
ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, table_name>
DISABLE CHANGE_TRACKING
GO
@@ -0,0 +1,15 @@
--==========================================================================
-- Alter Table Enable Change Tracking template
--
-- This template enables the Change Tracking on Table with options
--==========================================================================
USE MASTER
GO
ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, table_name>
ENABLE CHANGE_TRACKING
WITH
(
TRACK_COLUMNS_UPDATED = <track_columns_updated,bit,<track_columns_updated>
)
GO
@@ -0,0 +1,12 @@
-- =============================================
-- Alter database Set Change Tracking On Template
-- =============================================
USE master
GO
ALTER DATABASE <Database_Name,sysname,Database_Name> SET CHANGE_TRACKING = ON
(
CHANGE_RETENTION = <Retention_Period,int,Retention_Period> <Retention_Period_Units,int,Retention_Period_Units> ,
AUTO_CLEANUP = <Auto_Cleanup,bit,Auto_Cleanup>
)
GO
@@ -0,0 +1,15 @@
--=================================
-- Create credential template
--=================================
IF EXISTS(
SELECT *
FROM sys.credentials
WHERE name = N'<credential_name, sysname, sample_credential>'
)
DROP CREDENTIAL <credential_name, sysname, sample_credential>
GO
CREATE CREDENTIAL <credential_name, sysname, sample_credential>
WITH IDENTITY = <identity_name, sysname, 'sample_identity'>
FOR CRYPTOGRAPHIC_PROVIDER <cryptographic_provider_name, sysname, sample_provider>
GO
@@ -0,0 +1,10 @@
--=================================
-- Drop credential template
--=================================
IF EXISTS(
SELECT *
FROM sys.credentials
WHERE name = N'<credential_name, sysname, sample_credential>'
)
DROP CREDENTIAL <credential_name, sysname, sample_credential>
GO
@@ -0,0 +1,32 @@
-- ================================
-- Create Database Role template
-- ================================
USE <database_name, sysname, AdventureWorks>
GO
-- Create the database role
CREATE ROLE <role_name, sysname, Production_Owner> AUTHORIZATION [dbo]
GO
-- Grant access rights to a specific schema in the database
GRANT
ALTER,
CONTROL,
DELETE,
EXECUTE,
INSERT,
REFERENCES,
SELECT,
TAKE OWNERSHIP,
UPDATE,
VIEW DEFINITION
ON SCHEMA::<schema_name, sysname, Production>
TO <role_name, sysname, Production_Owner>
GO
-- Add an existing user to the role
ALTER ROLE <role_name, sysname, Production_Owner> ADD MEMBER <user_name, sysname, user_name>
GO
@@ -0,0 +1,34 @@
-- ============================
-- Drop Role Member template
-- ============================
USE <database_name, sysname, AdventureWorks>
GO
-- Create the database role
CREATE ROLE <role_name, sysname, Production_Owner> AUTHORIZATION [dbo]
GO
-- Grant access rights to a specific schema in the database
GRANT
ALTER,
CONTROL,
DELETE,
EXECUTE,
INSERT,
REFERENCES,
SELECT,
TAKE OWNERSHIP,
UPDATE,
VIEW DEFINITION
ON SCHEMA::<schema_name, sysname, Production>
TO <role_name, sysname, Production_Owner>
GO
-- Add an existing user to the role
ALTER ROLE <role_name, sysname, Production_Owner> ADD MEMBER <user_name, sysname, user_name>
GO
-- Drop the user from the role
ALTER ROLE <role_name, sysname, Production_Owner> DROP MEMBER <user_name, sysname, user_name>
GO
@@ -0,0 +1,14 @@
-- =====================
-- Drop Role template
-- =====================
USE <database_name, sysname, AdventureWorks>;
GO
-- Create the database role
CREATE ROLE <role_name, sysname, Production_Owner> AUTHORIZATION [dbo];
GO
-- Drop the role
DROP ROLE <role_name, sysname, Production_Owner>;
GO
@@ -0,0 +1,18 @@
--====================================
-- Alter database trigger template
--====================================
USE <database_name, sysname, AdventureWorks>
GO
ALTER TRIGGER <trigger_name, sysname, table_alter_drop_safety> ON DATABASE
FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE>
AS
IF IS_MEMBER ('db_owner') = 0
BEGIN
PRINT 'You must ask your DBA to drop or alter tables!'
ROLLBACK TRANSACTION
END
GO
@@ -0,0 +1,26 @@
--====================================
-- Create database trigger template
--====================================
USE <database_name, sysname, AdventureWorks>
GO
IF EXISTS(
SELECT *
FROM sys.triggers
WHERE name = N'<trigger_name, sysname, table_alter_drop_safety>'
AND parent_class_desc = N'DATABASE'
)
DROP TRIGGER <trigger_name, sysname, table_alter_drop_safety> ON DATABASE
GO
CREATE TRIGGER <trigger_name, sysname, table_alter_drop_safety> ON DATABASE
FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE>
AS
IF IS_MEMBER ('db_owner') = 0
BEGIN
PRINT 'You must ask your DBA to drop or alter tables!'
ROLLBACK TRANSACTION
END
GO
@@ -0,0 +1,11 @@
--====================================
-- Drop database trigger template
--====================================
IF EXISTS(
SELECT *
FROM sys.triggers
WHERE name = N'<trigger_name, sysname, your_trigger_name>'
AND parent_class_desc = N'DATABASE'
)
DROP TRIGGER <trigger_name, sysname, your_trigger_name> ON DATABASE
GO
@@ -0,0 +1,7 @@
--==================================
-- Bring database online template
--==================================
ALTER DATABASE <Database_Name, sysname, Database_Name>
SET ONLINE
GO
@@ -0,0 +1,21 @@
-- =============================================
-- Create Database Snapshot Template
-- =============================================
USE master
GO
-- Drop database snapshot if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'<Database_Name, sysname, Database_Name>_<Snapshot_Id,,Snapshot_ID>'
)
DROP DATABASE <Database_Name, sysname, Database_Name>_<Snapshot_Id,,Snapshot_ID>
GO
-- Create the database snapshot
CREATE DATABASE <Database_Name, sysname, Database_Name>_<Snapshot_Id,,Snapshot_ID> ON
( NAME = <Database_Name, sysname, Database_Name>, FILENAME =
'C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\<Database_Name, sysname, Database_Name>_<Snapshot_Id,,Snapshot_ID>.ss' )
AS SNAPSHOT OF <Database_Name, sysname, Database_Name>;
GO
@@ -0,0 +1,59 @@
-- =============================================
-- Create database on mulitple filegroups
-- =============================================
IF EXISTS (
SELECT *
FROM sys.databases
WHERE name = N'<database_name, sysname, sample_database>'
)
DROP DATABASE <database_name, sysname, sample_database>
GO
CREATE DATABASE <database_name, sysname, sample_database>
ON PRIMARY
(NAME = <logical_filename1, , sample_database_file1>,
FILENAME = N'<data_filename1, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_1.mdf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
( NAME = <logical_filename2, , sample_database_file2>,
FILENAME = N'<data_filename2, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_2.ndf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
FILEGROUP <filegroup_1, , sample_database_filegroup1>
( NAME = <logical_filename3, , sample_database_file3>,
FILENAME = N'<data_filename3, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_3.ndf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
( NAME = <logical_filename4, , sample_database_file4>,
FILENAME = N'<data_filename4, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_4.ndf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
FILEGROUP <filegroup2, , sample_database_group_2>
( NAME = <logical_filename5, , sample_database_file5>,
FILENAME = N'<data_filename5, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_5.ndf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%)
LOG ON
( NAME = <logical_log_filename1, , sample_database_log_file1>,
FILENAME = N'<log_filename1, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_1.ldf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
( NAME = <logical_log_filename2, , sample_database_log_file2>,
FILENAME = N'<log_filename2, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_2.ldf>',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB)
GO
@@ -0,0 +1,47 @@
-- =============================================
-- Create database with filestream filegroups
-- =============================================
IF EXISTS (
SELECT *
FROM sys.databases
WHERE name = N'<database_name, sysname, sample_database>'
)
DROP DATABASE <database_name, sysname, sample_database>
GO
CREATE DATABASE <database_name, sysname, sample_database>
ON PRIMARY
(NAME = <logical_filename1, , sample_database_file1>,
FILENAME = N'<data_filename1, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_1.mdf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
( NAME = <logical_filename2, , sample_database_file2>,
FILENAME = N'<data_filename2, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_2.ndf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
FILEGROUP <filestream_filegroup_1, , sample_database_filegroup_1> CONTAINS FILESTREAM
( NAME = <logical_filename3, , sample_database_file3>,
FILENAME = N'<data_filename3, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_3>'),
FILEGROUP <filestream_filegroup_2, , sample_database_filegroup_2> CONTAINS FILESTREAM
( NAME = <logical_filename4, , sample_database_file4>,
FILENAME = N'<data_filename4, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_4>')
LOG ON
( NAME = <logical_log_filename1, , sample_database_log_file1>,
FILENAME = N'<log_filename1, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_1.ldf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
( NAME = <logical_log_filename2, , sample_database_log_file2>,
FILENAME = N'<log_filename2, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_2.ldf>',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB)
GO
@@ -0,0 +1,31 @@
-- =============================================
-- Create Database with MEMORY_OPTIMIZED_DATA Filegroup Template
-- =============================================
IF EXISTS (
SELECT *
FROM sys.databases
WHERE name = N'<database_name, sysname, sample_database>'
)
DROP DATABASE <database_name, sysname, sample_database>
GO
CREATE DATABASE <database_name, sysname, sample_database>
ON PRIMARY
(NAME = <logical_filename1, , sample_database_file1>,
FILENAME = N'<data_filename1, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_1.mdf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%),
FILEGROUP <memory_optimized_data_filegroup, , sample_database_filegroup> CONTAINS MEMORY_OPTIMIZED_DATA
( NAME = <logical_filegroup_filename1, , sample_database_filegroup_file1>,
FILENAME = N'<filegroup_filename1, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_1>')
LOG ON
( NAME = <logical_log_filename1, , sample_database_log_file1>,
FILENAME = N'<log_filename1, , C:\Program Files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\Datasample_database_1.ldf>',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10%)
GO
@@ -0,0 +1,6 @@
--==================================
-- Take database offline template
--==================================
ALTER DATABASE <Database_Name, sysname, Database_Name>
SET OFFLINE
GO
@@ -0,0 +1,12 @@
--=====================================
-- Attach database template
--=====================================
IF NOT EXISTS(
SELECT *
FROM sys.databases
WHERE name = N'<database_name, sysname, your_database_name>'
)
CREATE DATABASE <database_name, sysname, your_database_name>
ON PRIMARY (FILENAME = '<database_primary_file_path,,C:\Program files\Microsoft SQL Server\%INST_PRE%.MSSQLSERVER\MSSQL\Data\your_database_name.MDF>')
FOR ATTACH
GO
@@ -0,0 +1,17 @@
-- =============================================
-- Create database template
-- =============================================
USE master
GO
-- Drop the database if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'<Database_Name, sysname, Database_Name>'
)
DROP DATABASE <Database_Name, sysname, Database_Name>
GO
CREATE DATABASE <Database_Name, sysname, Database_Name>
GO
@@ -0,0 +1,7 @@
--=====================================
-- Detach database template
--=====================================
EXEC sp_detach_db @dbname = '<database_name, sysname, your_database_name>'
,@skipchecks = 'true'
,@KeepFulltextIndexFile = 'true'
GO
@@ -0,0 +1,13 @@
-- =========================
-- Drop Database Template
-- =========================
USE master
GO
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'<Database_Name, sysname, Database_Name>'
)
DROP DATABASE <Database_Name, sysname, Database_Name>
GO
@@ -0,0 +1,18 @@
-- ==========================
-- Create Default template
-- ==========================
-- This feature is marked for deprecation
USE <database_name, sysname, AdventureWorks>
GO
CREATE DEFAULT <schema_name, sysname, dbo>.<default_name, , today>
AS
getdate()
GO
-- Bind the default to a column
EXEC sp_bindefault
N'<schema_name, sysname, dbo>.<default_name, , today>',
N'<table_schema,,HumanResources>.<table_name,,Employee>.<column_name,,HireDate>'
GO
@@ -0,0 +1,10 @@
-- ============================
-- Create default constraint
-- ============================
ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, table_name>
ADD CONSTRAINT df_<column_name, sysname, column_name>
DEFAULT <default_expression, sysname, 0>
FOR <column_name, sysname, column_name>
GO
@@ -0,0 +1,7 @@
-- ===================================
-- Drop Default Constraint template
-- ===================================
ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, table_name>
DROP CONSTRAINT <default_constraint_name, sysname, default_constraint_name>
GO
@@ -0,0 +1,7 @@
-- ========================
-- Drop Default template
-- ========================
-- This feature is marked for deprecation
DROP DEFAULT <schema_name, sysname, dbo>.<default_name, , today>
GO
@@ -0,0 +1,7 @@
-- ==========================
-- Unbind Default template
-- ==========================
-- This feature is marked for deprecation
EXEC sp_unbindefault N'<table_schema,,HumanResources>.<table_name,,Employee>.<column_name,,HireDate>'
GO
@@ -0,0 +1,8 @@
-- =============================================
-- Attach database via sp_attach_db
-- =============================================
EXECUTE sp_attach_db @dbname = N'<database_name, sysname, test_db>',
@filename1 = N'<filename1, nvarchar(260), c:\program files\microsoft sql server\mssql\data\test_db.mdf>',
@filename2 = N'<filename2, nvarchar(260), c:\program files\microsoft sql server\mssql\data\test_db_log.ldf>'
GO
@@ -0,0 +1,9 @@
-- =============================================
-- Attach database via sp_attach_single_file_db
-- =============================================
-- note: it builds a new log file and performs additional cleanup work
-- to remove replication from the newly attached database
EXECUTE sp_attach_single_file_db @dbname = N'<database_name, sysname, test_db>',
@physname = N'<physname, nvarchar(260), c:\program files\microsoft sql server\mssql\data\test_db.mdf>'
GO
@@ -0,0 +1,7 @@
-- =============================================
-- Detach database via sp_detach_db
-- =============================================
EXECUTE sp_detach_db @dbname = N'<database_name, sysname, test_db>',
@skipchecks = N'<skipchecks, nvarchar(10), TRUE>'
GO
@@ -0,0 +1,12 @@
-- =============================================
-- Basic Create Database Template
-- =============================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'<database_name, sysname, test_db>')
DROP DATABASE <database_name, sysname, test_db>
GO
CREATE DATABASE <database_name, sysname, test_db>
GO
@@ -0,0 +1,51 @@
-- =============================================
-- Create database on mulitple file groups
-- =============================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'<database_name, sysname, test_db>')
DROP DATABASE <database_name, sysname, test_db>
GO
CREATE DATABASE <database_name, sysname, test_db>
ON PRIMARY
( NAME = <logical_file_name_1, , test_db_file_1>,
FILENAME = N'<os_file_name_1, , c:\program files\microsoft sql server\mssql\data\test_db_1.mdf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%),
( NAME = <logical_file_name_2, , test_db_file_2>,
FILENAME = N'<os_file_name_2, , c:\program files\microsoft sql server\mssql\data\test_db_2.ndf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%),
FILEGROUP <file_group_name_1, , test_db_group_1>
( NAME = <logical_file_name_3, , test_db_file_3>,
FILENAME = N'<os_file_name_3, , c:\program files\microsoft sql server\mssql\data\test_db_3.ndf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%),
( NAME = <logical_file_name_4, , test_db_file_4>,
FILENAME = N'<os_file_name_4, , c:\program files\microsoft sql server\mssql\data\test_db_4.ndf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%),
FILEGROUP <file_group_name_2, , test_db_group_2>
( NAME = <logical_file_name_5, , test_db_file_5>,
FILENAME = N'<os_file_name_5, , c:\program files\microsoft sql server\mssql\data\test_db_5.ndf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%)
LOG ON
( NAME = <logical_log_file_name_1, , test_db_log_file_1>,
FILENAME = N'<os_log_file_name_1, , c:\program files\microsoft sql server\mssql\data\test_db_log_1.ldf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%)
GO
@@ -0,0 +1,23 @@
-- =============================================
-- Create database specifying collation
-- =============================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'<database_name, sysname, test_db>')
DROP DATABASE <database_name, sysname, test_db>
GO
CREATE DATABASE <database_name, sysname, test_db>
COLLATE <collation_name, , Latin1_General_CI_AI>
GO
-- ==========================================================
-- sample query to retrieve all types of collations available
-- ==========================================================
-- SELECT *
-- FROM ::fn_helpcollations()
-- GO
@@ -0,0 +1,16 @@
-- =============================================
-- Create database for attach
-- =============================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'<database_name, sysname, test_db>')
DROP DATABASE <database_name, sysname, test_db>
GO
CREATE DATABASE <database_name, sysname, test_db>
ON PRIMARY
(FILENAME = N'<os_file_name, , c:\program files\microsoft sql server\mssql\data\test_db.mdf>')
FOR ATTACH
GO
@@ -0,0 +1,37 @@
-- =============================================
-- Create database on multiple data and transaction log files
-- =============================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'<database_name, sysname, test_db>')
DROP DATABASE <database_name, sysname, test_db>
GO
CREATE DATABASE <database_name, sysname, test_db>
ON PRIMARY
( NAME = <logical_file_name_1, , test_db_file_1>,
FILENAME = N'<os_file_name_1, , c:\program files\microsoft sql server\mssql\data\test_db_1.mdf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%),
( NAME = <logical_file_name_2, ,test_db_file_2>,
FILENAME = N'<os_file_name_2, , c:\program files\microsoft sql server\mssql\data\test_db_2.ndf>',
SIZE = 1MB,
MAXSIZE = 200MB,
FILEGROWTH = 10%)
LOG ON
( NAME = <logical_log_file_name_1, ,test_db_log_file_1>,
FILENAME = N'<os_log_file_name_1, , c:\program files\microsoft sql server\mssql\data\test_db_log_1.ldf>',
SIZE = 512KB,
MAXSIZE = 200MB,
FILEGROWTH = 10%),
( NAME = <logical_log_file_name_2, ,test_db_log_file_2>,
FILENAME = N'<os_log_file_name_2, , c:\program files\microsoft sql server\mssql\data\test_db_log_2.ldf>',
SIZE = 512KB,
MAXSIZE = 200MB,
FILEGROWTH = 10%)
GO
@@ -0,0 +1,27 @@
-- =============================================
-- Create inline function (IF)
-- =============================================
IF EXISTS (SELECT *
FROM sysobjects
WHERE name = N'<inline_function_name, sysname, test_function>')
DROP FUNCTION <inline_function_name, sysname, test_function>
GO
CREATE FUNCTION <inline_function_name, sysname, test_function>
(<@param1, sysname, @p1> <data_type_for_param1, , int>,
<@param2, sysname, @p2> <data_type_for_param2, , char>)
RETURNS TABLE
AS
RETURN SELECT @p1 AS c1,
@p2 AS c2
GO
-- =============================================
-- Example to execute function
-- =============================================
SELECT *
FROM <owner, , dbo>.<inline_function_name, sysname, test_function>
(<value_for_@param1, , 1>,
<value_for_@param2, , 'a'>)
GO
@@ -0,0 +1,31 @@
-- =============================================
-- Create scalar function (FN)
-- =============================================
IF EXISTS (SELECT *
FROM sysobjects
WHERE name = N'<scalar_function_name, sysname, test_function>')
DROP FUNCTION <scalar_function_name, sysname, test_function>
GO
CREATE FUNCTION <scalar_function_name, sysname, test_function>
(<@param1, sysname, @p1> <data_type_for_param1, , int>,
<@param2, sysname, @p2> <data_type_for_param2, , int>)
RETURNS <function_data_type, ,int>
AS
BEGIN
<function_body, , RETURN @p1 + @p2 >
-- eg.
-- DECLARE @sum AS int
-- SELECT @sum = @p1 + @P2
-- RETURN @sum
END
GO
-- =============================================
-- Example to execute function
-- =============================================
SELECT <owner, , dbo>.<scalar_function_name, sysname, test_function>
(<value_for_@param1, , 1>,
<value_for_@param2, , 2>)
GO
@@ -0,0 +1,31 @@
-- =============================================
-- Create table function (TF)
-- =============================================
IF EXISTS (SELECT *
FROM sysobjects
WHERE name = N'<table_function_name, sysname, test_function>')
DROP FUNCTION <table_function_name, sysname, test_function>
GO
CREATE FUNCTION <table_function_name, sysname, test_function>
(<@param1, sysname, @p1> <data_type_for_param1, , int>,
<@param2, sysname, @p2> <data_type_for_param2, , char>)
RETURNS <@table_variable_name, sysname, @table_var> TABLE
(<column_1, sysname, c1> <data_type_for_column1, , int>,
<column_2, sysname, c2> <data_type_for_column2, , int>)
AS
BEGIN
INSERT <@table_variable_name, sysname, @table_var>
SELECT 1, 2
RETURN
END
GO
-- =============================================
-- Example to execute function
-- =============================================
SELECT * FROM <owner, , dbo>.<table_function_name, sysname, test_function>
(<value_for_@param1, , 1>,
<value_for_@param2, , 2>)
GO
@@ -0,0 +1,11 @@
-- =============================================
-- Create index basic template
-- =============================================
CREATE INDEX <index_name, sysname, ind_test>
ON <database_name, sysname, pubs>.<owner, sysname, dbo>.<table_or_view_name, sysname, authors>
(<column_1, sysname, au_lname>,
<column_2, sysname, au_fname>)
GO

Some files were not shown because too many files have changed in this diff Show More