Créations d’instances nommées SQL Server 2000

Logo

Introduction

La création d’instances SQL Server peut se révéler particulièrement fastidieuse via le mode graphique mais il est toutefois possible de mettre en œuvre des installations d’instances SQL Server en mode silencieux. Cet aspect de l’installation des instances SQL Server 2000 fait l’objet de la présente documentation technique. Dans la terminologie SQL Server, il s’agit de ce que l’on appelle une « Unattended Installation » ou installation indépendante.

Dans une seconde partie, l’aspect de la désinstallation d’une instance SQL Server en mode silencieux est également abordé.

Dans cette documentation, l’installation et la désinstallation de l’instance SQL server CGC_T1_MSQ sont effectuées en mode silencieux.

Prérequis

Pour réaliser une installation en mode silencieux d’instances SQL Server, le CD d’installation de SQL Server 2000 est nécessaire. Le plus simple est de placer les binaires du CD sur un chemin réseau ou dans un répertoire sur le disque local.

Dans la suite de la documentation, la variable %MSQL_SETUP_DIR% désignera le répertoire où sont localisés les fichiers d’installation de MS SQL Server 2000.

Pour réaliser des installations et des désinstallations en mode silencieux, les fichiers et répertoires ci-dessous sont indispensables :

  • Répertoire %MSQL_SETUP_DIR%\x86
  • Fichier %MSQL_SETUP_DIR%\sqlcli.bat
  • Fichier %MSQL_SETUP_DIR%\sqlcli.iss
  • Fichier %MSQL_SETUP_DIR%\sqlcst.bat
  • Fichier %MSQL_SETUP_DIR%\sqlcst.iss
  • Fichier %MSQL_SETUP_DIR%\sqlrem.bat

Installation silencieuse d’une instance MS SQL Server

Toute installation silencieuse consiste simplement à déclencher l’exécutable %MSQL_SETUP_DIR%\x86\setup\setupsql.exe avec pour paramètre un fichier d’initialisation de setup (setup initialization file) ayant pour extension .iss et contenant toutes les informations de création de l’instance SQL Server.

Les fichiers d’initialisations ne contiennent en fait que les paramètres InstallShield déjà préremplis.

Deux types d’installations silencieuses sont envisageables :

  • l’installation du client MS SQL 2000
  • la création d’une nouvelle instance SQL Server

Installation du client MS SQL 2000

Pour installer le client MS SQL 2000 en mode silencieux, la simple ligne de commande ci-dessous suffit (voir %MSQL_SETUP_DIR%\sqlcli.bat pour exemple) :

@echo on
start /wait %MSQL_SETUP_DIR%\x86\setup\setupsql.exe -s -m -SMS -f1 "sqlcli.iss"
@echo off
-f1Fichier d’initialisation
-sMode silencieux

Pour l’installation du client, le fichier sqlcli.iss sans aucune personnalisation suffit largement.

Création d’une nouvelle instance SQL Server

Fichier d’initialisation

Le fichier d’initialisation %MSQL_SETUP_DIR%\sqlcst.iss peut servir de modèle pour créer un fichier d’initialisation d’une instance SQL Server. cst dans la nomenclature du fichier sqlcst.iss indique qu’il s’agit d’une installation personnalisée (custom) et non standard.

Pour la création de l’instance CGC_T1_MSQ, le fichier d’initialisation CGC_T1_MSQ.iss est créé à partir d’une copie du fichier CGC_T1_MSQ.iss et les paramètres personnalisés sont implémentés dans ce fichier.

Les paragraphes dans le fichier iss pour lesquels une personnalisation présentent un intérêt majeur sont :

[DlgInstanceName-0]
[SetupTypeSQL-0]
[DlgServices-0]
[DlgSQLSecurity-0]
[DlgCollation-0]
[DlgServerNetwork-0]
Personnalisation du déploiement [DlgInstanceName-0] et [SetupTypeSQL-0]

Les sections [DlgInstanceName-0] et [SetupTypeSQL-0] permettent de définir explicitement le nom de la future instance SQL Server à créer, le répertoire d’installation des binaires dédiés à l’instance à créer ainsi que le répertoire des fichiers de données (devices, fichiers de log, etc.) pour l’instance.

La section [DlgInstanceName-0] renseigne le nom de l’instance SQL Server à créer (CGC_T1_MSQ pour l’exemple dans cette documentation).

[DlgInstanceName-0]
InstanceName=CGC_T1_MSQ
Result=1

Dans la section [SetupTypeSQL-0], szDir et szDataDir définissent respectivement le répertoire d’installation des binaires pour l’instance et le répertoire des fichiers de données propres à l’instance. Au sein d’InstallShield %PROGRAMFILES% est une variable représentant C:\Program Files.

[SetupTypeSQL-0]
szDir=%PROGRAMFILES%\Microsoft SQL Server
Result=303
szDataDir=C:\sdata\mssql

