Genel
SQL Database Downgrade İşlemi

SQL Database Downgrade İşlemi

Merhaba arkadaşlar,

Bugünkü konumuz SQL Server da alt versiyonlara database nasıl taşınır ondan bahsedip bir kaç kilit noktaya değineceğiz. Generate Script oluşturarak taşıma yapacağız ve kilit noktalara değineceğiz. Aslında işlem sorunsuz çalışmakta fakat DB boyutları belirli bir seviyenin üstünde olursa bu işlem sırasında DB çatlayabiliyor.

Şimdi biz Lab ortamı olarak SQL 2017 sürümünde çalışan bir db mizi daha düşük bir SQL versiyonuna taşıyacağız.

SQL server 2017 de Databasemize bakalım bi.

Görseldeki gibi bir db miz var bu DB de Table larımız dolu Foreign Key lerimiz İndex lerimiz var. Bildiğiniz içinde data olan canlı database aslında.

Biz hedef sistem olarak SQL 2012 e düşüreceğiz. Ve işlemlere başlıyoruz.

Database e Sağ tıklayıp Task’ın üzerine gelip Generate Scripts’ I seçiyoruz. Ve karşılama ekranı geliyor,

Klasik Next yapıp geçiyoruz.

Chose Object kısmında default ta “Script Entire Database and All database object” seçeneği işaretli geliyor.

Yani amcam diyor ki tüm veritabanını ögelerini vs alayım mı ? Biz işlemi böyle yapmayacağız.

İlk işimiz fazla yüklerden kurtulmak oluyor. Tabiki fazla yükleri siz belirleyecekseniz. Log a ihtiyacınız var mı yok mu lazım olduğunda mı dönülüp bakılıyor mu bunlar hep soru işareti.

Kendi database’nizde datayı alırken olmasada olur dediğiniz tabloları çıkarın. Aktarınca yeniden oluşturursunuz.

Log dışında herşeyi seçtikten sonra Next tuşumuza basarak bir adım daha atıyoruz.

Ve asıl işimizin olduğu yere geliyoruz. Burda şimdi bir çok ayarımız var ama bir sonra ki resimde göreceksiniz.

İlk olarak Output Type kısmında 2 seçeneğimiz var. “Save Scripts to a specific location” Script I kaydedip istediğin lokasyona at diyor amcamız.

Diğer seçenek “Publish to Web Service” Azure gibi bir cloud servisiniz varsa veya oluşturduğunuz script i bir web servis aracılığı ile taşımak istiyorsanız bu seçeneği kullanmanız gerekecek.

Biz ilkini seçiyoruz ve Advanced kısmına geliyoruz.

Bir sürü seçenek mevcut burada genelde biz super next yaparak geçtiğimiz için buraları atlarız.

Bizim burda dokunacağımız belirli başlı noktalar var onlardan kısaca bahsedelim;

Script For Server Version : Oluşturduğumuz Script nerede çalışacak ? yani database i taşıyacağımız hedef SQL server versiyonunu seçiyoruz. (Mevcut sürüm ve alt sürümleri vardır sadece).

Script For Database Engine Edition : Yine Hedef Serverın versionuna göre Standart ise standardı seçiyoruz.

En tatlı noktası

Types Of Data to Script : Bu kısımda 3 seçeneğimiz var;

Scheme Only : Database deki dataları almadan tüm şablonu yani tabloları kolonları boş bir şekilde almanızı sağlar. Default olarak Schema only gelir

Data Only : Buda üsttekinin tam tersi sadece data yı alır.

Scheme And Data : Üsttekilerin her ikisinin de birleşimi yani hacı ne var ne yoksa al scripte beni uğraştırma seçeneğidir.

NOT : Hepinizin aklına Schema and Data yattı diye düşünüyorum. Buradaki kilit noktamız da o aslında şöyle ki database boyutlarına bağlı olarak schema ile data yı aynı anda alabilirsiniz ama bizim bu test için kullandığımız database de ayrı ayrı olarak alacağız.

Script Foreign Key : Foreign key tablolarımız arasında olan ilişki için önemli olan bir obje ve bunuda schema ile birlikte almamız gerekirki tablo oluşurken ilişkileri de tanımlayabilsin.

Script İndexes : Tablolarda oluşturduğumuz indexlerin de script e eklenmesi diyebiliriz.

Script Primary Keys : Primary key lerde script e eklenmeli ki bunlar tablonun yapısını oluşturan temel parçalardan diyebiliriz. Bu yüzden default ta true gelir.

Bu ayarların tümü için Microsoft un kendi blogundaki açıklamalara bakabilirsiniz.

Şekildeki gibi yukarıda bahsedilen ayarlarımızı yaptık Server Version umuz 2012 olarak seçtik Foreign keylerimizi indexlerimizi schema ya dahil ettik ve diğer seçenekleri default ta bırakıyoruz.

Siz yukarıdaki linklerden detaylara bakarak ihtiyacınız olan ayarları bulabilirsiniz. Örneğin database deki compression ayarlarınızın aynı şekilde aktarılması gibi.

