13.3.2012 | Sakari Nahi

Eräs kaverini kysyi muutamaa viikkoa takaperin, että mikä on paras tapa migroida kanta SQL Azuresta paikalliselle serverille. Kerroin hänelle vastauksen, ja heitin asian silloin mielestäni.

Nyt viime viikolla päivitin läppäriini uutta SSD kovalevyä, ja vaikka hetkellisesti pohdinkin vanhan kovalevyn kloonaamista, niin päätin kuitenkin asentaa kaiken uudelleen. Tämä ei Kompozurella ole mikään iso vaiva hyvien asennus-materiaalien ja kaiken pilvessä olevan tietomme takia.

Kuitenkin, jossain kohtaa törmäsin siihen, että minun täytyi kopioida olemassa olevia tuotantokantoja SQL Azuresta lokaaliin kehitysympäristööni. Silloin kaverini kysymys palasi mieleeni, ja päätin blogata tästä.

Periaatteessa keksin neljä eri tapaa SQL Azuressa olevan tietokannan kopioinnille paikalliseen SQL Serveriin:

1) SQL Serverin SSIS (eli SQL Server Integration Services)

2) Komentorivityökalu bcp

3) Azure Data Sync

4) Ulkopuolisten tahojen sovellukset kuten Red Gaten SQL Azure Backup ja CodePlexissä oleva SQL Azure Migration Wizard

Yksittäisen kopion luomiseen pidän eniten SSIS:stä ja SQL Azure Migration Wizardista.

Ennen kuin teet muuta:

  • Mene Azure Management portaaliin ja tarkista, että sinun IP:stäsi on pääsy SQL Azureen (klikkaa kuvia nähdäksesi ne täyden kokoisina)

SQL Azuren palomuurin konfigurointi

Huomio: Jos laitat numeron Rule Name-kenttään, niin portaali heittää kryptisen virheen (esim. “Hima2″ rikkoo)

SQL Serverin SSIS

Tämä vaihtoehto on hyvä ja helppo, jos käytössäsi vain on SQL Management Studio.

1) Luo paikallisesti uusi tietokanta

2) Oikea klikkaa luotua kantaa ja valitse Tasks > Import Data…

3) Aseta “.Net Framework Data Provider for SqlServer” Data source-valikosta

4) Konfiguroi tämä data source: Password, User ID, Data Source (tämä on yksinkertaisesti SQL Azuren FQDN) ja Initial Catalog

SSIS Data Sourcen konfigurointi

5) Klikkaile “Next” kunnes pääset valikoimaan tauluja, ja täällä jätä kaikki sys.-taulut valikoimatta

Taulujen valinta SSIS:ssä

6) Valmis

Komentorivityökalu BCP

BCP (Bulk Copy Program) on hyvä omien skriptien luomiseen. Nykyään voit myös käyttää BCP:n queryout-parametria SQL Azuren kanssa (SQL Server 2008 R2 lähtien).

1) Komento: bcp tietokanta.schema.taulu out tiedosto -c -U käyttäjänimi@SQLAzureServeri -S tcp:serveri.database.windows.net -t “|”

BCP ja SQL Azure

Azure Data Sync

Azure Data Sync on hyvä jos synkronointia pitää tehdä useammin, tietyin väliajoin, tai jos tilanne on se, että halutaan synkronoida useampia kantoja SQL Azuresta useampaan paikalliseen kantaan.

1) Azure Management portaalissa Data Syncin alta valitse ensin “Provision Data Sync Server” (yksinkertaisesti valitse oikea alue eli region)

2) Valitse “Sync between On-Premise and SQL Azure Databases”

Azure Sync: Alku

3) Synkronoinnin konfigurointi

3.1) Aseta nimi (mitä vain)

3.2) Klikkaa “Add an On-Premise SQL Server”

3.2.1) Valitse “Add a new SQL Server”, ja “Bi-Directional”

Azure Sync: Paikallisen kannan konfigurointi

3.2.2) Lataa ja asenna uusi agentti paikalliseen koneeseesi: kun laitat agentille käyttäjäoikeuksia, niin muista laittaa ne muodossa domain\käyttäjä, sillä muuten asennus heittää kryptisen virheen.

3.2.3) Takaisin Azuren hallintaportaalissa määrittele agentin nimi (Specify Agent Name) ja generoi ja kopioi avain (Generate an Agent Key)

Azure Sync: Uuden agentin lataus

3.2.4) Käynnistä agentti paikallisessa koneessasi

3.2.5) Klikkaa “Submit Agent Key”, ja liitä kopioimasi avain ilmaantuvaan tekstilaatikkoon

3.2.6) Rekisteröi agenttiin paikallinen tietokantasi (testaa yhteys ennen tallennusta)

Azure Sync: paikallinen agentti-sovellus

3.2.7) Hallintaportaalissa valitse tietokanta ja paina “Finish”

Azure Sync: Valitse paikallinen kanta

3.3) Klikkaa “Add an SQL Azure database” (tulee samalla Hubiksi)

3.3.1) Kirjoita serverin ja tietokantojen nimet sekä käyttäjäoikeudet, ja paina “Test” ennenkuin painat “Add”

Azure Sync: Hub

3.4) Aseta synkronoinnin aikataulu ja konfliktien ratkomisen tapa (minun tapauksessani Hubin tiedot ylikirjoittavat paikalliset)

3.5) Määrittele synkronoitava data (Klikkaa “Select All” jos haluat synkata kaikki taulut, mutta muutoin on järkevää synkronoida vain tarvittava)

3.6) Klikkaa ylhäältä “Deploy”, ja synkronointi alkaa

Azure Sync: Synkronointi käynnissä

Huomio: Data Sync tekee ylimääräisiä tauluja kantaasi synkronointia varten

SQL Azure Backup by Red Gate

SQL Azure Backup on hyvä ja ilmainen ohjelma SQL Azuren ja Storagen kopiointiin. Tämä työkalu vaikuttaa vähän hitaammalta kuin muut.

1) Lataa osoitteesta http://www.red-gate.com/products/dba/sql-azure-backup/

2) Kirjoita vaaditut tiedot työkaluun, valitse tiedonsiirron suunta (backup vai restore), ja paina “Next” ja “Start Backup”

SQL Azure Backup

3) Odottele.. Ja valmis!

SQL Azure Backup: Valmis

SQL Azure Migration Wizard

Tämä työkalu on mahtava. Ja ilmainen.

1) Lataa osoitteesta http://sqlazuremw.codeplex.com/

2) Ensimmäisessä ruudussa valitse “Analyze / Migrate: SQL Database”

3) Konfiguroi lähde: Server Type = SQL Azure, ja kirjoita SQL Azure-kantasi tiedot (muista käyttäjänimi@serveri-syntaksi)

SQL Azure Migration Wizard: Lähdetiedot

4) Seuraavaksi pääset valitsemaan halutut taulut, ja sen jälkeen Wizardi kerääkin dataa (bcp:llä :) ). Tämä kestää hetken.

5) Sitten määritellään kohteen tiedot, eli paikallinen SQL Serverimme ja kanta (Wizardi tosin ehdottaa tässä SQL Azurea, älä välitä siitä)

SQL Azure Migration Wizard: Kohdetiedot

6) Aja skripti, ja kaikki on valmista

SQL Azure Migration Wizard: Lopputulos

Se oli siinä! Toivon, että tämä postaus antoi sinulle vaihtoehtoja omien SQL Azure-tietojesi siirtelyiden kanssa.