Wiki-Domande frequenti-SQL Server
D:Come importare nel database gli script SQL salvati?
R:
SQL Server Recovery Kit offre due modi per salvare i dati recuperati:
- Salvare su disco fisso gli script SQL che creano oggetti di database (tabelle, per esempio) e inseriscono dati in queste tabelle.
- Eseguire gli script in linguaggio SQL nei database indicati dall'utente.
Si prega di tenere presente, che gli script SQL possono essere diversi, nonostante siano basati sugli stessi file di database. Ciò avviene a causa delle peculiarità della sintassi sia delle query eseguite nel caso di connessione diretta al server tramite ADO che delle query SQL eseguite in ambiente Query Analyzer fornito insieme a MS SQL Server (l'uso di :, il comando Go, ecc.). Il primo modo è più sicuro, mentre il secondo è più comodo e flessibile.
Salvataggio dei dati su disco sotto forma di script
-
1. Mapping dei dati salvati
Quando si salvano i dati su disco, SQL Server Recovery Kit crea nella directory indicata dall'utente una sottodirectory intitolata in base al nome del file MDF sorgente. Gli script saranno salvati in questa sottodirectory. Il nome di ciascuno script è composto da una parola e una cifra. La parola indica la funzione dello script, la cifra è il numero d'ordine. Ci sono vari tipi di script, per esempio:
- Types*.sql - script per creare tipi di dati definiti dall'utente.
- Tables*.sql - script per creare tabelle.
- Indexes*.sql - script per creare chiavi primarie e indici.
- ForeignKeys*.sql - script per creare chiavi esterne.
- Procedure*.sql - script per creare procedure memorizzate.
- Function*.sql - script per creare funzioni definite dall'utente.
- View*.sql - script per creare viste.
- Triggers*.sql - script per creare trigger.
- Data*.sql - script per inserire dati nelle tabelle.
I numeri d'ordine nei nomi degli script non contengono alcuna informazione rilevante, né indicano la sequenza di esecuzione. Sono utilizzati per suddividere i dati e salvarli in una serie di documenti di dimensione ridotta anziché in un file di grandi dimensioni. È possibile specificare la dimensione massima dei file di script SQL. Inoltre, bisogna fare attenzione alla numerazione dei file Data. Innanzitutto, ciascun file di tipo Data può contenere dati solo per una tabella. I file con numeri di sequenza contengono tutti i dati per ciascuna tabella.
Nota: Se manca il numero nel nome di qualche file, vuol dire che la rispettiva tabella con contiene dati.
-
2. Ordine di esecuzione degli script
Nella seguente figura è possibile vedere l'ordine consigliato di esecuzione degli script:
La sequenza di esecuzione degli script dipende dalle restrizioni esistenti relative alle strutture e ai dati presenti nelle tabelle. Si prega di prestare particolare attenzione ai seguenti fattori:
- Per creare una chiave secondaria, bisogna specificare la rispettiva chiave primaria. Quindi, queste due operazioni vengono salvate in file separati che devono essere eseguiti in questo ordine.
- Le tabelle vengono riempite prima della creazione di indici e chiavi secondarie. È una condizione obbligatoria, perché quando si riempie una tabella con una chiave secondaria definita, viene effettuato il controllo dell'integrità referenziale. Se una tabella con una chiave secondaria viene riempita prima della tabella con la rispettiva chiave primaria, si verifica un errore. Inoltre, qui c'è un'altra particolarità. Nel caso i dati recuperati siano in conflitto con la chiave primaria, gli indici unici, ecc., i dati verranno comunque inseriti nella tabella, ma non verranno create le restrizioni (indice, chiave primaria, ecc.). Qualora sia richiesto un altro tipo di comportamento, la sequenza di esecuzione degli script potrà essere definita dall'utente.
- La creazione di oggetti come Procedure, Funzioni, Viste e Trigger in un database comporta alcune difficoltà, in quanto questi tipi di oggetti possono avere dipendenze molto complicate. Le Procedure si possono riferire ad altre Procedure, le Viste si possono riferire alle Funzioni, i Trigger si possono riferire a tutti gli oggetti. Il programma non può aiutare a sciogliere questo nodo. Quindi, l'utente dovrà stabilire manualmente tutti i riferimenti ed eseguire gli script SQL nella sequenza giusta. Inoltre, è possibile eseguire più volte tutti gli script del gruppo, fino a che non scompariranno tutti i messaggi di errore.
-
3. File install.bat
Il file install.bat viene creato per poter eseguire automaticamente tutti gli script. Questo file permette di eseguire tutti gli script salvati in precedenza dal programma. La sequenza di esecuzione degli script sarà uguale a quella del database. L'esecuzione di questo file batch richiede l'installazione dell'utility isqlw che fa parte del lato client di MS SQL Server. Per eseguire il file install.bat, bisogna specificare i seguenti parametri nella riga di comando: Server name (Nome server), Database name (Nome database), Username (Nome utente) e Password (Password). Per esempio: install.bat SQLServer SQLDatabase SQLUser SQLUserPassword
Attenzione:
- Usare spazi per separare i parametri. I parametri che contengono degli spazi all'interno del nome devono essere racchiusi tra doppie virgolette.
- Non si può cambiare l'ordine di sequenza dei parametri.
- Se di esegue il file install.bat senza parametri, verrà visualizzata una breve guida su come eseguire questo tipo di file batch.
-
4. InstallTrusted.bat
Se per accedere a Microsoft SQL Server impiegate l'account Windows, usate il file InstallTrusted.bat. Il file InstallTrusted.bat presenta 2 parametri: Server name, Database name.
Esempio d'uso: installtrusted.bat SQLServer SQLDatabase Dettagliate informazioni sull'accesso tramite l'account Windows qui: https://docs.microsoft.com/it-it/sql/relational-databases/security/authentication-access/principals-database-engine?view=sql-server-2017