migrazione mysql 2000 by 26Nb3u

VIEWS: 14 PAGES: 23

									Migrazione da MySQL a Microsoft SQL Server 2000
Abstract


Questo white paper illustra le funzionalità di migrazione di Microsoft SQL Server 2000 e include specifiche informazioni utili agli
sviluppatori per la migrazione di un database MySQL a SQL Server 2000.




Introduzione

Questa guida spiega come eseguire la migrazione da MySQL a Microsoft® SQL Server™ 2000 utilizzando numerosi strumenti e
utilità inclusi in SQL Server. Comprende inoltre istruzioni su come modificare le applicazioni MySQL per l'utilizzo con SQL
Server 2000. L'investimento in applicazioni MySQL potrà dare ottimi frutti aggiungendo le funzionalità avanzate di SQL Server
2000 all'architettura di tali applicazioni.


Destinatari

I destinatari di questo white paper non devono essere necessariamente esperti di SQL Server e del relativo funzionamento ma
devono avere una conoscenza consolidata del sistema di gestione di database (DBMS, Database Management System) MySQL
e dei concetti generali relativi ai database. In particolare questo documento è rivolto a coloro che:


          Hanno una conoscenza generale della gestione dei database.
          Hanno una conoscenza approfondita delle nozioni fondamentali del sistema di gestione di database MySQL.
          Sono esperti nell'utilizzo del linguaggio MySQL.
          Appartengono al ruolo predefinito sysadmin del server. Il ruolo sysadmin ha il controllo completo del server. Per
           ulteriori informazioni sull'accesso a SQL Server, vedere la sezione relativa agli account di accesso nella
           documentazione in linea di SQL Server 2000.


Per chiarezza e semplicità di presentazione, la piattaforma applicativa e di sviluppo di riferimento è rappresentata dal sistema
operativo Microsoft Windows® 2000 e da SQL Server 2000. Con MySQL viene utilizzato il driver ODBC MySQL e la piattaforma
Red Hat Linux 7.1 con MySQL 3.23.37.


Cenni preliminari

MySQL è un sistema di gestione di database open-source. Utilizza l'architettura client/server e rappresenta un server di
database multiutente e multithreaded. MySQL è un linguaggio progettato in funzione della velocità delle operazioni, pertanto
non offre molte delle funzionalità fornite dai sistemi di database relazionali più diffusi quali le sottoquery, le chiavi esterne,
l'integrità referenziale, le stored procedure, i trigger e le viste. Include inoltre un sistema di blocco non adatto alle tabelle che
sono sottoposte a molte operazioni di scrittura simultanee da parte di utenti diversi. Infine, non dispone di materiale di
riferimento sufficiente a supportare applicazioni e strumenti software esterni.


SQL Server 2000 è un sistema completo di gestione di database relazionali (RDBMS, Relational Database Management
System) che include inoltre funzionalità integrate di analisi per OLAP e data mining. SQL Server 2000 soddisfa i requisiti più
esigenti per l’archiviazione dei dati e per la loro analisi richiesti dai maggiori sistemi di elaborazione aziendali e dai siti Web
commerciali. Allo stesso tempo è in grado di offrire servizi di archiviazione dei dati facili da utilizzare anche per piccole aziende
o per i singoli.


L'architettura di Microsoft SQL Server supporta funzionalità server avanzate quali il blocco a livello di riga, l'ottimizzazione
avanzata delle query, la replica dei dati, la gestione di database distribuiti e i servizi di analisi. Transact-SQL (T-SQL) è la
variante del linguaggio SQL supportata da SQL Server 2000.


Questo capitolo descrive solo alcune delle funzionalità dell'architettura di SQL Server 2000. La documentazione in linea di SQL
Server 2000 è una fonte preziosa di informazioni e viene installata insieme all'applicazione. Per utilizzarla, aprire il gruppo di
programmi Microsoft SQL Server e fare clic su Documentazione in linea.


Processo di migrazione

Questo capitolo presenta il processo di migrazione delineando l'architettura sia di MySQL che di Microsoft SQL Server 2000.
Sono trattati gli argomenti seguenti:


          Preparazione della migrazione
          Tipi di dati, parole riservate e operatori
          Strumenti MySQL per la migrazione dei dati
         Strumenti Microsoft SQL Server per la migrazione dei dati
         Migrazione diretta: Data Transformation Services (DTS)
         Utilizzo delle funzionalità di caricamento dei dati: Query Analyzer
         Estensione dell'applicazione
         Risoluzione dei problemi


Preparazione della migrazione

