Introduction
2 précédents articles, parus respectivement en novembre 2010 et février 2011, présentaient les installations en mode silencieux (silent install) de serveurs de bases de données MS SQL Server 2008 (sans les autres composants Analysis Services, Integration Services, MS Reporting, etc.):
- Microsoft SQL Server 2008 R2 - Installation silencieuse
- SQL Server 2008 R2 - Installation silencieuse d’un cluster en mode failover sur Windows 2003 Server
Le cas de la migration en mode silencieux d’un serveur de bases de données Microsoft SQL Server 2008 vers Microsoft SQL Server 2008 R2 est à présent abordé en s’attardant sur la méthodologie et les opérations réalisées durant cette migration. Il s’agit d’une instance MS SQL Server par défaut (SRVWINFR24) et non une instance nommée.
Avant la migration, le conseiller de migration vers SQL Server 2008 R2 (Upgrade Advisor) a scanné l’instance en question et n’a pas détecté d’incompatibilités pour une migration de SQL Server 2008 vers SQL Server 2008 R2. Pour plus d’informations sur le conseiller de migration SQL Server 2008 R2 : Installation et utilisation à distance en ligne de commandes du conseiller de migration Microsoft SQL 2008 R2 (upgrade advisor)
Migration en mode silencieux de SQL Server 2008 vers SQL Server 2008 R2 avec un fichier de configuration
SQL_2008_ENT_R2 correspond au répertoire contenant la distribution d’installation de SQL Server 2008 R2 (en local ou partage réseau). La migration est réalisée avec la ligne de commande suivante :
start /wait SQL_2008_ENT_R2\setup.exe /configurationfile=upgrade.ini
/Q /IACCEPTSQLSERVERLICENSETERMS
Le fichier de configuration upgrade.ini
est un format INI classique de type
TAG=VALEUR
.
Pour une migration le paramètre ACTION
doit être Upgrade
dans le fichier de
configuration qui ressemble à ceci (les éléments les plus importants étant
spécifiés au début du fichier de configuration) :
upgrade.ini
;SQLSERVER2008 Configuration File
[SQLSERVER2008]
INSTANCEID="MSSQLSERVER"
INSTANCENAME="MSSQLSERVER"
; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE.
; This is a required parameter.
ACTION="Upgrade"
FAILOVERCLUSTERROLLOWNERSHIP="2"
FTUPGRADEOPTION="Import"
...
HELP="False"
INDICATEPROGRESS="False"
QUIET="False"
QUIETSIMPLE="False"
X86="False"
ENU="True"
UIMODE="Normal"
ERRORREPORTING="False"
SQMREPORTING="False"
ISSVCSTARTUPTYPE="Automatic"
ISSVCACCOUNT="NT AUTHORITY\NetworkService"
BROWSERSVCSTARTUPTYPE="Disabled"
RSCATALOGSERVERINSTANCENAME="Unknown"
Toutes les entrées spécifiées dans le fichier de configuration peuvent être
passées en paramètre à setup.exe
. ACTION="Upgrade"
dans le fichier ini devient
/ACTION=upgrade
lorsque ce paramètre est donné à la ligne de commande setup. La
ligne de commande surcharge le fichier ini, cela signifie que si une valeur est
définie à la fois dans le fichier ini et passée en paramètre, c’est la valeur
passée en paramètre qui est prise en compte.
Chaque exécution du setup créé les fichiers de log dans un nouveau
répertoire horodaté YYYYMMDD_hhmmss
dans le répertoire %programfiles%\Microsoft
SQL Server\100\Setup Bootstrap\Log\
.
Quelques remarques notables à propos de quelques paramètres :
Paramètres | Commentaire |
---|---|
INSTANCEID |
Paramètre obligatoire lorsqu’il s’agit d’une migration depuis SQL
Server 2008. Pour SQL Server 2000 et SQL Server 2005, ce paramètre est
optionnel. Le paramètre INSTANCEID est utilisé pour spécifier où
installer les composants de l’instance (binaires…) ainsi que le
chemin dans la base de registres. INSTANCEID doit être unique.
Pour une instance base de données SQL Server 2008 :
SQLInstanceID = MSSQL10_50.<INSTANCEID>
Ce qui génèrera l’installation des composants SQL 2008 R2 propres à
l’instance (binaires, clés de registres…) dans le répertoire %Program
Files%\Microsoft SQL Server\<SQLInstanceID> |
INSTANCENAME |
Paramètre qui indique le nom de l’instance SQL Server à migrer.
MSSQLSERVER lorsqu’il s’agit d’une instance par défaut, <nom de
l’instance> pour une instance nommée. |
FAILOVERCLUSTERROLLOWNERSHIP |
Paramètre qui contrôle le comportement des bascules FAILOVER
lorsqu’il s’agit de nœuds d’un cluster MS SQL Server 2008. Avec SQL
Server 2008 R2, la migration doit être réalisée nœud par nœud en
commençant par les nœuds passifs. Par défaut (2), lorsque la moitié au
moins des nœuds a été migrée, le Setup de la migration basculera sur
un nœud migré en SQL 2008 R2. Pour ce paramètre :
|
FTUPGRADEOPTION |
La migration de la fonctionnalité fulltext , si elle est mise en
place, est réalisée selon trois modes possibles grâce au paramètre
FTUPGRADEOPTION . Le choix de la méthode dépend du volume des indexes
fulltext.
|
Veiller à ne bien utiliser que les paramètres autorisés par le mode
"UPGRADE
", dans le cas contraire, la migration silencieuse est en échec. Voici
un exemple dans lequel le paramètre non autorisé SQLSVCPASSWORD
(mot de passe
du compte de service AD exécutant l’instance SQL Server 2008) est donné au
setup :
Slp: Exception type: Microsoft.SqlServer.Chainer.Infrastructure.InputSettingValidationException
Slp: Message:
Slp: The setting 'SQLSVCPASSWORD' is not allowed when the value of setting 'ACTION' is 'Upgrade'.
Slp: Data:
Slp: SQL.Setup.FailureCategory = InputSettingValidationFailure
Slp: DisableWatson = true
Slp: Stack:
...
Slp: ----------------------------------------------------
Slp: Error result: -2068578299
Slp: Result facility code: 1204
Slp: Result error code: 5
Opérations principales réalisées
Attardons nous à présent sur les opérations réalisées et plus particulièrement l’étape de migration de l’instance SQL Server 2008 R2 en elle-même.
Dans le répertoire %programfiles%\Microsoft SQL Server\100\Setup
Bootstrap\Log\YYYYMMDD_HHMMSS
généré lors du setup, comme son nom l’indique le
fichier Summary_<instancename>_YYYYMMDD_HHMMSS.txt
résume assez bien les
opérations réalisées : détection des composants à migrer, statuts des
composants migrés… Voici des extraits
Détection des composants à migrer :
Product features discovered:
Product Instance Instance ID Feature
Language Edition Version Clustered
Sql Server 2008 MSSQLSERVER MSSQL10.MSSQLSERVER Database Engine Services
1033 Enterprise Edition 10.0.1600.22 No
Sql Server 2008 MSSQLSERVER MSSQL10.MSSQLSERVER SQL Server Replication
1033 Enterprise Edition 10.0.1600.22 No
Sql Server 2008 MSSQLSERVER MSSQL10.MSSQLSERVER Full-Text Search
1033 Enterprise Edition 10.0.1600.22 No
Sql Server 2008 Management Tools - Basic
1033 Enterprise Edition 10.0.1600.22 No
Sql Server 2008 Management Tools - Complete
1033 Enterprise Edition 10.0.1600.22 No
Sql Server 2008 Client Tools Connectivity
1033 Enterprise Edition 10.0.1600.22 No
Sql Server 2008 Client Tools Backwards Compatibility
1033 Enterprise Edition 10.0.1600.22 No
Statut de la migration des composants :
Detailed results:
...
Feature: Database Engine Services
Status: Passed
MSI status: Passed
Configuration status: Passed
...
Que se passe-t-il plus spécifiquement pour le moteur de bases de données SQL
Server lors de cette migration ? Ce sont les fichiers de log
SQLServer_ERRORLOG_YYYY-MM-DDTHH.MM.SS.txt
créés dans le répertoire des
fichiers de log qui nous en disent beaucoup.
Lorsque les composants SQL 2008 R2 (binaires sqlservr
, etc.) sont prêts
dans le répertoire %Program Files%\Microsoft SQL
Server\MSSQL10_50.<INSTANCEID>
, l’instance est démarrée avec SQL Server
2008 R2 avec les paramètres de démarrage supplémentaires ci-dessous dans la
ligne de commandes :
-m SqlSetup
(démarrage en mode single user et connexion à l’instance réservée uniquement au programmeSqlSetup
).-T 4022
(trace flag pour empêcher le démarrage automatique des procédures stockées).-T 4010
(trace flag non documenté).-T 1905
(trace flag non documenté).
... Server (c) Microsoft Corporation.
... Server All rights reserved.
... Server Server process ID is 5848.
... Server Authentication mode is MIXED.
... Server Logging SQL Server messages in file 'E:\MSSQL\MSSQLSERVER\MSSQL.1\MSSQL\LOG\ERRORLOG'.
... Server Registry startup parameters:
-d E:\MSSQL\MSSQLSERVER\MSSQL.1\MSSQL\DATA\master.mdf
-e E:\MSSQL\MSSQLSERVER\MSSQL.1\MSSQL\LOG\ERRORLOG
-l E:\MSSQL\MSSQLSERVER\MSSQL.1\MSSQL\DATA\mastlog.ldf
... Server Command Line Startup Parameters:
-m SqlSetup
-T 4022
-T 4010
-T 1905
Les bases systèmes master et model et non systèmes sont ensuite migrées :
... spid10s Converting database 'model' from version 655 to the current version 661.
... spid10s Database 'model' running the upgrade step from version 655 to version 660.
... spid10s Database 'model' running the upgrade step from version 660 to version 661.
... spid10s CHECKDB for database 'model' finished without errors
...
Vient ensuite l’exécution de scripts SQL pour la mise à jour des objets et procédures systèmes de la base système msdb, du log shipping, des tables systèmes pour SSIS, la réplication, etc. La sortie est très verbeuse, en voici seulement quelques extraits :
spid7s ----------------------------------
spid7s Starting execution of INSTMSDB.SQL
spid7s ----------------------------------
...
spid7s Dropping procedure [dbo].[sp_syscollector_create_collection_item]...
spid7s Creating procedure [dbo].[sp_syscollector_create_collection_item]...
...
spid7s Upgrading SQL Server Log Shipping...
spid7s Upgraded SQL Server Log Shipping successfully.
...
spid7s Upgrading Database Mail related objects...
spid7s Completed upgrade of Database Mail related objects...
...
spid7s Executing replication upgrade scripts.
spid7s Executing sp_vupgrade_replication.
...
L’instance est ensuite redémarrée en mode normal avec les binaires de SQL Server 2008 R2.