mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
sql samples
This commit is contained in:
@@ -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
|
||||
+16
@@ -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
|
||||
|
||||
+11
@@ -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
|
||||
|
||||
+11
@@ -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
|
||||
|
||||
+66
@@ -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
|
||||
|
||||
|
||||
+26
@@ -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
|
||||
|
||||
|
||||
+11
@@ -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
|
||||
|
||||
|
||||
+24
@@ -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
|
||||
+8
@@ -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
|
||||
+8
@@ -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
|
||||
+24
@@ -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
|
||||
+10
@@ -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
|
||||
|
||||
+10
@@ -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
|
||||
|
||||
+10
@@ -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
|
||||
|
||||
+10
@@ -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
|
||||
|
||||
+54
@@ -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
|
||||
+11
@@ -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
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
-- =================================
|
||||
-- Disable Database for CDC Template
|
||||
-- =================================
|
||||
USE <Database_Name,sysname,Database_Name>
|
||||
GO
|
||||
|
||||
EXEC sys.sp_cdc_disable_db
|
||||
GO
|
||||
+32
@@ -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
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
-- ================================
|
||||
-- Enable Database for CDC Template
|
||||
-- ================================
|
||||
USE <Database_Name,sysname,Database_Name>
|
||||
GO
|
||||
|
||||
EXEC sys.sp_cdc_enable_db
|
||||
GO
|
||||
+13
@@ -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
|
||||
+13
@@ -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
|
||||
+13
@@ -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
|
||||
+12
@@ -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
|
||||
+13
@@ -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
|
||||
|
||||
+12
@@ -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
|
||||
+74
@@ -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
|
||||
+28
@@ -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
|
||||
+18
@@ -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
|
||||
+24
@@ -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
|
||||
+13
@@ -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
|
||||
+22
@@ -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
|
||||
+13
@@ -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
|
||||
+23
@@ -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
|
||||
+46
@@ -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
|
||||
+13
@@ -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
|
||||
+9
@@ -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
|
||||
+9
@@ -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
|
||||
+9
@@ -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
|
||||
+22
@@ -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
|
||||
+11
@@ -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
|
||||
|
||||
|
||||
+11
@@ -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
|
||||
|
||||
|
||||
+29
@@ -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
|
||||
+27
@@ -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
|
||||
+60
@@ -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
|
||||
+23
@@ -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
|
||||
+12
@@ -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
|
||||
+8
@@ -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
|
||||
+11
@@ -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
|
||||
+15
@@ -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
|
||||
+12
@@ -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
|
||||
+59
@@ -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
|
||||
|
||||
+47
@@ -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
|
||||
|
||||
+31
@@ -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
|
||||
+8
@@ -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
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
+7
@@ -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
|
||||
|
||||
+12
@@ -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
|
||||
|
||||
+51
@@ -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
|
||||
|
||||
+23
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
+16
@@ -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
|
||||
|
||||
|
||||
+37
@@ -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
|
||||
|
||||
+27
@@ -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
|
||||
|
||||
+31
@@ -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
|
||||
|
||||
+31
@@ -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
|
||||
|
||||
+11
@@ -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
Reference in New Issue
Block a user