Per una perfetta riuscita della migrazione è molto importante pianificare le operazioni. Prima di iniziare la transizione,
esaminare lo schema del database MySQL che si intende migrare. Confrontare i tipi di dati MySQL con quelli SQL Server 2000
annotando le differenze. La sezione "Confronto tra MySQL e Microsoft SQL Server" di questo documento include le tabelle dei
tipi di dati confrontabili. Tenere presente che alcuni oggetti del database MySQL possono essere in conflitto con le parole
riservate di SQL Server 2000. Queste parole sono incluse nella sezione seguente. È opportuno eseguire il backup e copiare i
file del database MySQL prima di utilizzare lo strumento DTS per eseguire la migrazione a SQL Server 2000.


Tipi di dati, parole riservate e operatori

Questa sezione descrive i tipi di dati utilizzati in SQL Server 2000. Per facilitare la migrazione, è disponibile una tabella in cui
sono messi a confronto i tipi di dati MySQL con quelli SQL Server 2000. È riportato inoltre un elenco delle parole riservate in
Microsoft SQL Server. Sono incluse informazioni relative a:


         Tipi di dati supportati da SQL Server
         Confronto tra MySQL e SQL Server 2000
         Parole riservate di SQL Server


Tipi di dati supportati da SQL Server


Tipo di dati                    Descrizione

BIGINT                          Dati costituiti da numeri interi compresi tra -2^63 (-
                                9.223.372.036.854.775.808) e 2^63-1 (9.223.372.036.854.775.807).

INT                             Dati costituiti da numeri interi compresi tra -2^31 (-2.147.483.648) e
                                2^31 - 1 (2.147.483.647).

SMALLINT                        Dati costituiti da numeri interi compresi tra 2^15 (-32.768) e 2^15 - 1
                                (32.767).

TINYINT                         Dati costituiti da numeri interi compresi tra 0 e 255.

BIT                             Dati costituiti da numeri interi con valore 1 o 0.

DECIMAL                         Dati numerici con scala e precisione fisse, compresi tra -10^38 +1 e
                                10^38 –1.

NUMERIC                         Funzionalità equivalente a DECIMAL.

MONEY                           Valori di dati monetari compresi tra -2^63 (-922.337.203.685.477,5808)
                                e 2^63 - 1 (+922.337.203.685.477,5807), con precisione di un
                                decimillesimo di unità monetaria.

SMALLMONEY                      Valori di dati monetari compresi tra –214.748,3648 e +214.748,3647,
                                con precisione di un decimillesimo di unità monetaria.

FLOAT                           Dati numerici con precisione mobile compresi tra –1,79E + 308 e 1,79E +
                                308.

REAL                            Dati numerici con precisione mobile compresi tra –3,40E + 38 e 3,40E +
                                38.

DATETIME                        Dati per data e ora compresi tra il 1° gennaio 1753 e il 31 dicembre
                                9999, con una precisione di tre centesimi di secondo o 3,33 millisecondi.

SMALLDATETIME                   Dati per data e ora compresi tra il 1° gennaio 1900 e il 6 giugno 2079,
                                con una precisione di un minuto.
CHAR                            Dati per caratteri non Unicode con lunghezza fissa di massimo 8.000
                                caratteri.

VARCHAR                         Dati non Unicode con lunghezza variabile di massimo 8.000 caratteri.

TEXT                            Dati non Unicode con lunghezza variabile di massimo 2^31 - 1
                                (2.147.483.647) caratteri.

NCHAR                           Dati Unicode con lunghezza fissa di massimo 4.000 caratteri.

NVARCHAR                        Dati Unicode con lunghezza variabile di massimo 4.000 caratteri.
                                sysname è un tipo di dati definito dall'utente e fornito dal sistema che
                                equivale funzionalmente a nvarchar(128) ed è utilizzato come
                                riferimento per i nomi degli oggetti del database.

NTEXT                           Dati Unicode con lunghezza variabile di massimo 2^30 - 1
                                (1.073.741.823) caratteri.

BINARY                          Dati binari con lunghezza fissa di massimo 8.000 byte.

VARBINARY                       Dati binari con lunghezza variabile di massimo 8.000 byte.

IMAGE                           Dati binari con lunghezza variabile di massimo 2^31 - 1 (2.147.483.647)
                                byte.

CURSOR                          Riferimento a un cursore.

SQL_VARIANT                     Tipo di dati che memorizza i valori di vari tipi di dati supportati da SQL
                                Server tranne text, ntext, timestamp e sql_variant.

TABLE                           Tipo speciale di dati utilizzato per memorizzare un insieme di risultati per
                                successive elaborazioni.

TIMESTAMP                       Numero univoco in tutto il database che viene aggiornato ogni volta che
                                viene aggiornata una riga.

UNIQUEIDENTIFIER                Identificatore univoco globale (GUID, Globally Unique IDentifier).


Per ulteriori informazioni, vedere la sezione relativa ai tipi di dati nella Documentazione in linea di SQL Server 2000.


Confronto tra MySQL e SQL Server 2000


