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
-f1 | Fichier d’initialisation |
-s | Mode 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
-f1 | Fichier d’initialisation |
-s | Mode 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.