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

  • US Government Warns of a New Strain of Chinese 'Taidoor' Virus
    by [email protected] (Ravie Lakshmanan) on 4 Ağustos 2020 at 08:32

    Intelligence agencies in the US have released information about a new variant of 12-year-old computer virus used by China's state-sponsored hackers targeting governments, corporations, and think tanks. Named "Taidoor," the malware has done an 'excellent' job of compromising systems as early as 2008, with the actors deploying it on victim networks for stealthy remote access. "[The] FBI has […]

  • 17-Year-Old 'Mastermind', 2 Others Behind the Biggest Twitter Hack Arrested
    by [email protected] (Unknown) on 1 Ağustos 2020 at 18:06

    A 17-year-old teen and two other 19 and 22-year-old individuals have reportedly been arrested for being the alleged mastermind behind the recent Twitter hack that simultaneously targeted several high-profile accounts within minutes as part of a massive bitcoin scam. According to the U.S. Department of Justice, Mason Sheppard, aka "Chaewon," 19, from the United Kingdom, Nima Fazeli, aka "Rolex," […]

  • EU sanctions hackers from China, Russia, North Korea who're wanted by the FBI
    by [email protected] (Swati Khandelwal) on 31 Temmuz 2020 at 13:47

    The Council of the European Union has imposed its first-ever sanctions against persons or entities involved in various cyber-attacks targeting European citizens, and its member states. The directive has been issued against six individuals and three entities responsible for or involved in various cyber-attacks, out of which some publicly known are 'WannaCry', 'NotPetya', and 'Operation Cloud […]

  • New Attack Leverages HTTP/2 for Effective Remote Timing Side-Channel Leaks
    by [email protected] (Ravie Lakshmanan) on 31 Temmuz 2020 at 10:10

    Security researchers have outlined a new technique that renders a remote timing-based side-channel attack more effective regardless of the network congestion between the adversary and the target server. Remote timing attacks that work over a network connection are predominantly affected by variations in network transmission time (or jitter), which, in turn, depends on the load of the network […]

  • Zoom Bug Allowed Snoopers Crack Private Meeting Passwords in Minutes
    by [email protected] (Ravie Lakshmanan) on 30 Temmuz 2020 at 10:40

    Popular video conferencing app Zoom recently fixed a new security flaw that could have allowed potential attackers to crack the numeric passcode used to secure private meetings on the platform and snoop on participants. Zoom meetings are by default protected by a six-digit numeric password, but according to Tom Anthony, VP Product at SearchPilot who identified the issue, the lack of rat […]