Le tabelle seguenti mettono a confronto i tipi di dati MySQL con quelli SQL Server 2000. Per alcuni tipi di dati MySQL esistono
più alternative SQL Server. Sono incluse informazioni relative a:


         Tipi numerici
         Tipi per data e ora
         Tipi stringa


Legenda


D: si applica ai tipi a virgola mobile e indica il numero di cifre dopo il separatore decimale. Il valore massimo è 30 ma non
dovrebbe superare M-2.


L: la lunghezza effettiva dei valori di colonna.


M: indica la dimensione massima di visualizzazione. Il valore massimo è 255.


Tipi numerici


MySQL                                   Dimensione                             SQL Server 2000

TINYINT                                 1 byte                                 TINYINT

SMALLINT                                2 byte                                 SMALLINT
MEDIUMINT                    3 byte

INT                          4 byte                           INT

INTEGER                      4 byte                           INT

BIGINT                       8 byte                           BIGINT

FLOAT(X<=24)                 4 byte                           FLOAT(0)

FLOAT(25<=X<=53)             8 byte                           FLOAT(25)

DOUBLE                       8 byte                           FLOAT(25)

DOUBLE PRECISION             8 byte                           FLOAT(53)

REAL                         8 byte                           REAL

DECIMAL                      M byte (D+2, se M<D)             DECIMAL

NUMERIC                      M byte (D+2, se M<D)             NUMERIC


Tipi per data e ora


MySQL                        Dimensione                       SQL Server 2000

DATE                         3 byte                           SMALLDATETIME

DATETIME                     8 byte                           DATETIME

TIMESTAMP                    4 byte                           TIMESTAMP

TIME                         3 byte                           SMALLDATETIME

YEAR                         1 byte                           SMALLDATETIME


Tipi stringa


MySQL                       Dimensione                        SQL Server 2000

CHAR(m)                     M byte, 1<=M<=255                 CHAR

VARCHAR(m)                  L+1 byte dove L<=M e              VARCHAR
                            1<=M<=255

TINYBLOB                    L + 1 byte dove L<2^8             BINARY

BLOB                        L + 2 byte dove L<2^16            VARBINARY

TEXT                        L + 2 byte dove L<2^16            TEXT

MEDIUMBLOB                  L + 3 byte dove L<2^24            IMAGE

MEDIUMTEXT                  L + 3 byte dove L<2^24            TEXT

LONGBLOB                    L + 4 byte dove L<2^32            IMAGE

LONGTEXT                    L + 4 byte dove L<2^32            TEXT

ENUM (VALORE1, VALORE2,     1 o 2 byte, a seconda del         Nessun tipo di dati disponibile.
…)                          numero di valori di ENUM (al      Comunque tale funzionalità è
                            massimo, 65535 valori).           fornita dall’istruzione CHECK
                                                              constraint *.

SET (VALORE1, VALORE2, …)   1, 2, 3, 4 o 8 byte, a seconda
                            del numero massimo di valori di
                            SET.
* CHECK constraint garantisce l'integrità dei dati limitando i valori accettati in un campo. Per ulteriori informazioni vedere la
sezione relativa all’opzione CHECK nella Documentazione in linea.


Parole riservate di Microsoft SQL Server 2000


ADD                                   EXCEPT                                  PERCENT

ALL                                   EXEC                                    PLAN

ALTER                                 EXECUTE                                 PRECISION

AND                                   EXISTS                                  PRIMARY

ANY                                   EXIT                                    PRINT

AS                                    FETCH                                   PROC

ASC                                   FILE                                    PROCEDURE

AUTHORIZATION                         FILLFACTOR                              PUBLIC

BACKUP                                FOR                                     RAISERROR

BEGIN                                 FOREIGN                                 READ

BETWEEN                               FREETEXT                                READTEXT

BREAK                                 FREETEXTTABLE                           RECONFIGURE

BROWSE                                FROM                                    REFERENCES

BULK                                  FULL                                    REPLICATION

BY                                    FUNCTION                                RESTORE

CASCADE                               GOTO                                    RESTRICT

CASE                                  GRANT                                   RETURN

CHECK                                 GROUP                                   REVOKE

CHECKPOINT                            HAVING                                  RIGHT

CLOSE                                 HOLDLOCK                                ROLLBACK

CLUSTERED                             IDENTITY                                ROWCOUNT

COALESCE                              IDENTITY_INSERT                         ROWGUIDCOL

COLLATE                               IDENTITYCOL                             RULE

COLUMN                                IF                                      SAVE

COMMIT                                IN                                      SCHEMA

COMPUTE                               INDEX                                   SELECT

CONSTRAINT                            INNER                                   SESSION_USER

CONTAINS                              INSERT                                  SET

CONTAINSTABLE                         INTERSECT                               SETUSER

CONTINUE                              INTO                                    SHUTDOWN

