Configuration de la base de données SQL Azure

Aperçu

Cette section fournit les instructions sur comment créer et configurer votre base de données SQL Azure.

Créez la base de données SQL Azure

L'instance de la base de données SQL Azure doit être créée dans le portail Azure. Consultez l'article Création d'une base de données SQL Azure dans le portail Azure pour des informations sur comment créer la base de données. Une fois que vous avez complété les instructions, vous aurez :

  • Le nom du serveur SQL Azure

  • Les informations d'identification du compte administrateur

  • Une règle de pare-feu au niveau du serveur pour le serveur de votre adresse IP

  • Le nom de votre base de données SQL Azure

Étape 1 : Configurez la base de données SQL Azure

Via le portail Azure

  1. Connectez-vous à votre instance de base de données SQL Azure depuis le compte d'administrateur que vous avez créé dans SQL Database Query Editor in Azure Portal ou dans SQL Management Studio.

  2. Vous devez créer un compte utilisateur SQL Server avec les permissions db_datareader et db_datawriter. Voir l'article Contrôle et octroi de l'accès à la base de données, ou bien exécutez le script dans l'éditeur de requête de la base de données SQL ou dans SQL Management Studio (la base de données master doit être sélectionnée) :

    -- Replace <database name>, <database user>, and <password> with the ones you choose (e.g. WFGEN, wfgen_user, <YourPWD>!)
    -- Create SQL Login template for Azure SQL Database and Azure SQL Data Warehouse Database
    CREATE LOGIN <database user>
    WITH PASSWORD = '<password>'
    GO
    -- Create SQL Login template for Azure SQL Database and Azure SQL Data Warehouse Database
    CREATE USER <database user>
    FROM LOGIN <database user>
    WITH DEFAULT_SCHEMA = <database name>
    GO
    -- Add user to the database owner role
    EXEC sp_addrolemember N'db_datawriter', N'<database user>'
    EXEC sp_addrolemember N'db_datareader', N'<database user>'
    GO
  3. Récupérez le script de création de base de données en téléchargeant le pack d'installation manuelle de WorkflowGen le plus récent et le décompressant dans le dossier DISQUE:\temp.

  4. Ouvrez le dossier source DRIVE:\temp\pack\Databases\MsSQLServer et exécutez le script SQL de création de base de données create.sql sur la nouvelle instance de la base de données.

Via Azure CLI

La base de données SQL Azure peut également être créée via des scripts Azure CLI (interface de ligne de commande Azure).

Prérequis :

  • Pour créer une base de données SQL Azure via Azure CLI, connectez-vous d'abord à votre compte Azure avec Azure CLI.

  • Copiez le script create.sql de la base de données WorkflowGen dans le dossier C:\Azure\setup\sql. Si vous souhaitez modifier le chemin, vous devez également modifier la variable $sqlScriptPath dans le script suivant.

Les scripts suivants créent le serveur SQL et la base de données SQL. La variable de mot de passe de l'administrateur de la base de données SQL ($sqlAdminPassword) doit être mise à jour; le nom du groupe de ressources ($resourceGroup), le niveau tarifaire ($sqlServiceObjective) et le chemin du script SQL ($sqlScriptPath) doivent également être mis à jour. (Pour plus d'informations sur le niveau tarifaire, voir https://docs.microsoft.com/fr-fr/sql/relational-databases/system-catalog-views/sys-database-service-objectives-azure-sql-database?view=azuresqldb-current.)

