SQL SERVER DATABASE FILE ‘LARINI VE TEMPDB FILE ‘LARINI · PDF file...

Click here to load reader

  • date post

    03-Aug-2020
  • Category

    Documents

  • view

    1
  • download

    0

Embed Size (px)

Transcript of SQL SERVER DATABASE FILE ‘LARINI VE TEMPDB FILE ‘LARINI · PDF file...

  • 1

    SQL SERVER DATABASE FILE ‘LARINI VE TEMPDB FILE ‘LARINI

    TAŞIMA OPERASYONU

    Yusuf KAHVECİ Database Administrator

    @2013

    www.sqlturkiye.com info@sqlturkiye.com

    ! TÜRKIYE ‘ NIN İLK SQL PLATFORMU

    SQLTURKIYE.COM ÇOK YAKINDA PROFESYONEL

    EKIBIYLE BILGI PAYLAŞIMINA BAŞLAYACAKTIR…

    www.sqlturkiye.com

    http://www.sqlturkiye.com http://www.sqlturkiye.com/ mailto:info@sqlturkiye.com http://www.sqlturkiye.com http://www.sqlturkiye.com

  • 2

    YUSUF KAHVECİ KİMDİR ?

    Merhaba Sevgili Arkadaşlar , Kendimden fazla söz etmeyi sevmediğim için kısa tutacağım. 1987 yılında İstanbul doğumluyum. Bilgisayar Mühendisliği ve İktisat mezunuyum. İş hayatına Eğitimci olarak başladım ve senelerdir Senior DBA olarak devam etmekteyim. Uzmanlık alanlarım MS SQL Server ve Oracle ’dır.Bir çok firmada MS SQL Server ve Oracle Veritabanı Yöneticiliği yaptım. Şu anda özel bir firmada SQL SERVER Senior Database Administrator olarak görevime devam etmekteyim. Bana ulaşabileceğiniz bilgiler E- Book içerisinde mevcuttur.

    Saygılarımla…

    Kişisel Web Adresimden ve mail

    adreslerimden bana

    ulaşabilirsiniz.

    Kurucusu olduğum SQL TÜRKİYE

    Platformum üzerinden istek ve

    öneilerinizi iletebilir görüşlerinizi

    paylaşabilirsiniz.

    Platformumuzun temel amacı

    Türkçe kaynağım az olduğu bu

    dönemde SQL SERVER Yönetimi ,

    BI,DWH,PDW vb. Teknolojilerin

    sizlere aktarılması ve size

    yardımcı olacak ve profesyonel

    ekibimiz ile sizlere sunacağımız

    bilgi kaynaklarından

    faydalanabilir ve sizlerde bu bilgi

    kaynağına katkıda

    bulunabilirsiniz.

    http://www.sqlturkiye.com tr.linkedin.com/pub/yusuf-kahveci/60/314/60a/ mailto:yusufkahveci@sqlturkiye.com

  • 3

    İÇİNDEKİLER

    1. SSMS ile DETACH ve ATTACH Operasyonu ………………………………………………………….. 5 2. T-SQL ile DETACH ATTACH Operasyonu ………………………………………………………….. 11 3. OFFLINE ile ONLINE Operasyonu ………………………………………………………….. 13 4. TEMPDB ‘yi Farklı Diske Nasıl Taşırız ? ………………………………………………………….. 16

    http://www.sqlturkiye.com

  • 4

    DB FILE ‘LARINI FARKLI LOKASYONA TAŞIMA OPERASYONU

    SQL Server üzerinde açılmış olan veritabanlarının bazı nedenlerden dolayı kısa bir süre içerisinde

    başka bir yere taşınması gerekir örnek olarak SQL Server’ın çalıştırılacağı yeni bir sunucu alınmıştır ve

    eski sunucu üzerinde bulunan veritabanları yeni sunucuya taşınmalıdır. Bir başka örnek vermek

    gerekirse sunucu performansının arttırılması için veritabanı dosyası (.mdf) ile log dosyası (.ldf) ayrı

    diskler üzerinde çalıştırılması önerilmektedir. SQL Server yönetiminde bu işlemleri yapmamızda bize

    yardımcı olacak taşıma yöntemlerimizden ;

     DETACH – ATTACH Yöntemi

     OFFLINE – ONLINE Yöntemi

     BACKUP – RESTORE Yöntemi

    Yukarıda bahsettiğim yöntemleri e-kitabımız içerisinde sizlere detayları ve adım adım nasıl yapıldığını

    aktarıyor olacağım.

    http://www.sqlturkiye.com

  • 5

    I. SSMS ile DETACH – ATTACH OPERASYONU

    Detach, SQL Server üzerinde kullanmadığımız veritabanlarını kaynak tüketimini azaltmak adına silmeden, mdf ve ldf dosyalarını korumak kaydıyla Sql Server üzerinden kopartmak için kullandığımız yöntemdir. Bunun gibi bir çok amaç için bu yöntemi kullanabiliriz. Peki bu yöntemi nasıl ve ne şekilde kullanabiliriz ? Detach işlemine başlamadan önce Database ‘imizin File ‘ları hangi diskte ve folder da tutulduğuna bakalım ilk önce;

    Database ‘imizin üzerine gelip sağ tıklayıp Proparties sekmesine tıklıyoruz. (Şekil-1)

    (Şekil-1)

    Daha sonra karşımıza gelen Şekil-2 ‘de ki ekranda Files sekmesinden Path kısmında Database File ‘larımzın lokasyonlarını görebiliriz.

    http://www.sqlturkiye.com

  • 6

    Şekil-2

    Bu işlemlerden sonra ; ilk önce Detach edeceğimiz Database ‘in üzerine gelip sağ tıklayıp çıkan pencerede Task sekmesine gelip oradan Detach sekmesine (Şekil 3) tıklıyoruz.

    Şekil 3

    Detach sekmesine tıkladıktan sonra Şekil-4 ‘de ki gibi ekran karşımıza gelmektedir.

    http://www.sqlturkiye.com

  • 7

    Şekil-4

    Bu ekranda DB üzerinde yer alan Connection ları kopartıp işlemlerimizi gerçekleştirebiliyoruz. O yüzden ben Detach yapmadan önce Drop Connection kutucuğunu işaretleyip OK butonuna basıyorum.

    Gördüğünüz üzere bu işlem sonucunda Database ‘imiz Databases sekmesinin altında yer almıyor. Yani Detach işlemimizi sağlıklı bir şekilde gerçekleştirmiş olduk. Şimdi ise Data File ‘larımızı bulunduğu noktadan başka bir noktaya taşıyabiliriz. Taşıma işlemimi ben C:\MSSQLTransfer adlı folder ‘ın içerisine gerçekleştirdim. Bu adımdan sonra File ‘larını taşıdığım DB ‘mi sisteme Attach etmem gerekmektedir.

    Attach işlemi için SSMS üzerinde Databases sekmesi üzerine gelip sağ tıklayarak açılan pencerede Şekil-6 ‘da ki gibi Attach… sekmesine tıklıyoruz.

    http://www.sqlturkiye.com

  • 8

    Şekil-6

    Bu işlemden sonra karşımıza Şekil-7 ‘de ki ekran gelmektedir. Bu ekranda Add butonuna tıklıyoruz.

    Şekil-7

    Add butonuna tıkladıktan sonra Şekil-8 ‘de ki ekran karşımıza çıkmaktadır.Locate Database Files olarak adlandırılan bu ekranda Database ‘imizi taşıdığımız yeni lokasyondan File ‘ını seçip OK butonuna basıyoruz.

    http://www.sqlturkiye.com

  • 9

    Şekil-8

    Bu işlemlerden sonra Şekil-9 ‘da yer alan ekran ile karşılaşmaktayız .

    Şekil-9

    http://www.sqlturkiye.com

  • 10

    Şekil-9 ‘da dikkat edecek olursak Current File Path olarak artık yeni lokasyonumuz olarak gözükmektedir. Daha sonra OK butonuna basıyoruz ve Attach işlemimizi sonlandırıyoruz. Şekil-10 ‘da gördüğünüz üzere Database ‘imiz sağlıklı bir şekilde Attach edilmiştir.

    Şekil-10

    Şimdi SSMS konsolunu kullanarak gerçekleştirdiğimiz tüm bu işlemleri T-SQL Scriptleri ile nasıl yapıyoruz onu görelim.

    http://www.sqlturkiye.com

  • 11

    II. T-SQL ile DETACH – ATTACH OPERASYONU

    Detach işlemi çin :

    USE [master] GO ALTER DATABASE [DetachAttachSQLTURKIYE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO USE [master] GO EXEC master.dbo.sp_detach_db @dbname = N'DetachAttachSQLTURKIYE' GO

    Yukarıda ki script ile sağlıklı bir şekilde Detach işlemini gerçekleştirebiliyoruz. Scriptimizi inceleyecek olursak .

    ALTER DATABASE [DetachAttachSQLTURKIYE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    İlk önce Database ‘imiz SINGLE USER Moda çekilmiş. SINGLE USER MOD : Aynı anda tek bir kullanıcının erişebileceği anlamına gelir. Bu herhangi bir kullanıcı olabilir. İlk önce kim giriş yaparsa oturumu o almış olur. Bu kullanıcı bağlantısı bitmeden başka kullanıcı o veritabanına erişemez. Bu seçeneği genellikle sistem yöneticisi kendi oturumunda kritik bir işlem yapacağında tercih eder. Biz bu şekilde veritabanının erişim modunu değiştirmeye çalışırken o veritabanında çalışan kullanıcılar olabilir. Komutumuzun kullanıcıların bekleyip beklemeyeceklerini belirtmek için yukarıdaki ifadelerin arkasına WITH ROLLBACK IMMEDIATE veya WITH NO_WAIT deyimleri kullanılır. WITH NO_WAIT seçeneğinde eğer komutumuz bloke edilirse yani veritabanı üzerinde açık transaction veya aktif kullanıcı varsa işlem başarısız olup aşağıdaki hatayı verecektir. Msg 5070, Level 16, State 2, Line 1 Database state cannot be changed while other users are using the database ‘DetachAttachSQLTURKIYE’ Msg 5069, Level 16, State 1, Line 1 ALTER DATABASE statement failed. WITH ROLLBACK IMMEDIATE seçeneğinde kullanıcıların işlerini bitirmeleri beklenmez. Sorguları rollback edilip oturumları sonlandırılır. Biz scriptimiz de WITH ROLLBACK IMMEDIATE seçeneğini kullanarak Database ‘imizi Single User Mod ‘a çekip tüm transactionları rollback yaptık. Daha sonra ise sp_detach_db adlı sistem detach prosedürünü kullanarak database ‘imizi detach yaptık. Detach ettiğimiz Database ‘imizi bulunduğu diskten başka bir diske kopyalayıp Database ‘imizi Attach etmemiz gerekmektedir. Taşıma işlemini .mdf File ‘ını ‘K:\MSSQL2012\DATA’, .ldf File ‘ını ‘K:\MSSQL2012\LOG’ belirttiğim Diskteki Folder ‘ın içerisine gerçekleştirdikten sonra Attach işlemimiz için aşağı