CONVERT                               IS                                      SOME

CREATE                                JOIN                                    STATISTICS

CROSS                                 KEY                                     SYSTEM_USER

CURRENT                               KILL                                    TABLE
CURRENT_DATE                          LEFT                                    TEXTSIZE

CURRENT_TIME                          LIKE                                    THEN

CURRENT_TIMESTAMP                     LINENO                                  TO

CURRENT_USER                          LOAD                                    TOP

CURSOR                                NATIONAL                                TRAN

DATABASE                              NOCHECK                                 TRANSACTION

DBCC                                  NONCLUSTERED                            TRIGGER

DEALLOCATE                            NOT                                     TRUNCATE

DECLARE                               NULL                                    TSEQUAL

DEFAULT                               NULLIF                                  UNION

DELETE                                OF                                      UNIQUE

DENY                                  OFF                                     UPDATE

DESC                                  OFFSETS                                 UPDATETEXT

DISK                                  ON                                      USE

DISTINCT                              OPEN                                    USER

DISTRIBUTED                           OPENDATASOURCE                          VALUES

DOUBLE                                OPENQUERY                               VARYING

DROP                                  OPENROWSET                              VIEW

DUMMY                                 OPENXML                                 WAITFOR

DUMP                                  OPTION                                  WHEN

ELSE                                  OR                                      WHERE

END                                   ORDER                                   WHILE

ERRLVL                                OUTER                                   WITH

ESCAPE                                OVER                                    WRITETEXT


Strumenti MySQL per la migrazione dei dati

MySQL fornisce numerosi strumenti e utilità client per la migrazione dei dati. Quelli utilizzati più frequentemente sono:


        mysql: un client interattivo che consente di interrogare i database e visualizzarne i risultati.
        mysqldump: uno strumento che consente di estrarre lo schema e i dati da un database MySQL e di inserirli in un file.
        mysqlimport: uno strumento che consente di leggere lo schema e i dati da un file e inserirli in un database MySQL.
        mysqladmin: uno strumento che consente di eseguire attività amministrative quali la creazione e l'eliminazione di
         database.
        myODBC: un programma software ODBC (Open DataBase Connectivity) a 32 bit che fornisce il driver ODBC di livello
         0 (con funzionalità di livello 1 e livello 2) per connettere a MySQL applicazioni compatibili ODBC.


Strumenti Microsoft SQL Server per la migrazione dei dati

SQL Server dispone di una vasta gamma di strumenti e utilità che agevolano la migrazione da MySQL. Data Transformation
Services (DTS) di SQL Server 2000 raggruppa strumenti grafici e oggetti programmabili per l'estrazione, la trasformazione e il
consolidamento dei dati provenienti da varie fonti in una o più destinazioni diverse.


Funzionalità dello strumento DTS
Lo strumento DTS di Microsoft SQL Server 2000 consente di migrare dati da diverse fonti e in molti modi. DTS è disponibile
sotto forma di procedure guidate o può essere attivato utilizzando la funzionalità di progettazione di pacchetti DTS. Le
procedure guidate di DTS eseguono velocemente la copia dei dati. La funzionalità di progettazione dei pacchetti DTS consente
agli sviluppatori di scrivere script di trasformazione personalizzati utilizzando diversi linguaggi di programmazione. DTS
consente di:


        Migrare i dati da MySQL a SQL Server 2000
        Visualizzare la rappresentazione dei dati prima della migrazione
        Migrare tabelle e tipi di dati, ad esempio TEXT e DATE
        Migrare database MySQL con tabelle MySQL
        Generare e visualizzare un report della migrazione
        Personalizzare le tabelle e le regole predefinite per il mapping dei tipi di dati
        Risolvere i conflitti come, ad esempio, nel caso delle parole riservate SQL Server
        Eliminare e rinominare gli oggetti contenuti nel modello di schema di SQL Server
        Migrare i dati di singole tabelle


Glossario dei termini relativi a DTS

I termini seguenti sono utilizzati per descrivere lo strumento DTS:


Pacchetto DTS: raccolta organizzata di connessioni, attività DTS, trasformazioni DTS e vincoli per i flussi di lavoro che possono
essere raggruppati graficamente in Progettazione DTS o in modo programmatico.


Attività DTS: insieme distinto di funzionalità, eseguite come singolo passaggio in un pacchetto. Ogni attività definisce un
elemento del flusso di lavoro che deve essere eseguito come parte dello spostamento e della trasformazione dei dati o come
processo da eseguire.


Trasformazione DTS: una o più funzioni o operazioni eseguite su un dato prima che arrivi alla destinazione.


Flusso di lavoro del pacchetto DTS: consente di ordinare gli elementi del flusso di lavoro in un pacchetto DTS mediante i
passaggi e i vincoli di precedenza di DTS. Il flusso di lavoro di un pacchetto DTS può essere progettato graficamente
utilizzando Progettazione DTS oppure in modo programmatico.


