Azure SQL
This module provides the following capabilities:
Installation
To have access to the following features, you have to import the module:
PS> Install-Module -Name Arcus.Scripting.SQL -RequiredVersion 0.4.0
Invoke a database migration
With this script, you can perform database upgrades by providing/adding specific SQL scripts with the right version number. Once a new version number is detected it will incrementally execute this.
While doing so it will create a table "DatabaseVersion". If the DatabaseVersion table doesn't exist it will automatically create it.
This function allows you to trigger a database migration, which will only execute the newly provided SQL scripts, based on the provided version number in each of the scripts. The current version is stored in a table "DatabaseVersion", which will be created if it doesn't exist yet.
Parameter | Mandatory | Description |
---|---|---|
ServerName | yes | The SQL Server that hosts the SQL Database. (Do not include 'database.windows.net') |
DatabaseName | yes | The name of the SQL Database |
UserName | yes | The UserName of the SQL Database |
Password | yes | The Password of the SQL Database |
ScriptsFolder | no (default: $PSScriptRoot/sqlScripts | The directory folder where the SQL migration scripts are located on the file system |
ScriptsFileFolder | no (default: *.sql ) | The file filter to limit the SQL script files to use during the migrations |
DatabaseSchema | no (default: dbo ) | The database schema to use when running SQL commands on the target database |
Make sure that the credentials that you provide can write tables to the database + any action that you specify in the SQL scripts.
Example with defaults
PS> RunDatabaseScript -ServerName "my-server-name" -DatabaseName "my-database-name" -Username "my-sql-username" -Password "my-sql-password"
# Looking for SQL scripts in folder: ./sqlScripts
Example with custom values
PS> RunDatabaseScript -ServerName "my-server-name" -DatabaseName "my-database-name" -Username "my-sql-username" -Password "my-sql-password" -ScriptsFolder "$PSScriptRoot/sql-scripts" -ScriptsFileFilter "*.MyScript.sql" -DatabaseSchema "custom"
# Looking for SQL scripts in folder: ./sql-scripts
Adding SQL scripts so they can be picked up by the script
-
In the location where you want to run the script add the folder "sqlScripts".
-
Within this folder there should be by default the
CreateDatabaseVersionTable.sql
-file, containing the script to create the initial version table:
CREATE TABLE [dbo].[DatabaseVersion]
(
[CurrentVersionNumber] INT NOT NULL,
[MigrationDescription] [nvarchar](256) NOT NULL,
CONSTRAINT [PKDatabaseVersion] PRIMARY KEY CLUSTERED
(
[CurrentVersionNumber] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
- Next to that you can add your scripts which, to be recognized by the module, need to match the following naming convention:
[Prefix]_[VersionNumber]_[DescriptionOfMigration].sql
In practice this can look like this: Arcus_001_AddIndexes.sql
When a new migration comes along, just create the new SQL script with a version number one number higher than the previous one.