SQL Server Generate Script Ile Yedek Almak

SQL Serveriniz üzerindeki veri tabanlarını bir kaç yöntemle kolayca yedekleyebilirsiniz. Örneğin task oluşturarak, SQL Agent aracılığı ile belli zaman aralıklarında yedekleme yapabilir, ya da veri tabanını bir yerden bir yere taşımak isterseniz attach, detach işlemi yapabilirsiniz bunun dışında script oluşturma yöntemi ile yani şimdi anlatacağım şekilde de SQL sunucunuzun versiyonuna bakılmaksızın veri tabanı dosyanızı bir yerden bir yere taşımanız mümkün.

Yedekleme yapmak istediğiniz veri tabanı üzerinde sağ tıklayarak Tasks>Generate Scripts seçeneğini seçiyoruz

Tanıtım ekranını Next ile geçiyoruz

Choose Objects adımında ister tüm database’i isterseniz de tablo bazlı yedek almanız mümkün. Eğer ki siz tüm database’i yedeklemek istiyorsanız bu adımda herhangi bir değişiklik yapmanıza gerek olmayacaktır.

Set Scripting Options ekranı bizim için önemlidir, bu adımda dışa aktarılan database in içindeki verilerin aktarılması ve hangi versiyon sql sunucuda açılması gibi bazı ayarları yapabileceğimiz adımdır.

FileName  alanı databaseimizin kaydolacağı yeri göstermektedir, bu adımda dışa aktarım dosyası nereye kaydetmek istiyorsanız o dizini gösterebilirsiniz. Advanced seçeneğine basarak gerekli ayarları yapmaya devam edelim.

Advanced sekmesinde açılan ekranda Script for Server Version seçeneğinde karşı taraftaki sunucunun versiyonuna göre ayarlanmalıdır. Benim tercihim düşük versiyon olarak kaydetmeniz olacaktır. Bu versiyon ayarı yapılmadığında veri tabanı karşı sunucuda açılmayacaktır.

Bir diğer önemli adım ise Tablolar üzerindeki verilerin taşınıp taşınmayacağının karar verilmesidir. Bu adımda Schema only seçeneği ile sadece boş tabloları taşırsınız fakat içerisine girdiğiniz veriler taşınmayacaktır. Schema and data seçeneği ile hem tablolar hem de içine girdiğiniz veriler oluşturduğumuz script içerisinde aktarılacaktır. Bu adımda Schema and data seçimi duruma göre doğru olacaktır.

Yaptığımız ayarların son değişikliklerini görebileceğimiz ekran eğer, başka bir değişiklik planlamıyorsak Next ile devam edip bitirebiliriz.

Finish butonuna bastığımızda Verinin büyüklüğüne bağlı olarak script çalışıp database I dışarıya aktaracaktır.

Dışa aktarılan veri tabanı dosyası eğer file name alanında değişiklik yapmamışsanız c:%username%Documents dizininde script.sql adında olacaktır.

Veri tabanımızı dışa aktardık ve taşımak istediğimiz bilgisayar/sunucu üzerine kopyaladık bunu nasıl içe aktarabiliriz buna bakalım.

.sql uzantılı dosyaya sağ tıklayarak SQL Server Management Studio uygulaması ile birlikte açmamız gerekmektedir.

Sunucu üzerinde gerekli kullanıcı adı ve şifreyi girerek Management Studio ya login oluyoruz.

Sorgu alanında script yedeğimiz açık iken, üst alandan Execute ya da klavyeden F5 tuşuna basarak yedeği içeri aktarmak mümkün olacaktır. Bu adımda dikkat edilmesi gereken bir diğer konu ise bazen veritabanı tasarımcıları sql sunucunun kurulu olduğu dizine veritabanını oluşturmazlar, bu gerek veri tabanının büyüdüğünü düşünürsek, gerekse C diskine virüs vs. olabileceği düşüncesi ile çok da önerilmez aslında. Konuyu fazla dağıtmadan FILENAME alanında MDF (Master Data File) ve LDF (Log Data File) dosyaları mevcuttur ve bunları nereye konumlandıracağı. Bu dizinin olması gerektir ki, veri tabanı bu alana kendisini taşıyabilsin. Bizim bu örneğimizde C diski altında Otel adında bir klasör var ve bu klasör altına veri tabanımız taşınacaktır. Eğer ki biz C dizininde Otel adında bir klasör oluşturmaz isek ya da yok ise muhtemelen permission denied gibi bir hata ile karşılaşacaksınızdır.

SQL Server üzerindeki tüm databaselerinizi yedekleyin.

SQL Server üzerinde belkide 1000 tane databaseiniz mevcut, bunların herbiri için procedur yazmak yada job oluşturmak zaman alabilir. Vereceğim script ile yedekleme işlemini hızlı ve kolay bir şekilde kaç databasinizin olduğuna bakmaksızın yedekleyebilirsiniz. TechNet üzerinden bu scripte ulaşabilirsiniz.

 

[email protected](50)–[email protected](256)–[email protected](256)–[email protected](20)–usedforfilename–[email protected]=’MyBackupFilePath’–[email protected]e=CONVERT(VARCHAR(20),GETDATE(),112)DECLAREdb_cursorCURSORFOR–UsethisforalldatabaseexceptthesystemdatabasesandanyexclusionyoucanmakeSELECTnameFROMmaster.dbo.sysdatabasesWHEREnameNOTIN(‘master’,’model’,’msdb’,’tempdb’,’ReportServer’,’ReportServerTempDB’)