Metadati: forniscono a DTS le funzionalità per salvare in Meta Data Services le informazioni sulla derivazione dei dati e i
metadati dei pacchetti e per creare collegamenti a questi tipi di informazioni. È possibile memorizzare i metadati del catalogo
per i database a cui un pacchetto fa riferimento e le informazioni sulla cronologia di una particolare riga di dati per il proprio
data mart o data warehouse.


Migrazione diretta

L'opzione più diretta per migrare i dati da MySQL a Microsoft SQL Server è installare il supporto myODBC e creare un
pacchetto DTS per importare e creare database da MySQL a Microsoft SQL Server.


Di seguito viene riportata una procedura per configurare Microsoft SQL Server al fine di migrare il database MySQL.


    1.   Installare il supporto MyODBC, disponibile all'indirizzo http://www.mysql.com/
    2.   Durante l'installazione viene visualizzata la finestra di dialogo seguente:
     Configurare le impostazioni ODBC utilizzando le informazioni seguenti:


     Windows DSN name:                            test

     Description:                                 Database di prova

     MySQL Database:                              test

     Server:                                      seawolf.microsoft.com

     User:                                        cgunn

     Password:                                    my_password

     Port:                                        3306


     Nel caso delle impostazioni precedenti, il nome specificato nel campo "Windows DSN name" deve essere univoco nel
     computer che esegue la connessione, l'impostazione relativa al server può essere un nome di dominio completo
     (assicurarsi che sia disponibile un sistema di risoluzione dei nomi, per esempio tramite DNS) oppure un indirizzo IP.


3.   Quindi eseguire l'Importazione/Esportazione guidata DTS. Dal gruppo di programmi Microsoft SQL Server selezionare
     Importazione ed esportazione dati. Verrà visualizzata la finestra di dialogo seguente.
     Fare clic su Avanti, quindi proseguire con il passaggio successivo.


4.   Fornire le informazioni necessarie sull'origine dei dati: queste informazioni devono essere MySQL come origine dei
     dati ODBC e test come DSN del sistema. Quindi, fornire le credenziali di accesso, il nome utente e la password
     mostrati nella successiva finestra di dialogo, infine fare clic su Avanti.




5.   Fornire i dettagli della connessione di destinazione, come mostrato nella finestra di dialogo seguente, quindi fare clic
     su Avanti.
6.   La finestra di dialogo Copia tabella o query consente di selezionare gli oggetti del database dall'origine, in questo
     caso MySQL. Selezionare Copia tabelle e viste dal database di origine. È opportuno rammentare che MySQL non
     supporta le viste pertanto, selezionando questa opzione, verranno copiati solo gli oggetti tabella, come mostrato di
     seguito. Fare clic su Avanti per continuare.




7.   Verrà visualizzata la finestra di dialogo Seleziona tabelle e viste di origine, in cui è possibile selezionare le tabelle
     di origine e quelle di destinazione.
8.   Fare clic sul pulsante con i trattini per eseguire la trasformazione dei dati, come mostrato nella finestra di dialogo
     seguente Mapping e trasformazioni di colonna.




     In questa finestra di dialogo vengono abbinati i tipi di dati di origine e di destinazione e vengono selezionati i campi
     di dati Null. Al termine, fare clic su OK.


     Verrà visualizzata la finestra di dialogo Salva, pianifica e replica pacchetto, che consente di pianificare la
     migrazione fuori degli orari di punta e di salvare il pacchetto DTS in percorsi e formati diversi.
9.   La finestra di dialogo Salva pacchetto DTS fornisce due tipi di password per il pacchetto DTS. La prima password è
     quella del proprietario e consente di proteggere tutte le informazioni sugli utenti e sulle password incluse nel
     pacchetto, mentre la password dell'utente consente di eseguire il pacchetto e impedisce qualsiasi esecuzione non
     autorizzata, come mostrato di seguito. Fare clic su Avanti per continuare.




10. Infine, la finestra di dialogo Completamento della Importazione/Esportazione guidata DTS riepiloga le opzioni
    selezionate nella procedura guidata.
         Fare clic su Fine per iniziare la migrazione dei dati.


    11. La finestra di dialogo Esecuzione pacchetto visualizza lo stato di ogni attività mentre viene eseguita. Un segno di
        spunta verde indica il completamento di un'attività. Se l'esecuzione di un'attività non riesce e l'errore interrompe il
        processo, verrà visualizzata una finestra che riporta le informazioni sull'errore.




A questo punto è stata completata la migrazione dei dati da MySQL a SQL Server 2000.


Caricamento dei dati

