MSDE Altre istruzioni per l'uso (parte 2) - Creare/Eliminare un Database
a cura di Sabrina Cosolo (requisiti: Livello intemedio di conoscenza generale)
Creare un Database via Codice SQL
La creazione di un Database su SQL Server è un comando SQL che fa parte di quello che viene chiamato DDL (Data Definition Language). Deve essere lanciata collegandosi a SQL Server come un utente che abbia diritti di amministrazione sul server dati; per chi ha installato MSDE Base bisogna utilizzare l'utente SA oppure, se viene utilizzata la connessione Trusted di Windows NT/2000, occorre far parte del gruppo Builtin Administrator della macchina su cui il server è installato; se si deve intervenire su un server esistente, è necessario farsi predisporre un account utente con i diritti necessari dall'amministratore di sistema.Di seguito il codice SQL per la creazione del database di esempio già utilizzato nella prima serie di articoli:
CREATE DATABASE MUSICBOX ON PRIMARY ( NAME = MUSICBOXDAT , FILENAME = 'C:\SQL.DIR\DATA\MUSICBOXDAT.MDF' , SIZE = 5MB , MAXSIZE = 20MB , FILEGROWTH = 20% ) LOG ON ( NAME = MUSICBOXLOG , FILENAME = 'C:\SQL.DIR\DATA\MUSICBOXLOG.LDF' , SIZE = 2MB , MAXSIZE = 8MB , FILEGROWTH = 20% )Vediamo di dare un significato ad alcuni dei parametri predisposti:
- Archivio dati:
- NAME = Nome logico del file Viene utilizzato poi a livello di gestione Backup/Restore e altre operazioni sui file dati.
- FILENAME = Path completo e nome del file fisico che conterrà i dati.
- SIZE = Spazio su disco inizialmente allocato per il file dati .
- MAXSIZE = Massima dimensione allocabile per il file dati.
- FILEGROWTH = Quantità di spazio (in percentuale o in MB) da allocare quando lo spazio iniziale verrà completamente riempito
- Archivio log
- NAME = Nome logico del file (vedi sopra).
- FILENAME = Path completo e nome del file di log del database.
- SIZE = Spazio su disco inizialmente allocato per il file di Log (Solitamente il 25% della dimensione del file dati)
- MAXSIZE = Massima dimensione allocabile per il file di log.
- FILEGROWTH = Quantità di spazio (in percentuale o in MB) da allocare quando lo spazio iniziale verrà completamente riempito
Ulteriori spiegazioni:
- SIZE:
- Quando si costruisce un Database di produzione, è opportuno dimensionarlo in maniera tale che il Database non effettui troppo spesso l'operazione di "AUTOGROW" legata al parametro FILEGROWTH. Perciò bisogna allocare uno spazio tale per cui il DB rimanga stabile almeno per una intera giornata, meglio se una settimana o un mese, in quanto l'operazione di crescita rallenta il funzionamento del server dati e appesantisce il carico di lavoro sul sistema operativo.
- MAXSIZE:
- Il parametro Maxsize dovrebbe essere sempre regolato ad un valore tale per cui non si rischi di riempire il disco completamente, per MSDE la dimensione massima allocabile è comunque di 2GB ma è sempre il caso di verificare che il database non saturi lo spazio, soprattutto quando la macchina che funge da server ha più di una applicazione installata.
- FILEGROWTH:
- Questo parametro deve essere predisposto tenendo conto di quanto descritto sul parametro SIZE ed essere tarato per evitare che l'operazione di crescita del Database debba essere effettuata troppo spesso.
Il riempimento degli archivi deve essere tenuto sotto controllo soprattutto quando si lavora con SQL Server, per MSDE assicuratevi di avere almeno 2GB di spazio disponibile per ogni Database oppure stabilite a priori la MAXSIZE del DB ad un valore più basso se vi è possibile conoscere la massima crescita della vostra base dati.
Eliminare un Database via codice SQL:
Per eliminare un Database, così come per crearlo, è necessario che l'utente di SQL Server utilizzato per la connessione abbia diritti di amministrazione sul server dati. La cancellazione di un Database è una operazione definitiva, perciò è consigliabile farne prima una copia di Backup, nel caso poi ci si accorga di aver sbagliato. Inserite gli opportuni controlli e richieste di conferma se l'operazione deve essere effettuata da un utente. Se possibile, predisponete queste attività in un programma di utility a cui abbia accesso solo chi amministra il sistema ed i software.Di seguito il codice SQL per la cancellazione di un Database utilizzando il Database esempio creato con l'operazione precedente:
DROP DATABASE MUSICBOXCome si può notare, la cancellazione è una operazione molto semplice, quanto definitiva.
Oltre ad usare Visual Basic e gli oggetti ADO come nell'esempio di codice allegato a questi articoli, i comandi SQL qui illustrati e quelli che illustreremo negli altri esempi, possono essere eseguiti utilizzando l'utility di linea di comando OSQL.EXE che si trova nella cartella TOOLS\BINN sotto la cartella di installazione di SQL Server o MSDE.
Ad esempio, sul mio computer su cui ho installato MSDE 2000 si trova in: C:\Programmi\Microsoft SQL Server\80\Tools\Binn; se avete installato MSDE 7.0 dovrebbe essere impostato su: C:\MSSQL7\Tools\Binn.La sintassi per chiamare un comando SQL usando OSQL è la seguente:
osql -S Localhost -U SA -P as -i createosql.sqlI parametri sopra usati sono:
- S Nomeserver
- U Username
- P Password
- i Inputfile
Ricordo che sono Case Sensitive.
Il file di input da noi usato createosql.sql è un file di testo contenente il comando da eseguire che è leggermente diverso da quello sopra descritto, riporto la sintassi per il crea database:USE MASTER GO CREATE DATABASE MUSICBOX ON PRIMARY ( NAME = MUSICBOXDAT , FILENAME = 'C:\SQL.DIR\DATA\MUSICBOXDAT.MDF' , SIZE = 5MB , MAXSIZE = 20MB , FILEGROWTH = 20% ) LOG ON ( NAME = MUSICBOXLOG , FILENAME = 'C:\SQL.DIR\DATA\MUSICBOXLOG.LDF' , SIZE = 2MB , MAXSIZE = 8MB , FILEGROWTH = 20% ) GO QUITIl comando USE MASTER serve a dire al server che dobbiamo lavorare sul Database Master (Il Database di sistema che contiene al suo interno la definizione di tutti i Database che sono stati creati sul Server); il comando GO deve essere eseguito perché CREATE DATABASE deve essere la prima istruzione di un blocco SQL; il secondo comando GO dice al server di eseguire il CREATE; il comando QUIT esce da OSQL.EXE che altrimenti si comporta come un interprete di comandi e rimane attivo all'interno della finestra console.
La sintassi da usare con OSQL per eliminare il database è la seguente:
USE MASTER GO DROP DATABASE MUSICBOX GO QUIT
<<< Introduzione