Répertoire szDir

Chaque instance SQL Server dispose de ses propres binaires (*.exe, *.dll…), ce qui simplifie grandement la mise en œuvre de patches sur une instance en particulier. Ces binaires sont installés dans le répertoire défini par szDir et l’installation des binaires est alors effectuée selon l’architecture ci-dessous :

  • SzDir\MSSQL$<instance_name>\Binn
  • SzDir\MSSQL$<instance_name>\Install
  • SzDir\MSSQL$<instance_name>\Upgrade

Répertoire szDataDir :

Les fichiers de données propres à l’instance sont quant à eux installés dans le répertoire szDataDir selon l’architecture et la nomenclature ci-dessous :

Répertoire Fonction
SzDataDir\MSSQL$<instance_name>\BACKUP Répertoire par défaut pour les backups
SzDataDir\MSSQL$<instance_name>\Data Devices des bases de données master, msdb, etc.
SzDataDir\MSSQL$<instance_name>\FTDATA Répertoire pour les catalogues Full Text
SzDataDir\MSSQL$<instance_name>\JOBS Répertoire par défaut pour les jobs
SzDataDir\MSSQL$<instance_name>\LOG Répertoire par défaut pour les fichiers de log
SzDataDir\MSSQL$<instance_name>\REPLDATA Répertoire par défaut pour la réplication
Personnalisation des paramètres réseau [DlgServerNetwork-0]

La section [DlgServerNetwork-0] permet de spécifier la couche réseau à utiliser pour le transfert des paquets réseau entre l’instance SQL Server et les clients.

Dans cette rubrique, il est possible d’indiquer les librairies réseau à utiliser (TCP/IP et/ou « named pipes »), le port d’écoute dans le cas de l’utilisation de la librairie réseau TCP/IP, le nom du canal lors de l’utilisation de la librairie « named pipes ».

[DlgServerNetwork-0]
NetworkLibs=255
TCPPort=6031
TCPPrxy=Default
NMPPipeName=\\.\pipe\CGC_T1_MSQ\sql\query
Result=1
Entrée Valeur Description
NetworkLibs 255 "Named pipes" et TCP/IP
245 TCP/IP seulement
15 Named pipes seulement
TCPPort N° de port (valeur par défaut 1433) Numéro de port pour le protocole TCP/IP
NMPPipeName \\.\pipe\<instance_name>\sql\query Nom du canal (named pipe)
Personnalisation des services [DlgServices-0]

L’installation des services est prise en charge par l’installation et deux services sont créés avec la nomenclature ci-dessous :

Service Description
MSSQL$<instance_name> Service de démarrage et d’arrêt de l’instance
SQLAgent$<instance_name> Agent SQL pour l’instance

Le paragraphe [DlgServices-0] permet de paramétrer ces deux services (comptes et mode de démarrage) et plus particulièrement les options Local-Domain et AutoStart dans cette section.

[DlgServices-0]Local-Domain=3855
AutoStart=15
Result=1

Local-Domain :

La valeur pour l’option Local-Domain spécifie les comptes utilisés pour les deux services de l’instance (service de démarrage et service de l’agent). Pour calculer cette valeur, les valeurs hexadécimales dans le tableau qui suit sont utilisées :

Service Compte à utiliser Valeur hexadécimale
SQL Server Compte système local 0x0000000F
SQL Server Agent Compte système local 0x00000F00
SQL Server Compte utilisateur du domaine 0x000000F0
SQL Server Agent Compte utilisateur du domaine 0x0000F000

ainsi à titre d’illustration, la valeur Local-Domain est calculée de la façon suivante pour indiquer un démarrage du service SQL Server et du service SQL Server Agent par le compte système local :

select convert(bigint,0x0000000F ) | convert(bigint,0x00000F00 )
----------------------------------------------------------------
3855
Local-Domain=3855

Des entrées additionnelles doivent être ajoutées dans le fichier d’initialisation si un compte utilisateur est envisagé pour le démarrage des services et non le compte système local :

  • Lorsque le service SQL Server démarre avec un compte du domaine, le setup recherche dans la section [DlgServices-0] les valeurs :
    • SQLDomain= <domain name>
    • SQLDomainAcct = <domain user account>
    • SQLDomainPwd = <domain user password>
  • Lorsque le service SQL Server Agent démarre avec un compte du domaine, le setup recherche dans la section [DlgServices-0] les valeurs :
    • AgtDomain = <domain name>
    • AgtDomainAcct =<domain user account>
    • AgtDomainPwd = <domain password>

Les mots de passe sont encryptés et uniquement disponibles en créant un fichier .iss à partir d’un premier setup graphique.

AutoStart :