È possibile utilizzare mysqldump, un programma client fornito con il server MySQL, per trasferire lo schema e i dati di un
database MySQL in un file sql/txt in vari formati. Lo strumento DTS può utilizzare i file di output di mysqldump per consentire
il caricamento indiretto dei dati, opzione utile soprattutto per tabelle di grandi dimensioni. Gli argomenti seguenti descrivono il
processo di caricamento dei dati:
         Generazione di script mysqldump per l'estrazione dei dati
         Impostazione degli script per il trasferimento
         Utilizzo degli script estratti


Generazione di script mysqldump per l'estrazione dei dati

MySQL dispone di un'utilità per eseguire il “dump” di un database (cioè una copia completa del database) o di un insieme di
database al fine di eseguirne il backup o trasferire i dati in SQL Server.


L'utilità mysqldump consente di creare script SQL di un database.


La sintassi di base per mysqldump è:


Shell> mysqldump [OPZIONI] database [tabelle]


Le informazioni sulle opzioni disponibili per mysqldump sono illustrate più avanti in questo white paper. In alternativa è
possibile consultare il manuale di riferimento di MySql.


Dopo aver utilizzato mysqldump, si ottiene uno script SQL del database.


Impostazione degli script per il trasferimento


Dopo aver generato gli script con mysqldump è possibile trasferire gli script dall'host MySQL al computer SQL Server 2000,
utilizzando un'applicazione che permetta la copia di file in rete, ad esempio un’applicazione File Transfer Protocol (FTP).


Utilizzo degli script estratti con SQL Query Analyzer


Gli script generati possono a questo punto essere utilizzati per creare gli oggetti del database e inserirvi i dati. Il metodo
migliore per costruire uno schema di database dagli script MySQL consiste nell'utilizzare lo strumento SQL Query Analyzer
incluso in SQL Server 2000.


È possibile eseguire SQL Query Analyzer direttamente dal menu Start o da SQL Server Enterprise Manager. È possibile
eseguire SQL Query Analyzer anche dal prompt dei comandi eseguendo l'utilità isqlw.


Affinché lo script venga eseguito correttamente è necessario compiere altre operazioni che implicano determinate modifiche
alle istruzioni SQL. Ricordarsi inoltre di scorrere lo script SQL e modificare i tipi di dati in quelli compatibili con SQL Server. Il
diagramma seguente mostra uno script importato da mysqldump. Si noti che il “dump” è un file di script in formato ASCII.
SQL Query Analyzer di Microsoft SQL Server 2000 consente di:


        Creare query e altri script SQL nonché di eseguirli per i database SQL Server
        Creare velocemente gli oggetti di database più utilizzati tramite script predefiniti
        Copiare velocemente gli oggetti di database esistenti
        Eseguire stored procedure senza dover conoscere i parametri
        Eseguire il debug delle stored procedure
        Eseguire il debug dei problemi relativi alle prestazioni delle query
        Individuare o visualizzare gli oggetti nei database e lavorarvi
        Inserire, aggiornare o eliminare velocemente le righe di una tabella
        Creare scelte rapide da tastiera per le query più frequenti
        Aggiungere i comandi più frequenti al menu Strumenti


Estensione dell'applicazione

Dopo aver spostato la gestione dei dati dell'applicazione MySQL in Microsoft SQL Server, è possibile utilizzare SQL Server per
proteggere i dati e mantenere interamente l'integrità referenziale e le regole aziendali codificate in Transact-SQL.


Le interfacce API del database, quali ADO, OLE DB e ODBC, consentono di utilizzare diversi linguaggi di programmazione per il
database. È possibile accedere a tali API con sistemi di sviluppo quali Microsoft Visual C++, Microsoft Visual Basic o Microsoft
Visual J++.


Inoltre, se l'applicazione si espande, è possibile spostare Microsoft SQL Server in computer più grandi senza modificare
l'applicazione. SQL Server riconosce automaticamente le configurazioni hardware ed esegue un'ottimizzazione automatica per
consentire l'utilizzo migliore della memoria, dell'I/O e del processore.


Accesso ai dati da Internet

SQL Server permette di interfacciare l'applicazione con il Web. Questa capacità consente di accedere all'applicazione da
qualsiasi luogo e in qualsiasi momento. SQL Server può essere integrato con Microsoft Internet Information Services (IIS),
utilizzando il server Web IIS e ActiveX Data Objects (ADO) nelle pagine ASP (Active Server Pages), al fine di offrire
un'interfaccia utente veloce ed efficace per i dati memorizzati in SQL Server.


Per ulteriori informazioni, visitare l'indirizzo http://www.msdn.microsoft.com


Sicurezza

La sicurezza di SQL Server 2000 è estremamente solida pur rimanendo semplice da gestire. La sicurezza sia di SQL Server che
di MySQL può essere concettualmente divisa in due livelli: 1) accesso al server e 2) accesso ai singoli database.