–Uncommentandusethisforonlyspecificdatabases.
–ThosedatabasenamesyoucanprovideunderINclauseSELECTnameFROMmaster.dbo.sysdatabasesWHEREnameIN(‘MyDB1′,’MyDB2′)[email protected]@@[email protected][email protected][email protected]+’_’[email protected]+’.BAK’[email protected][email protected][email protected]_cursorDEALLOCATEdb_cursor

Kodu buradan indirebilirsiniz. http://gallery.technet.microsoft.com/T-SQL-to-backup-all-d683cfee/view/Reviews

Sistemciler için sql serisi 2

Bir önceki makalemizde SQL Serverin ne işe yaradığını tabloları nasıl oluşturabileceğimize değinmiştik. Bu makalede oluşturmuş olduğumuz ya da hali hazırda olan veri tabanımızı nasıl yedekleyip daha sonra yedekten nasıl geri dönebileceğimize değineceğiz. Ayrıca, var olan bir veri tabanı nasıl attach edilir ve daha sonrasında nasıl detach edilir bu konulara yer vermeye çalışacağım.

SQL Server da Backup (Yedek) Nasıl Alınır?

Daha önce oluşturmuş olduğumuz ya da varolan veri tabanımızın üzerinde sağ tıklayarak Tasks>Backup yolunu izliyelim

Varsayılan yedekleme yeri

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQ\LBackup klasörüdür.

Fakat ben burada yedeğimi daha güvenli olması açısından D Diskimde ya da ağda başka bir yere yedekleme yapmak istiyorsam Destination kısmındaki Remove butonuna basarak yolu seçebilirim. Ve seçip başka bir yere de kaydedeceğim fakat öncesinde kısaca bu menüyü tanıtmak istiyorum size en üstte Source kısmında;

Database; Hangi veri tabanının yedekleneceğini seçmemize yarar

Backup Type; olarak 2 çeşit yedeklemeye izin vermektedir ya full backup yapabilirsiniz yani herşeyi yedeklersiniz. Ya da Diffrential yedekleme yapabilirsiniz bunun dışında birde Transaction Log ları da yedekleyebilirsiniz. Sol üst köşeden Options kısmına tıkladığımızda ise;

Yedeklemenin ayarlarını yapabileceğimiz ekran bizi karşılıyor. Overwrite media seçeneğinde Append to the existing backup set seçeneği eğer aynı isimde bir database var ise içine yeni alınan veriyi ekler. Bence bu varsayılan olarak kalması iyidir. Overwrite all existing backup sets seçeneği ise tüm datayı silip yeni datayı aynı isimle yedekler ayrıca burada Reliability seçeneği ile Verify backup when finished seçeneği ile yedek aldıktan sonra bu yedeği doğrulayabilir Compression seçeneği ile veri tabanınızdan yer kazanmak için sıkıştırabilirsiniz fakat sıkıştırmanız bazen veri tabanının geri yükleme esnasında bozulmalar yaşanmasına sebep olmaktadır.

Ben gerekli ayarları yaptıktan sonra genel sekmesine gelerek yedekleme yapılacak yeri seçiyorum öncelikle destinations kısmında varsayılan yedekleme yerine remove diyorum. Ve add seçeneği ile diskimdeki yedeklenecek yeri gösteriyorum

Yedeğimizin uzantısını “.bak” olarak belirtmemiz gerekiyor. Daha sonra değiştirilen dosya uzantılarında problemler çıkartabiliyor. Yedeklenecek yeri gösterdikten sonra okey diyerek tüm ekranları kapatıyorum ve yedekleme işlemi başarı ile tamamlanıyor. Eğer yedekleme işleminden herhangi bir hata almışsanız, dizin üzerindeki NTFS izinlerini kontrol ediniz. Yedekleme işlemi bu kadar.

SQL Serverda Restore işlemi (Geri Yükleme) Nasıl Yapılır?

Database üzerinde sağ tıklıyoruz ve Restore Database i seçiyoruz.

Çıkan ekranda source for restore kısmından From device ı seçerek yedeklediğimiz nerede bunu göstermemiz gerekiyor.

Yedeğimizin yolunu gösterdikten sonra okey tuşuna basıyoruz.

Çıkan ekranda destination for restore sekmesinde yeni eklediğiniz database i burada göreceksiniz bunu seçerek alt kısımda select the backup sets to restore sekmesindeki restore tikini işaretleyin ve okey dediğinizde restore yani geri yükleme işlemi tamamlanmış oluyor. Yeri gelmişken Attach nasıl yapılır ona da değinelim. Database in üzerinde sağ tıklayıp Attach a tıklayalım

Database imizin .mdf dosyası neredeyse yolunu gösteriyoruz ve okey diyoruz.

Çıkan ekranda hiçbir şeyde değişiklik yapmadan okey tuşuna basarak veritabanını sisteme dahil etmiş oluyoruz.

Sisteme dahil olmuş veritabanımız aynı mail e bir ek dosya eklenmiş gibi veritabanımızda barınır. Delete derseniz tüm veritabanı silinir fakat eğer siz bu veritabanını şimdilik kullanmak istemiorsanız deteach edebilirsiniz böylelikle daha sonra istediğiniz zaman tekrar sisteme dahil edebilirsiniz. Detach etmek için daha önceden oluşturduğunmuz databasein üzerinde task>detach kısmını tıklayalım

Veritabanımız dışarıya aktarım için hazırdır. Eğer o anda o veritabanına bağlı olan kişiler varsa sistem hata vericektir bu yüzden drop connections sekmesini seçerek okeye bastığımızda veritabanı dışarı aktarılacaktır.

Bu serimizin de sonuna geldik. Bir sonraki makalede SQL Server Agent rolünü inceliyor olacağız.