sql_cmd 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|