MySQL protegge l'accesso al server in modo univoco, ovvero limitando l'accesso all'origine, nel caso del client, per mezzo
dell'indirizzo IP o del nome di dominio completo e di caratteri jolly come '%'. SQL Server richiede l'utilizzo degli account
utente, gestiti dal sistema operativo o memorizzati nel database master SQL Server.


SQL Server consente l'accesso di gruppo mediante l'utilizzo di ruoli. La gestione di un database risulta facilitata se si stabilisce
un accesso comune per un gruppo di utenti.


La procedura seguente delinea la modalità con cui Microsoft SQL permette l'accesso a un server e al database mediante lo
strumento Enterprise Manager.


    1.   Aprire Enterprise Manager, espandere la cartella Protezione, selezionare l'icona Account di accesso, fare clic con il
         pulsante destro del mouse e selezionare Nuovo account di accesso.
     Verrà visualizzata la finestra di dialogo Proprietà account di accesso SQL Server. Immettere un nome di account
     di accesso (è simile al nome utente in MySQL). Scegliere Autenticazione di SQL Server per fornire un livello di
     sicurezza convalidato in SQL Server.


2.   Specificare il database e il linguaggio predefiniti.
3.   Selezionare la scheda Ruoli del server nella parte superiore della finestra di dialogo per concedere l'accesso alle
     autorizzazioni per il server. Il ruolo evidenziato in questa scheda è sysadmin (System Administrators), che equivale
     all'accesso principale (root) in MySQL.




4.   La scheda successiva è Accesso database. Questa pagina delle proprietà consente di fornire le impostazioni per
     l’accesso a tutti i database che risiedono fisicamente in SQL Server. Selezionando un database, è possibile impostare
     un ruolo specifico per l’accesso al database stesso. Per impostazione predefinita, tutti gli utenti hanno accesso al
     ruolo Public. A questo ruolo devono poi essere assegnate le autorizzazioni. Un altro ruolo selezionato in questo
     diagramma è db_owner, che consente all'utente di avere accesso illimitato solo al database selezionato e non a tutti
     i componenti di SQL Server o ad altri database, a meno che questi non vengano selezionati singolarmente e venga
     assegnata l'autorizzazione db_owner.
    5.   Dopo aver fatto clic su OK, verrà chiesta la password.




Il nuovo account di accesso sarà visibile in Enterprise Manager. Si noterà inoltre che nel diagramma è presente un account di
accesso chiamato 'sa'. Questo è l’account di amministrazione del sistema e dovrebbe avere una password. Durante
l'installazione di SQL Server, in realtà, è possibile scegliere di lasciare una password vuota per questo account di accesso,
tuttavia è sempre una prassi altamente consigliabile quella di inserire una password per ogni amministratore.
Per ulteriori informazioni sulla creazione di account di accesso a Microsoft SQL Server, vedere la sezione relativa alla gestione
della protezione nella Documentazione in linea di SQL Server.


Autorizzazioni per il database

SQL Server 2000 consente di proteggere un database limitando l'accesso alle autorizzazioni per le istruzioni del linguaggio DDL
(Data Definition Language) e del linguaggio DML (Data Manipulation Language). La procedura è simile alla creazione di un
account di accesso. È possibile impostare facilmente le autorizzazioni per un database SQL Server utilizzando lo strumento
Enterprise Manager.


Autorizzazioni DML


    1.   Aprire Enterprise Manager, espandere la cartella dei database e selezionare il database per il quale devono essere
         impostate le autorizzazioni. Selezionare l'icona degli utenti e quindi selezionare l'utente del database, fare clic con il
         pulsante destro del mouse e selezionare Proprietà.
    2.   Fare clic sul pulsante Autorizzazioni.




    3.   La finestra Autorizzazioni consente di impostare le istruzioni DML per tutti gli oggetti del database, quali tabelle, viste
         e stored procedure. Dopo aver selezionato le autorizzazioni, fare clic su OK.




Autorizzazioni DDL


    1.   Per consentire l'accesso al database mediante istruzioni DDL, è necessario selezionare le proprietà del database.
         Selezionare l'icona del database, quindi fare clic con il pulsante destro del mouse. Selezionare Proprietà.
    2.   Quindi selezionare la scheda Autorizzazioni nella finestra delle proprietà del database.




    3.   Dopo aver selezionato le autorizzazioni appropriate, fare clic su OK.


Risoluzione dei problemi

Questo capitolo include soluzioni per i problemi e informazioni su:


        Definizione dell'account utente
        Esecuzione del “dump” dei dati MySQL
        Ottimizzazione delle opzioni della riga di comando


