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

  • WARNING – New Phishing Attack That Even Most Vigilant Users Could Fall For
    by [email protected] (Mohit Kumar) on 15 Şubat 2019 at 11:34

    How do you check if a website asking for your credentials is fake or legit to log in? By checking if the URL is correct? By checking if the website address is not a homograph? By checking if the site is using HTTPS? Or using software or browser extensions that detect phishing domains? Well, if you, like most Internet users, are also relying on above basic security practices to spot if that […]

  • Hacker Breaches Dozens of Sites, Puts 127 Million New Records Up for Sale
    by [email protected] (Swati Khandelwal) on 15 Şubat 2019 at 08:56

    A hacker who was selling details of nearly 620 million online accounts stolen from 16 popular websites has now put up a second batch of 127 million records originating from 8 other sites for sale on the dark web. Last week, The Hacker News received an email from a Pakistani hacker who claims to have hacked dozens of popular websites (listed below) and selling their stolen databases online. <! […]

  • Ex-US Intelligence Agent Charged With Spying and Helping Iranian Hackers
    by [email protected] (Swati Khandelwal) on 14 Şubat 2019 at 10:00

    The United States Department of Justice has announced espionage charges against a former US Air Force intelligence officer with the highest level of top-secret clearance for providing the Iranian government classified defense information after she defected to Iran in 2013. Monica Elfriede Witt, 39, was a former U.S. Air Force Intelligence Specialist and Special Agent of the Air Force Offic […]

  • Snapd Flaw Lets Attackers Gain Root Access On Linux Systems
    by [email protected] (Mohit Kumar) on 13 Şubat 2019 at 15:32

    Ubuntu and some other Linux distributions suffer from a severe privilege escalation vulnerability that could allow a local attacker or a malicious program to obtain root privileges and total control over the targeted system. Dubbed "Dirty_Sock" and identified as CVE-2019-7304, the vulnerability was discovered by security researcher Chris Moberly, who privately disclosed it to Canonical, t […]

  • Hackers Destroyed VFEmail Service – Deleted Its Entire Data and Backups
    by [email protected] (Swati Khandelwal) on 13 Şubat 2019 at 11:22

    What could be more frightening than a service informing you that all your data is gone—every file and every backup servers are entirely wiped out? The worst nightmare of its kind. Right? But that's precisely what just happened this week with VFEmail.net, a US-based secure email provider that lost all data and backup files for its users after unknown hackers destroyed its entire U.S. […]