sql_cmd 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +201 -0
- data/lib/optional_dependencies.rb +30 -0
- data/lib/sql_cmd/agent.rb +32 -0
- data/lib/sql_cmd/always_on.rb +267 -0
- data/lib/sql_cmd/azure.rb +80 -0
- data/lib/sql_cmd/backups.rb +276 -0
- data/lib/sql_cmd/config.rb +62 -0
- data/lib/sql_cmd/database.rb +618 -0
- data/lib/sql_cmd/format.rb +124 -0
- data/lib/sql_cmd/query.rb +350 -0
- data/lib/sql_cmd/security.rb +21 -0
- data/lib/sql_cmd/sql_helper.ps1 +89 -0
- data/lib/sql_cmd.rb +44 -0
- data/sql_scripts/Agent/CreateSQLJob.sql +81 -0
- data/sql_scripts/Agent/JobLastRunInfo.sql +70 -0
- data/sql_scripts/Agent/JobRunStatus.sql +21 -0
- data/sql_scripts/Agent/SQLAgentStatus.sql +8 -0
- data/sql_scripts/AlwaysOn/AddDatabaseToAvailabilityGroupOnSecondary.sql +72 -0
- data/sql_scripts/AlwaysOn/AddDatabaseToPrimaryAvailabilityGroup.sql +16 -0
- data/sql_scripts/AlwaysOn/AutomaticSeedingProgress.sql +34 -0
- data/sql_scripts/AlwaysOn/ConfigurePrimaryForAutomaticSeeding.sql +2 -0
- data/sql_scripts/AlwaysOn/ConfigurePrimaryForManualSeeding.sql +2 -0
- data/sql_scripts/AlwaysOn/ConfigureSecondaryForAutomaticSeeding.sql +1 -0
- data/sql_scripts/AlwaysOn/DropSecondary.sql +58 -0
- data/sql_scripts/AlwaysOn/RemoveDatabaseFromGroup.sql +2 -0
- data/sql_scripts/AlwaysOn/SynchronizationState.sql +14 -0
- data/sql_scripts/Database/BackupDatabase.sql +95 -0
- data/sql_scripts/Database/CompressAllTables.sql +100 -0
- data/sql_scripts/Database/CreateLogin.sql +16 -0
- data/sql_scripts/Database/DropDatabase.sql +51 -0
- data/sql_scripts/Database/GetBackupFiles.sql +31 -0
- data/sql_scripts/Database/GetBackupHeaders.sql +94 -0
- data/sql_scripts/Database/GetFileInfoFromBackup.sql +9 -0
- data/sql_scripts/Database/RestoreDatabase.sql +185 -0
- data/sql_scripts/Database/SetFullRecovery.sql +19 -0
- data/sql_scripts/Database/SetSQLCompatibility.sql +33 -0
- data/sql_scripts/Security/AssignDatabaseRoles.sql +44 -0
- data/sql_scripts/Security/CreateOrUpdateCredential.sql +11 -0
- data/sql_scripts/Security/CreateSqlLogin.sql +20 -0
- data/sql_scripts/Security/ExportDatabasePermissions.sql +757 -0
- data/sql_scripts/Security/GenerateCreateLoginsScript.sql +144 -0
- data/sql_scripts/Security/GenerateValidateLoginsScript.sql +83 -0
- data/sql_scripts/Security/GetUserSID.sql +3 -0
- data/sql_scripts/Security/UpdateSqlPassword.sql +24 -0
- data/sql_scripts/Security/ValidateDatabaseRoles.sql +12 -0
- data/sql_scripts/Status/ANSINullsOffTableCount.sql +13 -0
- data/sql_scripts/Status/ANSINullsOffTables.sql +9 -0
- data/sql_scripts/Status/BackupProgress.sql +17 -0
- data/sql_scripts/Status/DatabaseInfo.sql +199 -0
- data/sql_scripts/Status/DatabaseSize.sql +26 -0
- data/sql_scripts/Status/DiskSpace.sql +14 -0
- data/sql_scripts/Status/RestoreProgress.sql +17 -0
- data/sql_scripts/Status/SQLSettings.sql +182 -0
- data/sql_scripts/Status/UncompressedTableCount.sql +27 -0
- metadata +224 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
DECLARE @Depth int
|
2
|
+
DECLARE @FileFlag int
|
3
|
+
DECLARE @TargetFolder nvarchar(255)
|
4
|
+
DECLARE @BackupBaseName nvarchar(255)
|
5
|
+
DECLARE @LogOnly bit
|
6
|
+
DECLARE @BackupFileExtension nvarchar(3)
|
7
|
+
|
8
|
+
SET @Depth = 1
|
9
|
+
SET @FileFlag = 1
|
10
|
+
SET @TargetFolder = '$(targetfolder)'
|
11
|
+
SET @BackupBaseName = '$(bkupname)'
|
12
|
+
SET @LogOnly = '$(logonly)'
|
13
|
+
|
14
|
+
SET @BackupFileExtension = CASE WHEN @LogOnly = 1 THEN 'trn' ELSE 'bak' END
|
15
|
+
|
16
|
+
DECLARE @DirTree TABLE (
|
17
|
+
FileName nvarchar(255),
|
18
|
+
Depth smallint,
|
19
|
+
FileFlag smallint
|
20
|
+
)
|
21
|
+
|
22
|
+
INSERT INTO @DirTree
|
23
|
+
EXEC xp_dirtree @TargetFolder, @Depth, @FileFlag
|
24
|
+
|
25
|
+
SELECT * FROM @DirTree
|
26
|
+
WHERE FileFlag = @FileFlag AND (
|
27
|
+
[FileName] LIKE @BackupBaseName + '[_][0-9][0-9][0-9][0-9][0-9][0-9].part[0-9]%.' + @BackupFileExtension
|
28
|
+
OR [FileName] LIKE @BackupBaseName + '[_][0-9][0-9][0-9][0-9][0-9][0-9].' + @BackupFileExtension
|
29
|
+
OR [FileName] LIKE @BackupBaseName + '.part[0-9]%.' + @BackupFileExtension
|
30
|
+
OR [FileName] LIKE @BackupBaseName + '.' + @BackupFileExtension
|
31
|
+
)
|
@@ -0,0 +1,94 @@
|
|
1
|
+
SET NOCOUNT ON
|
2
|
+
|
3
|
+
DECLARE @bkup_files nvarchar(max)
|
4
|
+
DECLARE @credential nvarchar(max)
|
5
|
+
DECLARE @rowcount int
|
6
|
+
|
7
|
+
DECLARE @HeaderOnly_cmd nvarchar(max)
|
8
|
+
DECLARE @BackupSetPosition int
|
9
|
+
DECLARE @Version14Plus bit
|
10
|
+
DECLARE @SQLMajorVersion nvarchar(128)
|
11
|
+
|
12
|
+
SET @bkup_files = '$(bkupfiles)'
|
13
|
+
SET @credential = '$(credential)'
|
14
|
+
|
15
|
+
SET @SQLMajorVersion = CONVERT(NVARCHAR(128), SERVERPROPERTY('ProductVersion'))
|
16
|
+
SET @SQLMajorVersion = LEFT(@SQLMajorVersion, CHARINDEX('.', @SQLMajorVersion) - 1)
|
17
|
+
|
18
|
+
SET @HeaderOnly_cmd =
|
19
|
+
'DECLARE @BackupSets TABLE(
|
20
|
+
BackupName nvarchar(128),
|
21
|
+
BackupDescription nvarchar(255),
|
22
|
+
BackupType smallint,
|
23
|
+
ExpirationDate datetime,
|
24
|
+
Compressed bit,
|
25
|
+
Position smallint,
|
26
|
+
DeviceType tinyint,
|
27
|
+
UserName nvarchar(128),
|
28
|
+
ServerName nvarchar(128),
|
29
|
+
DatabaseName nvarchar(128),
|
30
|
+
DatabaseVersion int,
|
31
|
+
DatabaseCreationDate datetime,
|
32
|
+
BackupSize numeric(20,0),
|
33
|
+
FirstLSN numeric(25,0),
|
34
|
+
LastLSN numeric(25,0),
|
35
|
+
CheckpointLSN numeric(25,0),
|
36
|
+
DatabaseBackupLSN numeric(25,0),
|
37
|
+
BackupStartDate datetime,
|
38
|
+
BackupFinishDate datetime,
|
39
|
+
SortOrder smallint,
|
40
|
+
CodePage smallint,
|
41
|
+
UnicodeLocaleId int,
|
42
|
+
UnicodeComparisonStyle int,
|
43
|
+
CompatibilityLevel tinyint,
|
44
|
+
SoftwareVendorId int,
|
45
|
+
SoftwareVersionMajor int,
|
46
|
+
SoftwareVersionMinor int,
|
47
|
+
SoftwareVersionBuild int,
|
48
|
+
MachineName nvarchar(128),
|
49
|
+
Flags int,
|
50
|
+
BindingID uniqueidentifier,
|
51
|
+
RecoveryForkID uniqueidentifier,
|
52
|
+
Collation nvarchar(128),
|
53
|
+
FamilyGUID uniqueidentifier,
|
54
|
+
HasBulkLoggedData bit,
|
55
|
+
IsSnapshot bit,
|
56
|
+
IsReadOnly bit,
|
57
|
+
IsSingleUser bit,
|
58
|
+
HasBackupChecksums bit,
|
59
|
+
IsDamaged bit,
|
60
|
+
BeginsLogChain bit,
|
61
|
+
HasIncompleteMetaData bit,
|
62
|
+
IsForceOffline bit,
|
63
|
+
IsCopyOnly bit,
|
64
|
+
FirstRecoveryForkID uniqueidentifier,
|
65
|
+
ForkPointLSN numeric(25,0),
|
66
|
+
RecoveryModel nvarchar(60),
|
67
|
+
DifferentialBaseLSN numeric(25,0),
|
68
|
+
DifferentialBaseGUID uniqueidentifier,
|
69
|
+
BackupTypeDescription nvarchar(60),
|
70
|
+
BackupSetGUID uniqueidentifier,
|
71
|
+
CompressedBackupSize bit,'
|
72
|
+
+ CASE WHEN (@SQLMajorVersion >= 11) THEN ' Containment tinyint,' ELSE '' END
|
73
|
+
+ CASE WHEN (@SQLMajorVersion >= 12) THEN
|
74
|
+
'KeyAlgorithm nvarchar(32),
|
75
|
+
EncryptorThumbprint varbinary(20),
|
76
|
+
EncryptorType nvarchar(32),' ELSE '' END
|
77
|
+
+ '--
|
78
|
+
-- This field added to retain order by
|
79
|
+
--
|
80
|
+
Seq int NOT NULL identity(1,1)
|
81
|
+
)
|
82
|
+
|
83
|
+
INSERT INTO @BackupSets
|
84
|
+
exec (''
|
85
|
+
RESTORE HEADERONLY
|
86
|
+
FROM ' + REPLACE(@bkup_files, '''', '''''') + '
|
87
|
+
WITH ' + CASE WHEN @credential NOT LIKE '' THEN 'CREDENTIAL = ''''' + @credential + ''''', ' ELSE '' END + '
|
88
|
+
NOUNLOAD'')
|
89
|
+
|
90
|
+
SELECT * FROM @BackupSets
|
91
|
+
ORDER BY BackupFinishDate DESC
|
92
|
+
'
|
93
|
+
|
94
|
+
EXEC sp_executesql @HeaderOnly_cmd
|
@@ -0,0 +1,9 @@
|
|
1
|
+
SET NOCOUNT ON
|
2
|
+
|
3
|
+
DECLARE @sql nvarchar(max)
|
4
|
+
DECLARE @credential nvarchar(max)
|
5
|
+
|
6
|
+
SET @credential = '$(credential)'
|
7
|
+
SET @sql = 'RESTORE FILELISTONLY FROM $(bkupfiles)' + CASE WHEN @credential NOT LIKE '' THEN ' WITH CREDENTIAL = ''' + @credential + '''' ELSE '' END
|
8
|
+
|
9
|
+
EXEC(@sql)
|
@@ -0,0 +1,185 @@
|
|
1
|
+
SET NOCOUNT ON
|
2
|
+
|
3
|
+
DECLARE @db_name nvarchar(max)
|
4
|
+
DECLARE @credential nvarchar(max)
|
5
|
+
DECLARE @db_state int
|
6
|
+
DECLARE @bkup_files nvarchar(max)
|
7
|
+
DECLARE @data_file nvarchar(max)
|
8
|
+
DECLARE @data_file_logical_name nvarchar(255)
|
9
|
+
DECLARE @log_file nvarchar(max)
|
10
|
+
DECLARE @log_file_logical_name nvarchar(255)
|
11
|
+
DECLARE @database_cmd nvarchar(max)
|
12
|
+
DECLARE @setproperties_cmd nvarchar(max)
|
13
|
+
DECLARE @prepareolddb_cmd nvarchar(max)
|
14
|
+
DECLARE @replcheck_cmd nvarchar(max)
|
15
|
+
DECLARE @change_logical_names_cmd nvarchar(max)
|
16
|
+
DECLARE @rowcount int
|
17
|
+
DECLARE @log_only bit
|
18
|
+
DECLARE @recovery bit
|
19
|
+
DECLARE @replace bit
|
20
|
+
DECLARE @keep_replication bit
|
21
|
+
DECLARE @unload bit
|
22
|
+
DECLARE @stats nvarchar(3)
|
23
|
+
|
24
|
+
DECLARE @GetPosition_cmd nvarchar(max)
|
25
|
+
DECLARE @BackupSetPosition int
|
26
|
+
DECLARE @Version14Plus bit
|
27
|
+
DECLARE @SQLMajorVersion nvarchar(128)
|
28
|
+
|
29
|
+
SET @db_name = '$(databasename)'
|
30
|
+
SET @credential = '$(credential)'
|
31
|
+
SET @bkup_files = '$(bkupfiles)'
|
32
|
+
SET @data_file = '$(datafile)'
|
33
|
+
SET @data_file_logical_name = '$(datafilelogicalname)'
|
34
|
+
SET @log_file = '$(logfile)'
|
35
|
+
SET @log_file_logical_name = '$(logfilelogicalname)'
|
36
|
+
SET @log_only = '$(logonly)'
|
37
|
+
SET @recovery = '$(recovery)'
|
38
|
+
SET @replace = '$(replace)'
|
39
|
+
SET @keep_replication = '$(keepreplication)'
|
40
|
+
SET @unload = '$(unload)'
|
41
|
+
SET @stats = '$(stats)'
|
42
|
+
|
43
|
+
SET @SQLMajorVersion = CONVERT(NVARCHAR(128), SERVERPROPERTY('ProductVersion'))
|
44
|
+
SET @SQLMajorVersion = LEFT(@SQLMajorVersion, CHARINDEX('.', @SQLMajorVersion) - 1)
|
45
|
+
SELECT @db_state = [state] FROM sys.databases WHERE [Name] = @db_name
|
46
|
+
|
47
|
+
SET @GetPosition_cmd =
|
48
|
+
'DECLARE @BackupSets TABLE(
|
49
|
+
BackupName nvarchar(128),
|
50
|
+
BackupDescription nvarchar(255),
|
51
|
+
BackupType smallint,
|
52
|
+
ExpirationDate datetime,
|
53
|
+
Compressed bit,
|
54
|
+
Position smallint,
|
55
|
+
DeviceType tinyint,
|
56
|
+
UserName nvarchar(128),
|
57
|
+
ServerName nvarchar(128),
|
58
|
+
DatabaseName nvarchar(128),
|
59
|
+
DatabaseVersion int,
|
60
|
+
DatabaseCreationDate datetime,
|
61
|
+
BackupSize numeric(20,0),
|
62
|
+
FirstLSN numeric(25,0),
|
63
|
+
LastLSN numeric(25,0),
|
64
|
+
CheckpointLSN numeric(25,0),
|
65
|
+
DatabaseBackupLSN numeric(25,0),
|
66
|
+
BackupStartDate datetime,
|
67
|
+
BackupFinishDate datetime,
|
68
|
+
SortOrder smallint,
|
69
|
+
CodePage smallint,
|
70
|
+
UnicodeLocaleId int,
|
71
|
+
UnicodeComparisonStyle int,
|
72
|
+
CompatibilityLevel tinyint,
|
73
|
+
SoftwareVendorId int,
|
74
|
+
SoftwareVersionMajor int,
|
75
|
+
SoftwareVersionMinor int,
|
76
|
+
SoftwareVersionBuild int,
|
77
|
+
MachineName nvarchar(128),
|
78
|
+
Flags int,
|
79
|
+
BindingID uniqueidentifier,
|
80
|
+
RecoveryForkID uniqueidentifier,
|
81
|
+
Collation nvarchar(128),
|
82
|
+
FamilyGUID uniqueidentifier,
|
83
|
+
HasBulkLoggedData bit,
|
84
|
+
IsSnapshot bit,
|
85
|
+
IsReadOnly bit,
|
86
|
+
IsSingleUser bit,
|
87
|
+
HasBackupChecksums bit,
|
88
|
+
IsDamaged bit,
|
89
|
+
BeginsLogChain bit,
|
90
|
+
HasIncompleteMetaData bit,
|
91
|
+
IsForceOffline bit,
|
92
|
+
IsCopyOnly bit,
|
93
|
+
FirstRecoveryForkID uniqueidentifier,
|
94
|
+
ForkPointLSN numeric(25,0),
|
95
|
+
RecoveryModel nvarchar(60),
|
96
|
+
DifferentialBaseLSN numeric(25,0),
|
97
|
+
DifferentialBaseGUID uniqueidentifier,
|
98
|
+
BackupTypeDescription nvarchar(60),
|
99
|
+
BackupSetGUID uniqueidentifier,
|
100
|
+
CompressedBackupSize bit,'
|
101
|
+
+ CASE WHEN (@SQLMajorVersion >= 11) THEN ' Containment tinyint,' ELSE '' END
|
102
|
+
+ CASE WHEN (@SQLMajorVersion >= 12) THEN
|
103
|
+
'KeyAlgorithm nvarchar(32),
|
104
|
+
EncryptorThumbprint varbinary(20),
|
105
|
+
EncryptorType nvarchar(32),' ELSE '' END
|
106
|
+
+ '--
|
107
|
+
-- This field added to retain order by
|
108
|
+
--
|
109
|
+
Seq int NOT NULL identity(1,1)
|
110
|
+
)
|
111
|
+
|
112
|
+
INSERT INTO @BackupSets
|
113
|
+
exec (''
|
114
|
+
RESTORE HEADERONLY
|
115
|
+
FROM ' + REPLACE(@bkup_files, '''', '''''') + '
|
116
|
+
WITH NOUNLOAD' + CASE WHEN @credential NOT LIKE '' THEN ', CREDENTIAL = ''''' + @credential + '''''' ELSE '' END + ''')
|
117
|
+
|
118
|
+
SELECT TOP(1) @BackupSetPosition = Position FROM @BackupSets
|
119
|
+
ORDER BY BackupFinishDate DESC
|
120
|
+
'
|
121
|
+
|
122
|
+
SET @replcheck_cmd =
|
123
|
+
N'IF EXISTS (SELECT * FROM [' + @db_name + '].[INFORMATION_SCHEMA].[TABLES]
|
124
|
+
WHERE TABLE_NAME = ''syspublications'')
|
125
|
+
BEGIN
|
126
|
+
SELECT @rowcount=count(*) FROM [' + @db_name + '].[dbo].syspublications
|
127
|
+
END
|
128
|
+
ELSE
|
129
|
+
BEGIN
|
130
|
+
SET @rowcount = 0
|
131
|
+
END
|
132
|
+
'
|
133
|
+
|
134
|
+
-- Check if replication is enabled. If so, notify user and exit.
|
135
|
+
IF EXISTS (SELECT * FROM sys.databases WHERE [Name] = @db_name AND state != 1)
|
136
|
+
BEGIN
|
137
|
+
EXEC sp_executesql @replcheck_cmd, N'@rowcount int output', @rowcount output;
|
138
|
+
IF (@rowcount > 0)
|
139
|
+
BEGIN
|
140
|
+
PRINT ('Replication is enabled on ' + @db_name + '. Remove replication before proceeding...')
|
141
|
+
RETURN
|
142
|
+
END
|
143
|
+
END
|
144
|
+
|
145
|
+
SET @prepareolddb_cmd =
|
146
|
+
'
|
147
|
+
IF EXISTS (SELECT * FROM sys.databases WHERE Name = ''' + @db_name + ''')
|
148
|
+
BEGIN
|
149
|
+
ALTER DATABASE [' + @db_name + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
|
150
|
+
ALTER DATABASE [' + @db_name + '] SET MULTI_USER WITH ROLLBACK IMMEDIATE
|
151
|
+
END
|
152
|
+
'
|
153
|
+
|
154
|
+
-- Get the position of the most recent backup set.
|
155
|
+
EXEC sp_executesql @GetPosition_cmd, N'@BackupSetPosition int output', @BackupSetPosition output;
|
156
|
+
IF (@BackupSetPosition < 1)
|
157
|
+
BEGIN
|
158
|
+
PRINT ('Failed to get backup set position. Using position 1...')
|
159
|
+
SET @BackupSetPosition = 1
|
160
|
+
END
|
161
|
+
|
162
|
+
-- Restore database query
|
163
|
+
SET @database_cmd = 'RESTORE ' + CASE WHEN @log_only = 1 THEN 'LOG' ELSE 'DATABASE' END + ' [' + @db_name + '] FROM ' + @bkup_files + ' WITH FILE = ' + CONVERT(NVARCHAR(5), @BackupSetPosition) + ', ' +
|
164
|
+
CASE WHEN @data_file_logical_name != '' THEN 'MOVE N''' + @data_file_logical_name + ''' TO N''' + @data_file + ''', ' ELSE '' END +
|
165
|
+
CASE WHEN @log_file_logical_name != '' THEN 'MOVE N''' + @log_file_logical_name + ''' TO N''' + @log_file + ''', ' ELSE '' END +
|
166
|
+
CASE WHEN @replace = 1 THEN 'REPLACE, ' ELSE '' END +
|
167
|
+
CASE WHEN @recovery = 1 THEN 'RECOVERY' ELSE 'NORECOVERY' END + ', ' +
|
168
|
+
CASE WHEN @keep_replication = 1 THEN 'KEEP_REPLICATION, ' ELSE '' END +
|
169
|
+
CASE WHEN @credential NOT LIKE '' THEN 'CREDENTIAL = ''' + @credential + ''', ' ELSE '' END +
|
170
|
+
CASE WHEN @unload = 1 THEN 'UNLOAD' ELSE 'NOUNLOAD' END + ', STATS = ' + @stats
|
171
|
+
|
172
|
+
SET @change_logical_names_cmd = 'ALTER DATABASE [' + @db_name + '] MODIFY FILE ( NAME = ' + @data_file_logical_name + ', NEWNAME = ' + @db_name + '_Data );' +
|
173
|
+
'ALTER DATABASE [' + @db_name + '] MODIFY FILE ( NAME = ' + @log_file_logical_name + ', NEWNAME = ' + @db_name + '_Log );'
|
174
|
+
|
175
|
+
IF @db_state != 1 -- If it's not restoring
|
176
|
+
BEGIN
|
177
|
+
EXEC (@prepareolddb_cmd)
|
178
|
+
END
|
179
|
+
|
180
|
+
EXEC (@database_cmd)
|
181
|
+
|
182
|
+
IF @db_state != 1
|
183
|
+
BEGIN
|
184
|
+
EXEC (@change_logical_names_cmd)
|
185
|
+
END
|
@@ -0,0 +1,19 @@
|
|
1
|
+
IF (SELECT recovery_model_desc FROM sys.databases WHERE name = '$(databasename)') NOT LIKE 'FULL'
|
2
|
+
BEGIN
|
3
|
+
PRINT ('Setting recovery to full...')
|
4
|
+
|
5
|
+
ALTER DATABASE [$(databasename)] SET RECOVERY FULL WITH NO_WAIT
|
6
|
+
|
7
|
+
DECLARE @currentrecoverymodel nvarchar(50)
|
8
|
+
SELECT @currentrecoverymodel = recovery_model_desc FROM sys.databases WHERE name = '$(databasename)'
|
9
|
+
IF (@currentrecoverymodel NOT LIKE 'FULL')
|
10
|
+
BEGIN
|
11
|
+
RAISERROR('Failed to set recovery to full!', 20, 1) WITH LOG
|
12
|
+
END
|
13
|
+
PRINT ('Recovery model set to ' + @currentrecoverymodel)
|
14
|
+
SELECT CAST(1 AS bit) AS RecoveryModelUpdated
|
15
|
+
END
|
16
|
+
ELSE
|
17
|
+
BEGIN
|
18
|
+
SELECT CAST(0 AS bit) AS RecoveryModelUpdated
|
19
|
+
END
|
@@ -0,0 +1,33 @@
|
|
1
|
+
SET NOCOUNT ON
|
2
|
+
|
3
|
+
DECLARE @dbname nvarchar(128)
|
4
|
+
DECLARE @alter_db_command nvarchar(255)
|
5
|
+
DECLARE @compatibility_level nvarchar(3)
|
6
|
+
DECLARE @current_compatibility_level nvarchar(3)
|
7
|
+
DECLARE @out_msg nvarchar(max)
|
8
|
+
|
9
|
+
SET @dbname = '$(databasename)'
|
10
|
+
SET @compatibility_level = '$(compatibility_level)'
|
11
|
+
SET @alter_db_command = 'ALTER DATABASE [' + @dbname + '] SET COMPATIBILITY_LEVEL = ' + @compatibility_level
|
12
|
+
|
13
|
+
SELECT @current_compatibility_level = compatibility_level FROM sys.databases WHERE name = @dbname
|
14
|
+
|
15
|
+
IF @current_compatibility_level < @compatibility_level
|
16
|
+
BEGIN
|
17
|
+
SET @out_msg = 'Updating compatibility level from ' + @current_compatibility_level + ' to ' + @compatibility_level + '.'
|
18
|
+
PRINT @out_msg
|
19
|
+
exec sp_executesql @alter_db_command
|
20
|
+
END
|
21
|
+
ELSE IF @current_compatibility_level = @compatibility_level
|
22
|
+
BEGIN
|
23
|
+
SET @out_msg = 'Compatibility level already set to ' + @current_compatibility_level + '. No change made.'
|
24
|
+
PRINT @out_msg
|
25
|
+
END
|
26
|
+
ELSE
|
27
|
+
BEGIN
|
28
|
+
SET @out_msg = 'WARNING! Current compatibility level (' + @current_compatibility_level + ') is higher than ' + @compatibility_level + '! Downgrading compatibility level!'
|
29
|
+
PRINT @out_msg
|
30
|
+
exec sp_executesql @alter_db_command
|
31
|
+
END
|
32
|
+
|
33
|
+
SELECT compatibility_level FROM sys.databases WHERE name = @dbname
|
@@ -0,0 +1,44 @@
|
|
1
|
+
USE [$(databasename)]
|
2
|
+
|
3
|
+
DECLARE @login_name nvarchar(max)
|
4
|
+
DECLARE @db_name nvarchar(max)
|
5
|
+
DECLARE @user_cmd nvarchar(max)
|
6
|
+
DECLARE @roles nvarchar(max)
|
7
|
+
DECLARE @roles_cmd nvarchar(max)
|
8
|
+
DECLARE @database_roles TABLE (
|
9
|
+
DatabaseRole nvarchar(max)
|
10
|
+
)
|
11
|
+
|
12
|
+
SET @login_name = '$(user)'
|
13
|
+
SET @db_name = '$(databasename)'
|
14
|
+
SET @roles = '$(databaseroles)' -- comma separated list - do not use commas in the values
|
15
|
+
|
16
|
+
SET @roles_cmd = '
|
17
|
+
DECLARE @database_roles TABLE ( DatabaseRole nvarchar(max) )
|
18
|
+
INSERT INTO @database_roles ( DatabaseRole )
|
19
|
+
VALUES ( ' + '''' + REPLACE(@roles, ',', '''), (''') + ''')
|
20
|
+
SELECT RTRIM(LTRIM(DatabaseRole)) FROM @database_roles'
|
21
|
+
INSERT INTO @database_roles
|
22
|
+
exec sp_executesql @roles_cmd
|
23
|
+
|
24
|
+
-- Add user and assign security query
|
25
|
+
SET @user_cmd =
|
26
|
+
'
|
27
|
+
USE [' + @db_name + ']
|
28
|
+
IF EXISTS (SELECT * FROM sys.schemas WHERE name = N''' + @login_name + ''')
|
29
|
+
BEGIN
|
30
|
+
DROP SCHEMA [' + @login_name + ']
|
31
|
+
END
|
32
|
+
|
33
|
+
IF EXISTS (SELECT * FROM sys.database_principals WHERE name=N''' + @login_name + ''')
|
34
|
+
BEGIN
|
35
|
+
DROP USER [' + @login_name + ']
|
36
|
+
END
|
37
|
+
|
38
|
+
CREATE USER [' + @login_name + '] FOR LOGIN [' + @login_name + '];'
|
39
|
+
|
40
|
+
SELECT @user_cmd += 'EXEC sp_addrolemember N''' + DatabaseRole + ''', N''' + @login_name + ''';' FROM @database_roles
|
41
|
+
|
42
|
+
EXEC (@user_cmd)
|
43
|
+
|
44
|
+
SELECT * FROM sys.database_principals WHERE name=@login_name
|
@@ -0,0 +1,11 @@
|
|
1
|
+
IF EXISTS (SELECT * FROM sys.credentials
|
2
|
+
WHERE name = '$(credential_name)')
|
3
|
+
BEGIN
|
4
|
+
ALTER CREDENTIAL [$(credential_name)] WITH IDENTITY = '$(identity)', SECRET = '$(secret)';
|
5
|
+
SELECT 'Credential [$(credential_name)] updated.'
|
6
|
+
END
|
7
|
+
ELSE
|
8
|
+
BEGIN
|
9
|
+
CREATE CREDENTIAL [$(credential_name)] WITH IDENTITY = '$(identity)', SECRET = '$(secret)';
|
10
|
+
SELECT 'Credential [$(credential_name)] created.'
|
11
|
+
END
|
@@ -0,0 +1,20 @@
|
|
1
|
+
DECLARE @login_name nvarchar(max)
|
2
|
+
DECLARE @password nvarchar(max)
|
3
|
+
DECLARE @user_cmd nvarchar(max)
|
4
|
+
|
5
|
+
SET @login_name = '$(user)'
|
6
|
+
SET @password = '$(password)'
|
7
|
+
|
8
|
+
-- Create login
|
9
|
+
SET @user_cmd =
|
10
|
+
'USE [master]
|
11
|
+
IF EXISTS (SELECT name FROM master.dbo.syslogins WHERE name=''' + @login_name + ''')
|
12
|
+
BEGIN
|
13
|
+
DROP LOGIN [' + @login_name + ']
|
14
|
+
END
|
15
|
+
|
16
|
+
CREATE LOGIN [' + @login_name + '] WITH PASSWORD=N''' + @password + ''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'
|
17
|
+
|
18
|
+
EXEC (@user_cmd)
|
19
|
+
|
20
|
+
SELECT name, CONVERT(NVARCHAR(max), sid, 1) FROM master.dbo.syslogins WHERE name=@login_name
|