MSDE Istruzioni per l'uso (parte 1) - Installazione di MSDE
a cura di Sabrina Cosolo (requisiti: conoscenza generica di Access e database SQL)

Sommario prima parte:
Installazione di MSDE (questo articolo)
Creazione di un database MSDE
Generare una vista su un database MSDE
Generare una Stored Procedure su un database MSDE

Premessa
In questa serie di articoli mi propongo di spiegare anche ai principianti che cos'è, a cosa serve e come convertire un progetto MDB in un progetto SQL.

Che cos'è MSDE e perché usarlo o non usarlo
MSDE è (al solito) un acronimo Microsoft e sta per Microsoft Data Engine ma in realtà, non è altro che la Personal (o Desktop) Edition di SQL Server 7.0 (se la installate da Office 2000 o Visual Studio 6.0) o di SQL Server 2000 (se la installate dai CD di Office XP o da quelli di una qualsiasi delle versioni commerciali di SQL Server - in questo caso l'acronimo cambia di riferimento e MSDE sta per Microsoft SQL Server Desktop Engine).

Perché usare MSDE?
Semplice: per avere la potenza di SQL Server anche nelle applicazioni più piccine, per costruire applicazioni scalabili senza alcuna modifica, dato che nel momento in cui le esigenze dell'utente aumentano basta passare da MSDE a SQL Server per avere la potenza necessaria senza dover modificare nulla nell'applicativo. Inoltre MSDE è completamente Royalty Free e quindi non c'è alcun costo per il cliente finale fino a che le sue esigenze non oltrepassano le specifiche di MSDE che sono: Massimo 5 Utenti e 2GB di spazio per il Database.

(Per informazioni dettagliate potete cercare - Microsoft Data Engine (MSDE) for Microsoft Visual Studio 6.0_ An Alternative to Jet for Building Desktop and Shared Solutions - Un articolo che trovate su MSDN sia sulla versione CD che sulla versione online che perora probabilmente meglio di me la causa e dove soprattutto è specificato il fatto che MSDE è Royalty-Free).

La mia opinione:
Qualsiasi applicazione business che necessita di risorse superiori a quelle di MSDE (+Utenti e/o +Spazio) deve essere dimensionata convenientemente e quindi prevedere un server dati e una architettura robusta se non si desidera che il tempo utilizzato per la manutenzione sia superiore a quello in cui l'applicazione è a disposizione degli utenti.

Perché non usare MSDE?
Perché per passare da un MDB a SQL Server bisogna imparare ad usare SQL anche se a onor del vero, gli strumenti grafici di Access XP sono quasi alla pari con quelli di SQL 2000 e quindi danno una mano in più. Perché le query funamboliche che il generatore di espressioni di MDB permette di generare ahimé non sono così facili da implementare su SQL Server, ma il guadagno in affidabilità, potenza e come ho detto Scalabilità vale il lavoro e le 'parolacce' che più di qualche volta anche la sottoscritta indirizza al suo povero e ignaro PC.

Dove reperire MSDE
MSDE si può trovare su tutti i CD di SQL Server 2000 dalla Personal Edition alla Enterprise Edition, nella directory \MSDE del CD di Installazione. Oppure sui CD di Office 2000 Professional o Premium sul disco 1 nella cartella \SQL\X86\SETUP. Sul Disco 1 di Office XP + Frontpage sotto la cartella \MSDE2000. La versione di MSDE fornita sui CD di SQL Server 2000 e su Office XP sembra contenere esclusivamente la Data Engine, inoltre l'installazione non dà alcuna maschera di setup o richiesta dati come la versione 7.0, fa tutto in automatico e predispone tutto con le modalità di default, inoltre non inserisce nel menu Programmi la cartella contenente i programmi di servizio (di cui parleremo poi), in realtà i programmi ci sono, basta andare a cercarli e metterli a menu in modo manuale. Posso supporre che Microsoft abbia reso più scarna l'installazione di MSDE 2000 perché è gratuita.
Su questo articolo installeremo la versione di MSDE di Office 2000 cioè SQL 7.0.

Dove si può installare MSDE
Workstation:
Server:
  • Windows '95
  • Windows '98
  • Windows Millennium
  • Windows XP Home
  • Windows NT Workstation
  • Windows 2000 Professional
  • Windows XP Professional
  • Windows NT 4.x
  • Windows 2000 Server
  • Windows 2000 Advanced Server e superiori.

Come potete vedere, MSDE si può installare dovunque, in particolare chi sviluppa può semplicemente installarlo sul proprio PC. (Consiglio spassionato, meglio se c'è almeno Windows '98 o superiore e soprattutto cercate di avere almeno 128 MB di Ram, meglio se 256 o 512).

Se la installate in Produzione (c/o cliente) 256 MB o 512MB di RAM sono opportuni. Per quanto riguarda l'installazione in Produzione, io ho dei clienti con singolo PC o con 2 PC che hanno MSDE installato su Windows '98 e funziona bene anche se non è velocissimo. Se però lo installiamo su Windows 2000 Professional, a parità di PC le prestazioni sono decisamente superiori e l'affidabilità molto maggiore.

Se installate una applicazione in Sviluppo, magari per testarla su alcuni utenti prima di passare ad una versione definitiva con esigenze superiori, potete installare MSDE su qualsiasi Server Windows e poi eventualmente upgradarlo ad una versione completa di SQL Server al momento giusto. Ho effettuato un Upgrade da MSDE (versione SQL 7.0) a SQL 2000 Standard e non ho avuto gravi problemi nel farlo.

Come si installa MSDE
Il Test che ho fatto io è stato effettuato usando MSDE dai dischi di Office 2000 Premium su un PC con Sistema Operativo Windows 2000 Professional e su un secondo PC con Sistema Operativo Windows '98. L'installazione è quasi identica (su Windows '98 non viene richiesta la parte relativa all'utente del servizio, ma non anticipiamo troppo).

Facciamo una installazione Passo passo:
(N.B. E' opportuno leggere tutto prima di cominciare a fare qualcosa, in particolare l'appendice)

Preliminari:

Ed ora l'ebbrezza dell'installazione:
(per ragioni di leggibilità e di minimo ingombro, le illustrazioni sono dei ritagli di quanto si vede effettivamente a video)

Inseriamo il CD 1 di Office 2000 (Pro - Premium) nel lettore,
se dovesse partire l'installazione automatica usciamone con Cancel o Annulla,
da Gestione Risorse usiamo il tasto destro del mouse sul Cdrom, per selezionare dal menu popup l'opzione Apri e spostiamoci sulla cartella: \SQL\X86\SETUP.
Tra le cartelle ed i files ne troveremo uno che si chiama SetupSql.exe che lanceremo immediatamente.
In risposta a questo comando, otterremo una finestra di Setup Microsoft con la Dialog box qui a lato.
Lasciamo selezionata l'opzione Installazione Locale e clicchiamo su Avanti>
Otterremo la finestra relativa agli Avvisi ai Naviganti di Microsoft: dato che MSDE è Royalty Free, non c'è Licenza ma solo le 'Raccomandazioni' Microsoft
- (Lo sapevate che Bill Gates scrisse la sua prima lettera contro la pirateria nel 1975 in quanto il basic per l'altair primo prodotto della futura Microsoft venne duplicato e passato da programmatore a programmatore anziché essere acquistato alla modica cifra di 156$.)
- ...Va bene ...va bene ...non c'entra nulla, ma dovevo occupare il resto della casella dato che basta premere Avanti > su questa maschera!

Nella maschera successiva vanno indicati il nome dell'utente e della società (se esiste) sul cui PC installiamo MSDE.

Premiamo Avanti > per proseguire.
Se vi chiedete perché perdo tempo a mostrarvi le videate di un setup Standard di Microsoft, è perchè un paio delle stesse sono importanti e perché è un articolo per Principianti.

Prima pagina importante, Cartelle di Installazione:

MSDE installa tutti i suoi File di Programma e gli archivi Dati di Default su queste Cartelle, perciò è possibile personalizzare l'installazione. Per esempio possiamo mettere tutti i Dati su un Disco diverso. Fate attenzione che non è possibile spostare i Database di Sistema dopo l'installazione, mentre è possibile invece spostare i Database Utente o Crearli su Directory diverse da quella di Default poposta da MSDE.

Come potete notare dal nome proposto, MSDE è in realtà SQL 7.0

Seconda Pagina Importante, Collation Page:

Questa pagina non è solo importante, è fondamentale in qualsiasi installazione di SQL Server 7.0 ed altrettanto importante è la corrispondente (seppur modificata) che si trova su SQL 2000.
Se sbagliate a impostare questa pagina il solo modo di recuperare è disinstallare e reinstallare tutto.

Che cosè una Collation:

La Collation è l'insieme delle regole che stabiliscono i criteri di ordinamento e di ricerca all'interno di un RDBMS (Relational DataBase Management System), in base alla Collation si decide il set di caratteri, se effettuare un ordinamento binario, dizionario o altro, se considerare o meno le lettere maiuscole o minuscole.
L'installazione di Default, che consiglio vivamente di non modificare se non per necessità ben ponderate, ha le seguenti caratteristiche:

Set di Caratteri ISO 1252 (Default di Windows)
Ordinamento Dizionario senza maiuscole/minuscole
Confronto Unicode generale senza maiuscole/minuscole

Piccola parentesi: Se vi doveste trovare nella situazione di Installare un Server SQL 2000 nuovo su cui trasferire poi un DB SQL 7.0 da un altra macchina, è necessario fare alcune variazioni nell'installazione perché la collation di default di SQL 2000 è diversa da quella di SQL 7.0, non per contenuto o funzionamento, ma per il suo nome, cosa che provoca parecchi dispiaceri e parolacce agli sviluppatori (parlo per esperienza purtroppo); perciò, se vi trovate nella situazione di cui sopra chiedetemi pure cosa fare.

Proseguiamo premendo Avanti>.

Terza Pagina Importante Librerie di Rete

SQL Server ha in dotazione più protocolli di rete diversi su cui gli utenti possono connettersi per fargli richieste, se sulla rete i diversi client si connettono alla macchina che farà da Database Server con protocolli diversi è necessario installare più protocolli di rete (es. se c'è un MacIntosh collegato via AppleTalk bisogna mettere il check su ADSP Appletalk).

Quelli proposti per Default solitamente li lascio sempre attivi anche se quando la rete usa solo TCP/IP si potrebbe eliminare la Named Pipe.

Quando viene installato, SQL Server, in base alle librerie selezionate, "ascolta" tutti i vari protocolli e risponde alle richieste automaticamente, indipendentemente dal protocollo usato dal Client, usando la libreria giusta.

Proseguiamo premendo Avanti>.

 

Quarta pagina Importante:

(Ma appare solo per le Installazioni su Windows 2000, XP e Server).
In questa pagina si stabilisce quale è l'utente con cui il Servizio SQL Server e i servizi ad esso ausiliari (SQL Server Agent e MSDTC) si connetteranno al Sistema Operativo.
Lasciando le impostazioni di Default, come nell'immagine, viene usato l'amministratore locale della macchina su cui installiamo SQL, altrimenti, se nelle operazioni preliminari avete creato l'utente SQLService (è importante farlo soprattutto sui Server oppure dove volete essere certi di avere tutto sotto controllo), potete mettere il Check su Usa account di un utente del dominio e inserire correttamente Nome utente, Password e Dominio, mettendo un Check sull'avvio automatico del servizio.

Proseguiamo premendo Avanti>.

Avete terminato la prima fatica,
al prossimo Avanti>
inizia l'installazione che si conclude con una nuova maschera con il tasto Fine per indicare che tutto è andato bene.

Terminata l'installazione, sul menu Programmi del sistema operativo dovreste trovare un Sottomenu MSDE con 4 programmi:

  • Client Net Utility
  • Server Net Utility
  • Import and Export Data
  • Service Manager

Quello che ci serve per terminare la configurazione è Service Manager, che una volta avviato mostra la finestra qui a destra.
Il Service Manager permette di visualizzare tutti i server visibili in rete (se per esempio avessimo 5 PC ciascuno con MSDE installata vedremmo i 5 diversi Server SQL) e da questo tool possiamo avviare, fermare o mettere in pausa i loro Servizi (ovviamente solo se ne abbiamo i privilegi come utenti delle macchine che li ospitano, se stiamo lavorando su Windows 2000). Per ogni Server la Combo Services permette di vedere i tre servizi che compongono SQL Server ovvero SQL Server, SQL Server Agent, MS DTC. In questo articolo ci limitiamo a usare SQL Server, controllando che il Flag Auto Start Service sia impostato e avviando il servizio se al termine dell'installazione non fosse stato avviato automaticamente.

Se andiamo a curiosare nella Directory di installazione, nel mio caso C:\MSSQL7, ne troveremo altre; quella che vorrei apriste e osservaste è la cartella DATA. Su questa cartella SQL Server installa i Database di Sistema.

Nome DB Files DB Descrizione
Master

master.mdf
mastlog.ldf

E' il database più importante di SQL Server, perché in esso sono memorizzati i dati relativi alla configurazione del Server e tutti i dati relativi alle strutture dei Database che poi aggiungeremo a SQL Server.
Le regole d'oro dell'uso di SQL dicono: fare un Backup di Master ogni volta che si modificano i DB all'interno di SQL Server e tenerlo al sicuro.
Se si guasta il DB Master, lo si può ricostruire, ma poi bisogna rifare manualmente gli attach dei Database e reinserire tutti i dati di definizione, ad esempio utenti, accessi etc.
Model

model.mdf
modellog.ldf

Questo Database viene duplicato da SQL su tutti i nuovi DB generati (Model non è un nome a caso), perciò se vogliamo inserire delle tabelle standard o procedure e definizioni standard nei nostri Database in modo automatico, oppure vogliamo definire le dimensioni minime dei DB generati, dobbiamo modificare Model.
Msdb

msdbdata.mdf
msdblog.ldf

In questo Database vengono memorizzati tutti i dati relativi ai Job, agli Alert e alle procedure automatiche generate per essere eseguite da SQLServerAgent.
(Non è argomento di questo articolo).
Tempdb tempdb.mdf
templog.ldf
In questo database, che viene ricreato ad ogni avvio di SQL Server, vengono memorizzate le tabelle temporanee eventualmente generate dai comandi SQL che gli Utenti usano.

La sola cosa importante da ricordare su questi Database è: Non usarli per inserirvi i propri dati!

Abbiamo completato l'installazione di MSDE, che ora è pronto per poter essere usato.
Non è difficile vero? Ma il bello deve ancora venire...

Appendice: Installazione MSDE 2000 Sp3 - Istruzioni x l'uso

  1. Copiare la cartella MSDE dal CD o unzippare il file scaricato da internet su
    C:\temp o altra cartella a voi gradita
  2. Verificare di aver tolto l'attributo Read Only a tutti i file
  3. Aprire il file Setup.ini e, dopo la riga
    [Options]
  4. aggiungere le seguenti righe, spiegate nel seguito:
    SAPWD=password_di_sa
    SECURITYMODE=SQL
    DISABLENETWORKPROTOCOLS=n
    DATADIR="nomeDirectoryDati"

    Ovviamente password_di_sa è la password da assegnare al login del System Administrator, possibilmente mettete una password significativa e più lunga di 2 caratteri.

    Quanto sopra serve a fare in modo che la sicurezza SQL sia accessibile dato che per default viene attivato il solo accesso via Trusted connection, ovvero SQL server permette l'accesso ai soli Builtin\Administrator della macchina fino a che non vengano mappati su di esso gli utenti di Windows.

    Se a vostro rischio e pericolo gradite che SA non abbia password, sostituite la prima riga con

    BLANKSAPWD=1

    Ma lo sconsiglio vivamente, anche per una semplice installazione da sviluppatore. Una password non costa nulla e spesso ti salva la vita.

    Impostare il Securitymode su SQL attiva la possibilità di accedere al server da parte degli utenti con autenticazione SQL Server, attivando quindi SA che altrimenti non è attivo e permettendo di creare utenti all'interno del server SQL nonché di far accedere macchine Windows '98 (o Linux) o comunque senza accesso con sicurezza Windows NT. Per attivare solo la modalità con sicurezza windows, omettere questa riga.

    "nomeDirectoryDati" è la directory in cui vogliamo memorizzare i database della nostra applicazione. Ho inserito questo parametro perché, solitamente, in tutte le installazioni in cui il server sia utilizzato non solo per esperimenti di programmazione, ma anche per una applicazione reale, è opportuno sapere con precisione dove si trovano i dati, sia per effettuare i backup, sia (soprattutto) perché di solito un System Administrator che sa il fatto suo crea una partizione separata per i dati delle applicazioni e non le mette sulla stessa partizione dei programmi e del sistema operativo, anzi, se ne ha la possibilità, li mette su un disco fisico diverso.

    Un esempio funzionante dei parametri ini descritti potrebbe essere:

    SAPWD=caranbalrog
    SECURITYMODE=SQL
    DISABLENETWORKPROTOCOLS=0
    DATADIR="d:\sql.dir\"

    Il caranbalrog è lì proprio perché cattivo abbastanza da proteggere SA, tutti i tolkieniani della lista sanno che cosa significa, agli altri il compito di scoprirlo...

  5. Salvare il setup.ini e far partire il programma setup.exe.

Nel caso abbiate già effettuato una installazione ed abbiate omesso il parametro DISABLENETWORKPROTOCOLS è possibile attivare la funzionalità dei protocolli di rete con le seguenti operazioni:

Premete il bottone START di Windows, selezionate Esegui e tramite il tasto Sfoglia cercate il programma svrnetcn.exe,
(sulla mia macchina si trova in: C:\Programmi\Microsoft SQL Server\80\Tools\Binn), e lanciatelo: apparirà la seguente finestra di dialogo:

Utilizzate il tasto Enable>> per abilitare TCP/IP e se necessario Named Pipes, che sono i due protocolli solitamente utilizzati in rete locale per SQL Server.
Se necessario attivatene altri in base alla configurazione stabilita per la vostra azienda.
Confermate con il tasto OK e poi riavviate MSDE usando il Service Manager oppure la gestione servizi di Windows XP.

A questo punto il vostro Server è in grado di funzionare anche in rete locale.
(Per queste istruzioni un grazie a Luca Bianchi, MVP di SQL Server e membro di UGISS.)

 

Se invece aveste installato MSDE in modalità di autenticazione errata, ovvero aveste omesso SECURITYMODE=SQL o installato MSDE con i parametri standard di installazione prima di leggere questo addendum, per fare in modo di attivare la modalità di autenticazione SQL è necessario modificare una chiave sul registry di sistema:

Per effettuare questa operazione è quindi necessario utilizzare il regedit.exe aprire il Registry di Windows, cercare la chiave seguente (HKLM=HKeyLocalMachine):

HKLM\Software\Microsoft\MSSQLServer\MSSQLServer\LoginMode

Per l'instanza di default (la prima installata)

Oppure la chiave

HKLM\Software\Microsoft\Microsoft SQL Server\NomeIstanza\MSSQLServer\LoginMode

Dove Nomeinstanza è il nome che è stato dato all'instanza di MSDE.

Nel valore della chiave inserire 1 per Sicurezza Windows Only, 2 Per Mixed mode (Windows + SQL).

(Anche per questo Tip ringraziamo Luca Bianchi , MVP di SQL Server e membro di UGISS.)

Successiva>