Definizione dell'account utente
Dopo aver installato il server MySQL nel sistema, per impostazione predefinita viene configurato un utente principale (root)
ovvero un account utente con tutti i privilegi DBA. È necessario accedere al server MySQL mediante ODBC utilizzando l'utente
principale. Nota: per impostazione predefinita, l'utente principale può accedere solo all'host locale. Ricordarsi di autorizzare
l'utente principale ad accedere dall'indirizzo IP o DNS del computer in cui è in esecuzione la procedura guidata di DTS.


Esecuzione del “dump” dei dati MySQL


La tabella seguente spiega la sintassi utilizzata per eseguire il “dump” dei dati MySQL e rigenerare il database dal file di testo
di mysqldump.


Comando                          Descrizione

mysqldump                        Strumento che consente di estrarre lo schema e i dati da un database
                                 MySQL e inserirli in un file.

mysql                            Carica MySQL in modo da consentire l'esecuzione del comando.

-u nome utente                   Il nome dell'utente MySQL principale. Questo utente deve disporre di
                                 tutti i privilegi DBA.

-ppassword                       Password dell'utente principale del server del database MySQL.

--opt                            Ottimizza la velocità di esecuzione del “dump” delle tabelle e scrive un
                                 file di “dump” ottimizzato per poter essere caricato velocemente nel
                                 database di destinazione. Questa indicazione consente di utilizzare le
                                 opzioni –add-drop-table, --add-locks, --all, --extended-insert, --quick e
                                 –lock-tables. Per l'elenco delle opzioni consentite da --opt, vedere la
                                 sezione seguente Ottimizzazione delle opzioni della riga di comando.

nomedatabase                     Il nome del database contenente le informazioni di cui eseguire il dump
                                 in un file di testo di output.

<                                Simbolo utilizzato per reindirizzare l'input in UNIX e Windows NT/2000.

nomefile.sql                     Nome del file contenente MySQL.


Per eseguire il “dump” dei dati MySQL, utilizzare il comando seguente:


#> mysqldump –u nome utente –ppassword –opt nomedatabase > nomefile.sql


Per ricreare il database dal file di testo di output di mysqldump, utilizzare il comando seguente:


#> mysql –u nome utente –ppassword nomedatabase < nomefile.sql


Ottimizzazione delle opzioni della riga di comando


È possibile attivare automaticamente le opzioni nella riga di comando di mysqldump utilizzando –opt. Per ulteriori informazioni
sull'esecuzione del “dump” dei dati MySQL, vedere la sezione Esecuzione del dump dei dati MySQL. La tabella seguente riporta
i comandi --opt:


Comando                                Descrizione

--add-drop-table                       Aggiunge un'istruzione DROP TABLE If EXISTS prima di ogni
                                       istruzione CREATE TABLE.

--all                                  Include tutte le opzioni specifiche di creazione di MySQL.

--extended-insert                      Scrive istruzioni multiple per l’inserimento delle righe.

--quick                                Esegue il “dump” direttamente nell'output standard senza
                                       memorizzare la query nel buffer. Se si sospende mysqldump
                                       mentre si sta utilizzando questa opzione, questa operazione
                                       potrebbe interferire con gli altri client in quanto potrebbe mettere
                                       il server in attesa.

--lock-tables                          Blocca tutte le tabelle in sola lettura.
Messaggi di errore MySQL

Questa sezione riporta i messaggi di errore che possono essere generati durante la migrazione del database MySQL a SQL
Server 2000.


Messaggi di errore

Utilizzando lo strumento DTS per migrare i dati, possono essere generati i messaggi di errore seguenti:


Messaggio di errore                            Soluzione

Cannot connect to MySQL Server                 Le cause dell'errore possono essere le seguenti:
<name>.                                         L'impostazione predefinita della porta di origine è 3306.
Is there a MySQL server running on the         Il numero della porta fa riferimento alla porta mediante la
system/port you are trying to connect          quale MySQL comunica. Se la porta è definita in modo
to?                                            diverso in MySQL, cambiare l'impostazione della porta in
                                               MySQL ODBC.
                                                Assicurarsi che l'utente disponga delle autorizzazioni
                                               DBA appropriate per accedere al server MySQL.
                                                Assicurarsi che il nome utente sia valido.

There is already an object named               La tabella viene creata durante l'esecuzione del pacchetto
'tablename' in the database                    DTS. Assicurarsi che la tabella venga eliminata o ricreata
                                               durante l'esecuzione del pacchetto.


Conclusione

Questo documento ha illustrato le nozioni di base necessarie per completare la migrazione dello schema e dei dati del
database da MySQL a Microsoft SQL Server 2000. SQL Server 2000 offre un elevato livello di affidabilità, scalabilità e
funzionalità a tutte le applicazioni.


Ulteriori informazioni

Sito Web Microsoft SQL Server


Sito Web Microsoft Developer Network (MSDN)


Sito Web Microsoft Universal Data Access


Sito Web MySQL

								
To top