La valeur pour l’option AutoStart spécifie le mode de démarrage (manuel ou automatique) pour chacun des deux services de l’instance (service de démarrage et service de l’agent). Pour calculer cette valeur, les valeurs hexadécimales ci-dessous sont utilisées :

Entrée Valeur Hexadécimale Description
Autostart SQL Server 0x0000000F Démarrage automatique
0 Démarrage manuel
Autostart SQL Server Agent 0x000000F0 Démarrage automatique
0 Démarrage manuel
  • pour spécifier un démarrage automatique du service SQL Server et un démarrage manuel de l’agent SQL de l’instance :
    select convert(bigint,0x0000000F ) | 0
    
    --------------------------------------
    15
    AutoStart=15
  • pour spécifier un démarrage automatique du service SQL Server et un démarrage automatique de l’agent SQL de l’instance :
    select convert(bigint,0x0000000F ) | convert(bigint, 0x000000F0)
    
    ----------------------------------------------------------------
    255
    AutoStart=255
  • pour spécifier un démarrage manuel du service SQL Server et un démarrage manuel de l’agent SQL de l’instance :
    AutoStart=0
Personnalisation de la sécurité [DlgSQLSecurity-0]

Le paragraphe [DlgSQLSecurity-0] indique le mode d’authentification sur le serveur MS SQL Server : authentification Windows et/ou authentification SQL Server.

[DlgSQLSecurity-0]
LoginMode=-1
Result=1

La variable LoginMode explicite le mode d’authentification.

Entrée Valeur Description
LoginMode -1 Le système par défaut de sécurité est utilisé. Pour Windows NT, le mode d’authentification par défaut est l’authentification Windows.
LoginMode 1 Authentification Windows
LoginMode 2 Mode mixte : authentification Windows et SQL Server
szPwd <mot de passe sa> Entrée utilisée uniquement avec le mode de sécurité mixte. Il s’agit du mot de passe du futur compte sa.
Personnalisation du jeu de caractères [DlgCollation-0]

La variable collation_name dans le paragraphe [DlgCollation-0] renseigne le jeu de caractères par défaut pour le serveur Microsoft SQL Server à créer.

[DlgCollation-0]
collation_name=' '
Result=1

Par défaut, lorsque la variable collation_name est une chaîne vide, le jeu de caractères par défaut du système d’exploitation est pris en compte.

Pour spécifier un autre jeu de caractères grâce à la variable collation_name, consulter la table « Collation settings » (Latin1_General, Modern_Spanish…).

Lancement de la création de l’instance

Pour installer l’instance en mode silencieux, la simple ligne de commande ci-dessous suffit (voir %MSQL_SETUP_DIR%\sqlcst.bat pour exemple) :

@echo on
start /wait %MSQL_SETUP_DIR%\x86\setup\setupsql.exe -s -m -SMS -f1 "<path_to_your_configuration_file.iss>"
@echo off
-f1Fichier d’initialisation
-sMode silencieux
start /wait %MSQL_SETUP_DIR%\x86\setup\setupsql.exe -s -m -SMS -f1 "CGC_T1_MSQ.iss"

Désinstallation d’une instance MS SQL Server

Il existe deux options pour la désinstallation d’une instance MS SQL Server :

  • soit avec l’option Panneau de configuration > Ajout/ Suppression de programmes > Microsoft SQL Server 2000 (<instance_name>)
  • soit en lançant l’exécutable isuninst.exe d’InstallShield.

Ce paragraphe s’attarde plus particulièrement sur la deuxième option.

À l’issue de l’installation d’une instance SQL Server, tous les fichiers de désinstallation nécessaires sont également installés dans le répertoire szDir\MSSQL$<instance_name> (C:\Program Files\Microsoft SQL Server\MSSQL$CGC_T1_MSQ dans le contexte de l’exemple de la documentation) :

  • sqlsun.dll
  • sqlunin.ini
  • Uninst.isu

La simple ligne de commande qui suit déclenche la désinstallation de l’instance SQL Server :

@echo on
start /wait isuninst.exe -a -y -x -msql.mif -f"%SQLPATH%\uninst.isu" -C"%SQLPATH%\sqlsun.dll" i=%INSTANCE%
@echo off

Dans cette ligne de commande :

%SQLPATH% Répertoire d’installation du fichier uninst.isu de l’instance SQL Server <instance_name>, soit szDir\MSSQL$<instance_name>.
%INSTANCE% Instance SQL Server à désinstaller.

Dans le cadre de l’exemple de la documentation :

@echo on
set INSTANCE=CGC_T1_MSQ
set SQLPATH=C:\Program Files\Microsoft SQL Server\MSSQL$CGC_T1_MSQ
start /wait isuninst.exe -a -y -x -msql.mif -f"%SQLPATH%\uninst.isu" -C"%SQLPATH%\sqlsun.dll" i=%INSTANCE%
@echo off

Toute la désinstallation est prise en charge et notamment la désinstallation des services.