Ok dedik ve ilerledik.

Save to New Query Windows seçeneğini seçiyorum. Önce script i görüp öyle kaydedelim.

Ve next.

Yaptığımız ayarların bir özetini görüyoruz. Ve nextliyoruz.

Bu kısımda hata almamak mühim. Eğer bir tabloya store prosedüre hata verirse Script çöp olur.

Örnek olarak benim yaşadığım eğer şifrelenmiş bir store procedure varsa bütün Store Procedure lerde hata verecektir.

Sadece şifreli olan SP yi çıkarırsanız sorun düzelecektir.

Aşşa yukarı 12 bin satırlık bir Script imizi oluşturduk. Ve sol tarafta hedef sistem olan SQL 2012 mize bağlandık.

Direk CTRL + A CTRL + C yaparak kopyalayıp 2012 serverımızda bir query açıyoruz CTRL + V yapıyoruz.

Hemen F5 basayım demeyin hataları okuyup durursunuz. Bu script in çalışması için bir database olması gerekmektedir.

Hemen sağ tık new database diyip LORDSITH isimli bir database acıyoruz. Ve şimdi f5 e basıyoruz.

1 adet hata alıyoruz. Oda hedef sunucumda aynı linked server’ın tanımlı olmaması ile ilgili.(Lab ortamını tam kuramamışım demekki) Bunun dışında database in tüm schema sını taşımış bulunuyoruz.

Bu işlemden sonra 2017 sunucumuzdan aynı adımlarla Bir script daha oluşturuyoruz çünkü daha datalarımızı almadık.

Farklı olarak sadece options kısmından Data Only i seçerek oluşturuyoruz. ( O adımlar yukarıdan tekrar bakarak yapabilirsiniz ben sadece import sonucunu atacağım.)

NOT : Database’ in boyutuna bağlı olarak Memory ihtiyacınız olacaktır J

Eğer yeterli memory niz yoksa Save Single File seçeneği ile .sql uzantılı dosyayı hedef server’a atarak ilerleyin Zira datayı alırken çok sıkıntı yaşayabilir SSMS den trip atabilir J

Script çalıştığında satır satır işleyecek. Burada hata aldığınız zaman gerçekten çok sıkıntılı.

Ve bir tablodan Select çekiyoruz.

Mutlu son J İşinize yaraması dileğiyle.

Share this Story

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

The Hacker News

  • European Central Bank Shuts Down 'BIRD Portal' After Getting Hacked
    by [email protected] (Swati Khandelwal) on 16 Ağustos 2019 at 12:05

    The European Central Bank (ECB) confirmed Thursday that it had been hit by a cyberattack that involved attackers injecting malware into one of its websites and potentially stealing contact information of its newsletter subscribers. Headquartered in Germany, the European Central Bank (ECB) is the central bank of the 19 European Union countries which have adopted the euro and is itself […]

  • Patches for 2 Severe LibreOffice Flaws Bypassed — Update to Patch Again
    by [email protected] (Swati Khandelwal) on 16 Ağustos 2019 at 09:19

    If you are using LibreOffice, you need to update it once again. LibreOffice has released the latest version 6.2.6/6.3.0 of its open-source office software to address three new vulnerabilities that could allow attackers to bypass patches for two previously addressed vulnerabilities. LibreOffice is one of the most popular and open source alternatives to Microsoft Office suite and is availab […]

  • Bluetana App Quickly Detects Hidden Bluetooth Card Skimmers at Gas Pumps
    by [email protected] (Swati Khandelwal) on 16 Ağustos 2019 at 07:49

    In recent years, gas stations have become one of the favorite targets for thieves who are stealing customers' credit and debit card information by installing a Bluetooth-enabled payment card skimmers at gas stations across the nation. The media has also reported several recent crimes surrounding credit card skimmers, including: Gas pump skimmer found at a 7-Eleven in Pinellas County Credit […]

  • New Bluetooth Vulnerability Lets Attackers Spy On Encrypted Connections
    by [email protected] (Unknown) on 16 Ağustos 2019 at 07:35

    Over a billion Bluetooth-enabled devices, including smartphones, laptops, smart IoT devices, and industrial devices, have been found vulnerable to a high severity vulnerability that could allow attackers to spy on data transmitted between the two devices. The vulnerability, assigned as CVE-2019-9506, resides in the way 'encryption key negotiation protocol' lets two Bluetooth BR/EDR devices […]

  • Google Discloses 20-Year-Old Unpatched Flaw Affecting All Versions of Windows
    by [email protected] (Swati Khandelwal) on 15 Ağustos 2019 at 17:16

    Update — With this month's patch Tuesday updates, Microsoft has finally addressed this vulnerability, tracked as CVE-2019-1162, by correcting how the Windows operating system handles calls to Advanced Local Procedure Call (ALPC). A Google security researcher has just disclosed details of a 20-year-old unpatched high-severity vulnerability affecting all versions of Microsoft Windows, back […]