SQL 2005 – Utilizzo del setup da riga di comando per upgrade/downgrade di versione

L’esecuzione del setup di SQL Server da riga di comando permette di specificare diversi parametri e configurazioni e viene principalmente utilizzato per effettuare un upgrade di versione o per aggiornare versioni “Evaluation” a quelle definitive; in casi eccezionali può essere usato anche per l’operazione inversa (downgrade) preservando i dati e le configurazioni esistenti.

prendiamo ora in considerazione il caso più “semplice”, l’upgrade di versione ed i relativi passi. Si fa riferimento ad un istanza di SQL Server in configurazione cluster, con le opzioni non necessarie alle configurazioni standalone commentate singolarmente

  1. E' necessario avere a disposizione il DVD della versione RTM o i file di installazione in una directory locale
  2. Aprire un Command Prompt e posizionarsi nella directory Servers del DVD o della copia locale
  3. eseguire il seguente comando:

start /wait setup.exe INSTANCENAME=SQL2005CU11 UPGRADE=SQL_Engine SKUUPGRADE=1 /qb VS=VSQL2005 ADMINPASSWORD=pwd GROUP="SQL 2005 ENG CU11" ADDNODE=W2K3NODE1_1,W2K3NODE2_2

Vediamo il significato dei vari parametri, applicati ad un cluster di laboratorio che ho usato per i test

  • INSTANCENAME è il nome dell’istanza da aggiornare, specificare MSSQLSERVER nel caso si tratti di quella di default
  • UPGRADE permette di specificare l’elenco delle componenti da aggiornare separati dalla virgola: in questo caso SQL_Engine informa il setup di aggiornare solo la parte di “Database Engine”
  • SKUUPGRADE=1 è il parametro che permette l’aggiornamento
  • VS è il nome del Virtual Server da aggiornare, ossia il nome della risorsa “Network Name” all’interno del gruppo del cluster che contiene SQL Server; questo parametro non serve per le configurazioni standalone
  • ADMINPASSWORD è la password dell’account (con diritti amministrativi) correntemente logato al nodo del cluster che sta eseguendo il setup; serve per potere gestire il nodo remoto (o i nodi) durante il setup. Non è richiesto per le configurazioni Standalone
  • GROUP è il gruppo del cluster all’interno del quale si trovano le risorse di SQL Server e nel caso in cui ci siano degli spazi il nome deve essere racchiuso tra doppi apici. Non è richiesto nelle installazioni Standalone
  • ADDNODE è utilizzato per specificare l’elenco dei nodi che possono essere “owwer” dell’istanza. Non richiesto per le Standalone
  • /qb abilita una modalità “semi silent” visualizzado solo richieste di input quando necessario

Vediamo ora le operazioni necessarie per potere fare il downgrade della versione mantenendo i database e le configurazioni esistenti; le operazioni sono un po’ più lunghe che nel precedente caso.
Per prima cosa occorre rimuovere l’istanza esistente usando il parametro SAVESYSDB, per cui lasciando inalterati i precedenti punti 1 e 2 la riga di comando diventa

start /wait setup.exe /qb INSTANCENAME=SQL2005CU11 VS=VSQL2005 REMOVE=All ADMINPASSWORD=pwd SAVESYSDB=1

Tutti parametri già visti tranne SAVESYSDB=1 che è quello che istruisce il setup di mantenere i database di sistema nella directory DATA originaria e REMOVE, che serve per indicare le componenti che devono essere rimosse, in questo caso tutte (All): è consigliabile comunque fare una copia dei file esistenti.
A questo punto si può procedere con l’installazione  della nuova istanza seguendo i passi seguenti:

  1. Riavviare i nodi dopo la rimozione di SQL effettuata in precedenza

  2. Seguire i punti 1 e 2 gia visti per l’upgrade

  3. eseguire la seguente riga di comando:

    start /wait setup.exe /qb VS=VSQL2005 INSTANCENAME=SQL2005CU11 GROUP="SQL 2005 ENG CU11" ADDNODE=w2k3node1_1,w2k3node2_2 INSTALLVS=SQL_Engine ADDLOCAL=SQL_Engine,SQL_Replication,SQL_FullText,Client_Components,Connectivity,SQL_Tools90,SQL_Documentation,SQL_BooksOnline IP=10.10.10.80,ToHost INSTALLSQLDIR="C:\Program Files\Microsoft SQL Server" INSTALLSQLDATADIR="g:\Program Files\Microsoft SQL Server" ADMINPASSWORD=pwd SQLACCOUNT=CLUSTERDOM\sqlsvc SQLPASSWORD=pwd AGTACCOUNT=CLUSTERDOM\sqlsvc AGTPASSWORD=pwd SQLBROWSERACCOUNT="NT AUTHORITY\SYSTEM" SQLCLUSTERGROUP=CLUSTERDOM\CLUSTER AGTCLUSTERGROUP=CLUSTERDOM\CLUSTER FTSCLUSTERGROUP=CLUSTERDOM\CLUSTER USESYSDB="G:\Microsoft SQL Server\MSSQL.1\MSSQL"

Tra i vari parametri non ancora visti abbiamo:

  • INSTALLVS indica per quale componente si vuole creare un Virtual Server (in questo caso il Database Engine). Non è richiesto nel caso di installazione locale
  • ADDLOCAL permette di specificare quali componenti aggiungere alla parte locale dell’installazione: l’elenco riportato sopra corrisponde ad un’installazione tipica che comprende Database Enginge, Management Tools, Performance Tool e BooksOnline.
  • IP serve a specificare l’IP assegnato all’istanza ed il nome assegnato alla connesione di rete da usare, separati da una virgola; devono rimanere identici all’ IP e al nome della rete dell’istanza rimossa in precedenza. Non richiesto per un server Standalone.
  • INSTALLSQLDIR è la directory di installazione locale di SQL Server
  • INSTALLSQLDATADIR e la directory predefinita per il posizionamento dei file di dati e deve coincidere con quella precedente
  • SQLACCOUNT e SQLPASSWORD rappresentano l’account di servizio di SQL Server e relativa password
  • AGTACCOUNT e AGTPASSWORD rappresentano l’account di servizio del SQL Server Agent e relativa password
  • SQLBROWSERACCOUNT è l’account associato al servizio SQL Server Browser. Nel caso in cui si lascia l’account System (consigliato) non è necessario specificare la password
  • SQLCLUSTERGROUP, AGTCLUSTERGROUP e FTSCLUSTERGROUP rappresentano i gruppo di dominio necessari per l’installazione di un’istanza cluster e non sono richiesti nel caso di Standalone
  • USESYSDB permette di specificare il percorso base dal quale prendere i file di sistema e i database utente esistenti

Entrambe le modalità di "upgrade” riportano SQL Server alla versione RTM per cui al termine è necessario ri-applicare la stessa Service Pack e Cumulative Update esistenti prima dell’attività di manutenzione.

 

Mauro Munzi
Senior Support Engineer
Microsoft Enterprise SQL Support