# Configuration variables
$resourceGroup= "workflowgen"
$location="East US"
$sqlServer="wfgen-sql-server"
$sqlAdminUsername="wfgen_sa"
$sqlAdminPassword="<your(Strong!)password1>"
$sqlDatabase="WFGEN"
$sqlServiceObjective="Basic"
$connectionStringWithSqlAdmin = "Server=tcp:$sqlServer.database.windows.net,1433;Initial Catalog=$sqlDatabase;Persist Security Info=False;User ID=$sqlAdminUsername;Password=$sqlAdminPassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
$sqlScriptPath = "C:\Azure\setup\sql"
$sqlScriptCreation = Join-Path $sqlScriptPath "create.sql"
# Create the Azure SQL Server
az sql server create `
--resource-group $resourceGroup `
--location $location `
--name $sqlServer `
--admin-user $sqlAdminUsername `
--admin-password $sqlAdminPassword
# Enable Azure internal services access
az sql server firewall-rule create `
--resource-group $resourceGroup `
--server $sqlServer `
--name AllowAzureServices `
--start-ip-address 0.0.0.0 `
--end-ip-address 0.0.0.0
# Azure SQL database creation
az sql db create `
--name $sqlDatabase `
--resource-group $resourceGroup `
--server $sqlServer `
--service-objective $sqlServiceObjective
# Allow my public IP to access the SQL Server
$myPublicIP = (Invoke-WebRequest https://itomation.ca/mypublicip).content
az sql server firewall-rule create `
--resource-group $resourceGroup `
--server $sqlServer `
--name AllowMyTempPublicIP `
--start-ip-address $myPublicIP `
--end-ip-address $myPublicIP
# Initialize the database
Invoke-Sqlcmd `
-ConnectionString $connectionStringWithSqlAdmin `
-InputFile $sqlScriptCreation
# Remove my public IP
az sql server firewall-rule delete `
--resource-group $resourceGroup `
--server $sqlServer `
--name AllowMyTempPublicIP

Option A : Mode base de données autonome

Le script suivant crée l'utilisateur de la base de données (wfgen_user) dans une base de données autonome. La variable de mot de passe de l'utilisateur de la base de données SQL ($sqlUserPassword) doit être mise à jour.

# Database user credentials
$sqlUserUsername = "wfgen_user"
$sqlUserPassword = "<your(Strong!)Password>"
# Allow my public IP to access the SQL Server
$myPublicIP = (Invoke-WebRequest https://itomation.ca/mypublicip).content
az sql server firewall-rule create `
--resource-group $resourceGroup `
--server $sqlServer `
--name AllowMyTempPublicIP `
--start-ip-address $myPublicIP `
--end-ip-address $myPublicIP
# Create the database user in the contained database
$queryVariables = "USERNAME=$sqlUserUsername","PASSWORD='$sqlUserPassword'"
Invoke-Sqlcmd `
-ConnectionString $connectionStringWithSqlAdmin `
-Query '
CREATE USER $(USERNAME) WITH PASSWORD = $(PASSWORD);
ALTER ROLE db_datareader ADD MEMBER $(USERNAME);
ALTER ROLE db_datawriter ADD MEMBER $(USERNAME);
' `
-Variable $queryVariables
# Remove my public IP
az sql server firewall-rule delete `
--resource-group $resourceGroup `
--server $sqlServer `
--name AllowMyTempPublicIP

Note : N'exécutez pas le script Remove my public IP si vous devez accéder à la base de données à partir de votre bureau ou si votre serveur WorkflowGen n'est pas hébergé par Azure.

Option B : Mode base de données standard

Le script suivant crée l'utilisateur de la base de données (wfgen_user) dans une base de données standard. La variable de mot de passe de l'utilisateur de la base de données SQL ($sqlUserPassword) doit être mise à jour.

# Master database connection string
$connectionStringMaster = "Server=tcp:$sqlServer.database.windows.net,1433;Persist Security Info=False;User ID=$sqlAdminUsername;Password=$sqlAdminPassword;MultipleActiveResultSets=False;Encrypt=True;"
# Database user credentials
$sqlUserUsername = "wfgen_user"
$sqlUserPassword = "<your(Strong!)Password>"
# Allow my public IP to access the SQL Server
$myPublicIP = (Invoke-WebRequest https://itomation.ca/mypublicip).content
az sql server firewall-rule create `
--resource-group $resourceGroup `
--server $sqlServer `
--name AllowMyTempPublicIP `
--start-ip-address $myPublicIP `
--end-ip-address $myPublicIP
# Create the database login in the master db
$queryVariables = "USERNAME=$sqlUserUsername","PASSWORD='$sqlUserPassword'","DATABASE=$sqlDatabase"
Invoke-Sqlcmd `
-ConnectionString $connectionStringMaster `
-Query '
CREATE LOGIN $(USERNAME) WITH PASSWORD = $(PASSWORD);
' `
-Variable $queryVariables
# Create the user in the WorkflowGen database
Invoke-Sqlcmd `
-ConnectionString $connectionStringWithSqlAdmin `
-Query '
CREATE USER $(USERNAME) FROM LOGIN $(USERNAME) WITH DEFAULT_SCHEMA = $(DATABASE);
ALTER ROLE db_datareader ADD MEMBER $(USERNAME);
ALTER ROLE db_datawriter ADD MEMBER $(USERNAME);
' `
-Variable $queryVariables
# Remove my public IP
az sql server firewall-rule delete `
--resource-group $resourceGroup `
--server $sqlServer `
--name AllowMyTempPublicIP

Note : N'exécutez pas le script Remove my public IP si vous devez accéder à la base de données à partir de votre bureau ou si votre serveur WorkflowGen n'est pas hébergé par Azure.

Étape 2 : Configurez WorkflowGen

Ouvrez le fichier web.config de WorkflowGen et ajouter le nœud suivant sous <connectionStrings> :

<add name="MainDbSource" connectionString="Data Source=<server name>;Initial Catalog=<database name>;User ID=<database user>;Password=<password>;encrypt=true;trustServerCertificate=false;" providerName="System.Data.SqlClient" />
  • Remplacez <server name> par le nom du serveur (p.ex. workflowgen.database.windows.net).

  • Remplacez <database name> par le nom de la base de données (p.ex. WFGEN).

  • Remplacez <database user> par l'utilisateur de la base de données (p.ex. wfgen_user).

  • Remplacez <password> par le mot de passe de l'utilisateur de la base de données (p.ex. Admin123!).

Note : Nous recommandons fortement d'ajouter encrypt=true et trustServerCertificate=false; au connectionString pour établir une connexion sécurisée à la base de données.