|
6 | 6 | [Parameter(Mandatory = $false)][bool] $TrustServerCertificate = $false, |
7 | 7 | [Parameter(Mandatory = $false)][string] $ScriptsFolder = "$PSScriptRoot/sqlScripts", |
8 | 8 | [Parameter(Mandatory = $false)][string] $ScriptsFileFilter = "*.sql", |
9 | | - [Parameter(Mandatory = $false)][string] $DatabaseSchema = "dbo" |
| 9 | + [Parameter(Mandatory = $false)][string] $DatabaseSchema = "dbo", |
| 10 | + [Parameter(Mandatory = $false)][string] $DatabaseVersionTable = "DatabaseVersion" |
10 | 11 | ) |
11 | 12 |
|
12 | 13 | Write-Verbose "Looking for SQL scripts in folder: $ScriptsFolder..." |
@@ -51,41 +52,41 @@ function Get-SqlScriptFileText([string] $scriptPath, [string] $fileName) { |
51 | 52 |
|
52 | 53 | $params = Create-DbParams $DatabaseName $ServerName $UserName $Password $TrustServerCertificate |
53 | 54 |
|
54 | | -$createDatabaseVersionTable = "IF NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'DatabaseVersion' AND TABLE_SCHEMA = '$DatabaseSchema' ) " + |
| 55 | +$createDatabaseVersionTable = "IF NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$DatabaseVersionTable' AND TABLE_SCHEMA = '$DatabaseSchema' ) " + |
55 | 56 | "BEGIN " + |
56 | | -"CREATE TABLE [$DatabaseSchema].[DatabaseVersion] " + |
| 57 | +"CREATE TABLE [$DatabaseSchema].[$DatabaseVersionTable] " + |
57 | 58 | "( " + |
58 | 59 | " [MajorVersionNumber] INT NOT NULL, " + |
59 | 60 | " [MinorVersionNumber] INT NOT NULL, " + |
60 | 61 | " [PatchVersionNumber] INT NOT NULL, " + |
61 | 62 | " [MigrationDescription] [nvarchar](256) NOT NULL, " + |
62 | 63 | " [MigrationDate] DATETIME NOT NULL " + |
63 | | -" CONSTRAINT [PK_DatabaseVersion] PRIMARY KEY CLUSTERED ([MajorVersionNumber],[MinorVersionNumber],[PatchVersionNumber]) " + |
| 64 | +" CONSTRAINT [PK_$DatabaseVersionTable] PRIMARY KEY CLUSTERED ([MajorVersionNumber],[MinorVersionNumber],[PatchVersionNumber]) " + |
64 | 65 | " WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) " + |
65 | 66 | ") " + |
66 | 67 | "END " + |
67 | 68 | "ELSE " + |
68 | 69 | "BEGIN " + |
69 | | -" IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'DatabaseVersion' AND COLUMN_NAME = 'CurrentVersionNumber' ) " + |
| 70 | +" IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$DatabaseVersionTable' AND COLUMN_NAME = 'CurrentVersionNumber' ) " + |
70 | 71 | " BEGIN " + |
71 | | -" ALTER TABLE [$DatabaseSchema].[DatabaseVersion] " + |
| 72 | +" ALTER TABLE [$DatabaseSchema].[$DatabaseVersionTable] " + |
72 | 73 | " ADD [MajorVersionNumber] INT NULL, " + |
73 | 74 | " [MinorVersionNumber] INT NULL, " + |
74 | 75 | " [PatchVersionNumber] INT NULL, " + |
75 | 76 | " [MigrationDate] DATETIME NULL " + |
76 | | -" ALTER TABLE [$DatabaseSchema].[DatabaseVersion] DROP CONSTRAINT [PKDatabaseVersion] " + |
77 | | -" EXEC ('UPDATE [$DatabaseSchema].[DatabaseVersion] SET MajorVersionNumber = CurrentVersionNumber, MinorVersionNumber = 0, PatchVersionNumber = 0') " + |
78 | | -" ALTER TABLE [$DatabaseSchema].[DatabaseVersion] ALTER COLUMN [MajorVersionNumber] INT NOT NULL " + |
79 | | -" ALTER TABLE [$DatabaseSchema].[DatabaseVersion] ALTER COLUMN [MinorVersionNumber] INT NOT NULL " + |
80 | | -" ALTER TABLE [$DatabaseSchema].[DatabaseVersion] ALTER COLUMN [PatchVersionNumber] INT NOT NULL " + |
81 | | -" ALTER TABLE [$DatabaseSchema].[DatabaseVersion] DROP COLUMN [CurrentVersionNumber] " + |
82 | | -" ALTER TABLE [$DatabaseSchema].[DatabaseVersion] ADD CONSTRAINT [PK_DatabaseVersion] PRIMARY KEY CLUSTERED ([MajorVersionNumber],[MinorVersionNumber],[PatchVersionNumber]) " + |
| 77 | +" ALTER TABLE [$DatabaseSchema].[$DatabaseVersionTable] DROP CONSTRAINT [PKDatabaseVersion] " + |
| 78 | +" EXEC ('UPDATE [$DatabaseSchema].[$DatabaseVersionTable] SET MajorVersionNumber = CurrentVersionNumber, MinorVersionNumber = 0, PatchVersionNumber = 0') " + |
| 79 | +" ALTER TABLE [$DatabaseSchema].[$DatabaseVersionTable] ALTER COLUMN [MajorVersionNumber] INT NOT NULL " + |
| 80 | +" ALTER TABLE [$DatabaseSchema].[$DatabaseVersionTable] ALTER COLUMN [MinorVersionNumber] INT NOT NULL " + |
| 81 | +" ALTER TABLE [$DatabaseSchema].[$DatabaseVersionTable] ALTER COLUMN [PatchVersionNumber] INT NOT NULL " + |
| 82 | +" ALTER TABLE [$DatabaseSchema].[$DatabaseVersionTable] DROP COLUMN [CurrentVersionNumber] " + |
| 83 | +" ALTER TABLE [$DatabaseSchema].[$DatabaseVersionTable] ADD CONSTRAINT [PK_$DatabaseVersionTable] PRIMARY KEY CLUSTERED ([MajorVersionNumber],[MinorVersionNumber],[PatchVersionNumber]) " + |
83 | 84 | " END " + |
84 | 85 | "END" |
85 | 86 |
|
86 | 87 | Execute-DbCommand $params $createDatabaseVersionTable |
87 | 88 |
|
88 | | -$getCurrentDbVersionQuery = "SELECT TOP 1 MajorVersionNumber, MinorVersionNumber, PatchVersionNumber FROM [$DatabaseSchema].[DatabaseVersion] ORDER BY MajorVersionNumber DESC, MinorVersionNumber DESC, PatchVersionNumber DESC" |
| 89 | +$getCurrentDbVersionQuery = "SELECT TOP 1 MajorVersionNumber, MinorVersionNumber, PatchVersionNumber FROM [$DatabaseSchema].[$DatabaseVersionTable] ORDER BY MajorVersionNumber DESC, MinorVersionNumber DESC, PatchVersionNumber DESC" |
89 | 90 |
|
90 | 91 | $databaseVersionNumberDataRow = Execute-DbCommandWithResult $params $getCurrentDbVersionQuery |
91 | 92 |
|
@@ -139,7 +140,7 @@ for ($i = 0; $i -lt $files.Count; $i++) { |
139 | 140 | $migrationDescription = $migrationDescription.Substring(0, 256) |
140 | 141 | } |
141 | 142 |
|
142 | | - $updateVersionQuery = "INSERT INTO [$DatabaseSchema].[DatabaseVersion] ([MajorVersionNumber], [MinorVersionNumber], [PatchVersionNumber], [MigrationDescription], [MigrationDate]) " + |
| 143 | + $updateVersionQuery = "INSERT INTO [$DatabaseSchema].[$DatabaseVersionTable] ([MajorVersionNumber], [MinorVersionNumber], [PatchVersionNumber], [MigrationDescription], [MigrationDate]) " + |
143 | 144 | "SELECT $($scriptVersionNumber.MajorVersionNumber), $($scriptVersionNumber.MinorVersionNumber), $($scriptVersionNumber.PatchVersionNumber), '$migrationDescription', getdate()" |
144 | 145 |
|
145 | 146 | Execute-DbCommand $params $updateVersionQuery |
|
0 commit comments