Recent comments

None


İçerik Ara











Yasal Uyarı
Bu sitede sunulan tüm bilgi ve dökümanlar Turgay Sahtiyan tarafından yazılmaktadır. Yazıların kaynak göstermek şartıyla kullanılması serbesttir.

© Copyright 2009-2013
Takvim
<<  Aralık 2017  >>
PaSaÇaPeCuCuPa
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
Keywords

Makinama SQL Server 2008 Enterprise kurulumunu bitirdikten üzerine SP1 i kurmak istedim. SP install a başladıktan sonra aşağıdaki hatayı vererek sonlandı.

“sql server 2008 sp1 instalation fails with a failure detected in previous installation”

Bu hatayı vermesine rağmen SQL Server ı kurarken herhangi bir hataya rastlamamış ve düzgün bir şekilde kurmuştum.

MSDN forumlarında gördüğüm üzere bu hatayı çözmek için repair işlemini yapmak yeterli.

Bende işe yaradı,sizede yardımcı olur umarım.

 

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


Geçenlerde SQL Server 2008 i repair etme ihtiyacı duydum. Gerekli dvd yi dvd rom a koyduktan sonra repair işlemine başladım. Lakin bazı hatalar verdikten sonra repair işlemi sonlandı.

Bununla alakalı araştırmalar yaparken aşağıdaki KB article ı buldum.

Görünen o ki, dvd den repair işlemi yapılınca bazı hatalar almak mümkün. MS e tekrar selam ediyoruz. :)

Bu problemin çözümü için KB article a buradan ulaşabilirsiniz.

Kolay gelsin

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


Geçenlerde danışmanlığını yaptığımız bir müşterimizi SQL Server 2008 e geçirmeye karar verdik. Müşterinin istekleri doğrultusunda en uygun edition ı seçebilmek için edition lar arasındaki özellik farklılıklarını araştırmaya başladım.

Bu araştırma sırasında aşağıdaki microsoft dökümanına ulaştım. Tüm özelliklerin karşılaştırıldığı bu dökümanın işinize yarayacağına eminim.

http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx

 

Benim için önemli olan özelliklere değinecek olursam;

Özellik Enterprise Standard WorkGroup Web Express
CPU Sayısı 8 CPU 4 CPU 2 CPU 4 CPU 1 CPU
Memory 2 TB 64 GB 4 GB OS Mak. 1 GB
DB Size 524 PB 524 PB 524 PB 524 PB 4 GB
x32 Desteği Evet Evet Evet Evet Evet
x64 Desteği Evet Evet Evet Evet Evet
Data Compression Evet        
Resource Governor Evet        
Table ve Index Partioning Evet        
Indexed Views Evet        
DB Mirror Full Full Değil Full Değil Full Değil Full Değil
Log Shipping Evet Evet Evet Evet  
Clustering 16 Node 2 Node      
Backup Compression Evet        
SQL Audit Evet        
DB Encrypt Evet        
Policy Management Evet Evet Evet Evet Evet
Management Studio Evet Evet Evet Evet Evet
Database Mail Evet Evet Evet Evet  
SQL Server Agent Evet Evet Evet Evet  
DB Tuning Wizard Evet Evet Evet Evet  
SQL Profiler Evet Evet Evet    
Data Compression Evet        
Change Data Capture Evet        
Merge Deyimi Evet Evet Evet Evet Evet
Yeni DateTime Veri Tipleri Evet Evet Evet Evet Evet
FILESTREAM Desteği Evet Evet Evet Evet Evet
Intellisense Evet Evet Evet Evet Evet
Geodetic Data Tipleri Evet Evet Evet Evet Evet

 

Kolay gelsin

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


SQL Server 2008 e SP1 i uygularken çıkan bir hatadan dolayı SQL Server 2008 i Repair etmem gerekti. Ne yazıkki bu repair işlemi de aşağıdaki hata ile sonuçlandı.

“Error 1316.a network error occurred while attempting to read form the file x86\setup\SSCERuntime-enu.msi”

Microsoft ta ki arkadaşlara güzel dileklerimi ileterek internette bu hatayla alakalı yazılar aramaya başladım. Ve iyi haber buldum:)

Hatayı ortadan kaldırmak için “Microsoft SQL Server Compact 3.5 SP1” in uninstall edilmesi gerekmekte.

Bunun için Add/Remove program kısmına gidip sağ click eşliğinde Compact’a bye bye diyoruz.

ssError1

Uninstall dan sonra Repair işlemini tekrar denedim ve sorunsuz çalıştı. Umarım sizinde işinize yarar.

Kaynak : http://blog-mstechnology.blogspot.com/2009/06/error-1316a-network-error-occurred.html

 

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


SQL Server üzerinde bulunan Job (Schedule) mantığıyla bir çok işi otomatik olarak SQL Server a yaptırmak mümkün. Bu işlemlerden biride otomatik yedek aldırma. Örneğin bir job tasarlayıp her akşam gece 12.00 da database veya databaselerin yedeğini aldırabiliriz.

Örneğin, SQL Server 2008 üzerinde AdventureWorks databasenin otomatik yedeğini almak için bir job tasarlayalım.

Management Studio >> SQL Server Agent >> Jobs kısmına gelip sağ tık ile New job a geçelim.

sc1

General kısmında Name ve istediğiniz bir category i seçtikten sonra Steps kısmına geçiniz.

sc2

Steps kısmında bu job için uygulanacak adımlar tanımlanmaktadır. Yani burda birden fazla database in yedeklenmesini farklı adımlar olarak tanımlayabiliriz. Biz bu örneğimiz için sadece tek adım yani AdventureWorks ün yedeklenmesini tanımlayacağız.

Bunun için New butonuna basalım.

sc3

Resimde görüldüğü gibi alanları dolduralım. Command kısmında yazan yazı BackUp alma işlemini gerçekleştirecek T-SQL komutudur.

BACKUP DATABASE [AdventureWorks] 
TO DISK = N'c:\\AdventureWorks.bak' 

Gerekli alanların tamamını resimdeki gibi doldurduktan sonra OK e basıp arka ekranda Schedules kısmına gelelim.

sc4

Schedules bölümü job un hangi otomatik süreyle işleneceğinin belirleneceği bölümdür. Resimde de görmüş olduğunuz üzere günlük,haftalık,aylık istediğimiz gibi ayarlama yapabilmekteyiz. Biz bu örneğimizde sonucu hızlıca alabilmek açısından dakikada 1 seçeneğini ayarlıyoruz.

Resimde görüldüğü gibi alanları doldurduktan sonra OK e basıp arka ekranda Notifications kısmına geçelim.

sc5

Notifications kısmı, job görevini tamamladıktan sonra ilgili kişilere bilgi vermelerin ayarlandığı bölümdür. Ben bu örnek için işlem tamamlandığımda kendimi mail attırıyorum. Bu arada SQL Server 2008 de Mail Gönderme işlemi ile alakalı yazdığım yazıyı okumadıysanız okumanızı tavsiye ederim. Buradan erişebilirsiniz.

Notification larıda ayarladıktan sonra OK e basıyoruz. Job görevini almış durumda.:)

Bu arada ek bir bilgi vermek istiyorum. Bu jobların çalışabilmesi için SQL Server Agent in çalışır durumda olması gerekiyor. Bu bilgide aklınızda bulunsun.

Şimdi 3-4 dk kadar bekleyelim. Bu bekleme sırasında 3-4 defa BackUp işlemi gerçekleşecek ve mailler de mail kutumuza düşecektir.

Evet yeteri kadar bekledik. Mailimizi kontrol ettiğimizde BackUp Complete maillerinin gelmiş olduğunu görüyoruz.

sc6

sc7

Birde management studio üzerinde ki job un history sine bakalım. Bunun için Management Studio >> SQL Server Agent >> Jobs >> JobumuzunAdi kısmından sağ tık ile View History kısmını açalım.

sc8

Bu ekranda, oluşturduğumuz job un bütün tamamlanmış step history sine bakabilirsiniz.

Aklınıza takılan bir şey olursa yorum kısmından sorabilirsiniz.

 

İyi çalışmalar

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


Uygulamalarımızda SQL Server üzerinden direk mail gönderebiliriz. Örneğin bir job hazırlayıp doğum günü olan kişilere otomatik olarak mail gönderme yada otomatik backup alan job larda herhangi bir hata oluştuğunda yetkili kişilere mail gönderilmesini sağlayabiliriz.

Bunun için SQL Server üzerinde bazı ayarlamaların yapılması gerekmektedir.

İlk olarak Database Mail ayarlamasının nasıl yapıldığına bakalım.

Management Studio >> Management >> Database Mail kısmında sağ tık yapıp Configure Database Mail i seçelim. Açılan ekranda next e basıp bir sonraki gelen ekranda ilk seçenek seçiliyken next e basalım ve aşağıdaki ekrana erişelim.

dm1

Profile Name kısmına bir isim yazıp SMTP ayarlamalarını yapmak üzere Add butonuna basalım.

dm2

Gelen bu ekranı kendi mail hesabınızın özelliklerine göre doldurun. Eğer SMTP sunucunuz kullanıcı onaylama istiyorsa bunu basic authentication kısmında tanımlayın eğer istemiyorsa anonymous authentication kısmını seçip Ok e basın.

dm3

Gelen ekranlara next-next diyerek Database Mail yapılandırmasını sonlandırın.

Yapılan ayarlamaların doğru olduğunu test etmek için Database Mail e sağ tıklayıp Send Test E-Mail bölümüne geçelim

dm4 

Bu bölümde gerekli alanları doldurup Test mailini gönderin ve size ulaştığına emin olun.

 

Şimdi bir sonraki ayarlamaya geçelim. Bu işlemimizde az önce tanımlamış olduğumuz database mail i SQL Server Agent a tanımlayacağız.

Bunun için Management Studio da SQL Server Agent a sağ tıklayıp properties ini açıp Alert System bölümüne geçelim.

dm5

Gelen ekranda Mail system olarak Database Mail seçip Mail profile olarak az önce tanımlamış olduğumuz mail profile ı seçelim ve bu ekranı OK diyerek kapatalım.

Artık profiller tanımlayıp bu profilleri job ta kullanıp mail gönderebilirsiniz. Son olarak job da bu işlemin nasıl tanımlanacağı ile alakalı bir ekran görüntüsü vererek yazımızı noktalayalım.

dm6

Eğer buraya kadar her şey normal olmasına rağmen job tamamlanmasında mail atmıyorsa ve error log u incelediğinizde “An attempt was made to send an email when no email session has been established” tarzı bir hata görüyorsanız bu hatanın çözümü ile ilgili bu linki ziyaret edebilirsiniz.

İyi çalışmalar,

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


SQL Server da bir SQL Server Agent Job unun tamamlanmasından sonra otomatik mail göndermesini sağlayabiliriz.

Bu amaçla SQL Server Database Mail yapılandırması yapılıp gerekli operatorler ayarlanıp job a tanımlanmasına rağmen aşağıdaki tarzda bir hata log unu Error Logs da görmek mümkün;

An attempt was made to send an email when no email session has been established

Bu problemin sebebi, yeni bir profil tanımlandıktan yada Database Mail ayarlamaları yapıldıktan sonra SQL Server Agent in restart edilmemesidir.

Eğer SQL Server Agent i restart ederseniz bu hata ortadan kalkacaktır.

 

Kolay Gelsin

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


turgay , 6. Ekim 2009, 13:38

Bazı belirlenen durumlar gerçekleştiğinde SQL Server bunlardan otomatikman haberdar olmamızı sağlayabilir. Bu sayede 7/24 monitore etmektense gerekli alertler ayarlanarak istenilen durum gerçekleştiğinde bundan haberdar olabiliriz.

Bunun için kullanacağımız SQL Server özelliği Alerts tir.

Örneğin istediğimiz bir database belirli bir KB yi geçtiği zaman, yada transaction dosyası belirlediğimiz bir değerin üzerine çıktığında mail yada net send yoluyla uyarılabiliriz.

SQL Server da bu otomatik bilgi alma sistemini SQL Server Agent in altında bulunan Alerts özelliği ile yapmaktayız.

Şimdi SQL Server 2008 de Alert lerin nasıl tanımlandığını görelim.

Örneğin AdventureWorks2008 database i 222230 KB değerini aşınca nasıl uyarı verilir bunu gerçekleştirmeye çalışalım.

Management Studio yu açıp SQL Server Agent in altında ki Alerts kımına gelip sağ tık ile New Alert diyoruz.

al1

Name bölümüne alert için bir isim veriyoruz.

Type bölümünde kullanabileceğimiz 3 seçenek var.

  • SQL Server event alert, fatal errors,syntax errors yada hardware problemlerini içeren bölümdür.
  • SQL Server performance condition alert, database boyutu yada transaction log dosyası doluluğu gibi performans ifadelerini içeren bölümdür.
  • Windows Management Instrument, sonraki derslerimizde bu bölüm için deadlock alert tanımlaması ile ilgili bir örnek yapacağız.

Biz bu bölümde örneğimiz için SQL Server performance condition alert i seçiyoruz. Boyut kontrolü yapacağımız için Object kısmından database i seçip Instance kısmından da AdventureWorks2008 database ini seçiyoruz. Son olarak boyut aşıldığında uyarı vermesi için rises above seçeneğini seçip value değerine 222230 değerini giriyoruz. Bu değer KB cinsinden olup benim AdventureWorks2008 database im boyutuna yakın bir değer olduğu için bunu yazdım. Siz farklı bir değer yazabilirsiniz.

Resimdeki gibi bu tanımlamaları bitirdikten sonra Response kısmına geçiyoruz. Bu bölümde belirtilen şart gerçekleştiğinde ne yapılması istendiği belirlenebiliyor.

al2

Execute job kısmından, koşul sağlandığında bir job çalıştırılabilir. Bunu daha sonraki deadlock örneğimizde göreceğiz.

Notify operator kısmından da operatörler uyarılabilir. Bu kısımı işaretleyip New Operator kısmından yeni bir operator tanımlayarak OK e basıyoruz.

İşlemlerimiz bu kadar. Şimdi boyutu aşıp oluşturduğumuz koşulu sağlamak için AdventureWorks2008 database inde bir table create edip içine 1 milyon kayıt atayarak database in boyutunu büyüteceğiz.

Aşağıdaki table ı AdventureWorks2008 database ine create ediyoruz.

USE [AdventureWorks2008]
GO 

CREATE TABLE [dbo].[denemeTbl](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [kolon1] [nvarchar](100) NULL,
 CONSTRAINT [PK_aa] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] 

Daha sonra bu table a 1 milyon kayıt atamak için aşağıdaki sql i uyguluyoruz.

while @i<1000000 begin
  insert denemeTbl select 'abcasdasdasdasdasdasdasdasdasdasdasdas'
  set @i=@i+1
end

Bu sql tamamlandıktan sonra alert in history isine bakacak olursak alert işleminin gerçekleştiğini görebilirsiniz.

al3

Bir sonraki yazımızda görüşmek üzere.

Kolay gelsin

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


Paul S. Randal (SQLskills.com) ‘ın yazdığı BLOB dataların SQL Server üzerinde FILESTREAM olarak işlenmesi üzerine çok güzel bir inceleme.

Okumanızı tavsiye ederim.

http://msdn.microsoft.com/en-us/library/cc949109.aspx

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


SQL Server daki bir tablonun içindeki verilerden insert script i oluşturup bu script i başka datalar üzerinde execute etme ihtiyacımız doğabilir.

Örneğin table kopyalama işlemi yapmak istiyorsunuz. Eğer 2 server aynı local bölgede ise sadece bir insert komutuyla bir table ı diğer bir table a kopyabilirsiniz. Ama 2 server aynı anda erişebilecek durumda değil ise source table dan insert script i oluşturup destination table ın olduğu serverda execute etmeniz gerekmektedir.

SQL 2000 ve SQL 2005 de bu işlemin direk enterprise üzerinden yapılması mümkün değildi. Bunu yapabilmek için ayrı bir executable oluşturulması ve veritabanın üzerinde çalıştırılması gerekiyordu.

SQL 2008 ile gelen script database ek özelliği sayesinde bu işlemi kolayca yapmamız mümkün.

Şimdi bu işlemi nasıl yapabileceğimize bakalım.


Management Studio da AdventureWorks2008 veritabanına sağ tıklayıp Tasks >> Generate Scripts bölümüne geliyoruz.

Açılan ekranda next yapıp gelen ekranda çalışmak istediğimiz veritabanını seçiyoruz. Yani bu örnek için AdventureWorks2008.

Next e tıklayınca karşımıza aşağıdaki gibi bir ekran gelecektir.

gs1

Bu ekranda Table ın create komutu bizim için önemli olmadığı için Script Create kısmını false yapıyoruz. Datalar için insert script i oluşturmak içinde Script Data kısmını True yapıyoruz.

Next e tıklayıp gelen ekranda Tables seçeneğini seçip next e basıyoruz.

gs2

Gelen ekranda hangi table lar için insert script oluşturmak istiyorsak onları seçip next e basıyoruz.

gs3

Bir sonraki gelen bu ekranda script in nereye oluşturulacağını seçiyoruz. “Script to New Query Window” seçeneğini seçip next e basalım.

Son gelen summary ekranında finish e bastığımızda insert script i Management Studio da yeni bir Query Window halinde kullanılmaya hazırdır.

gs4

Eğer sadece bir table üzerinden insert script oluşturulmak isteniyorsa direk table üzerinde sağ klik yapıp gitmek daha hızlı olacaktır.

 

Kolay gelsin

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan


Merhaba arkadaşlar,

Bu yazımda SQL Server 2008 ile beraber gelen Table ve BackUp larda ki compression yani sıkıştırma işlemlerinin nasıl yapılacağını anlatmaya çalışacağım.

İlk olarak neden sıkıştırma yaptığımıza değinelim. Büyük boyutlu mdf dosyalarının yedeğini aldığımızda oldukça büyük boyutlu yedek dosyaları oluşabilmektedir. Örneğin 2.5gb boyutundaki bir datanın yedeği 1 gb boyutlarında olabilmekte. Bu da bize storing problemi yaşatmakta.

Aynı şekilde compression işlemi sayesinde büyük boyutlu dataları sıkıştırarak daha az yer kaplamasını sağlayabilmekteyiz.

SQL Server bize 2 farklı konuda sıkıştırma şansı vermekte. Bunlar Tablo Sıkıştırması ve BackUp Sıkıştırması. Şimdi bunları anlatmaya çalışalım.

Table Compression

Data içerisindeki tabloları sıkıştırarak datanın daha az yer kaplamasını sağlayabiliriz. Tabloyu 2 türlü sıkıştırma şansımız var. Kayıt veya sayfa bazında. Heap,Clustered Index,Non-Clustered Index,Index Views ve Partition lar sıkıştırılabilmekte. Şimdi bu işlemi management studio üzerinde nasıl yapabileceğimizi görelim.

Örneğin AdventureWorks2008 database inde ki Sales.SalesOrderDetail tablosunda sıkıştırma yapalım. Bunun için management studio da tabloya sağ tıklayıp Storage kısmından Manage Compression a tıklayalım. Gelen ekrana next diyelim ve aşağıdaki ekrana geçelim.

cmp1

Eğer sıkıştırma yapacağımız table birden fazla partition da ise bunları liste halinde bu ekranda görebilirsiniz.

İlk olarak Row compression un bize sağlayacağı faydaya bakalım. Bunun için Compression Type kısmından Row u seçip calculate butonuna basıyoruz.

cmp2

Current Space kısmında table in şu anda kapladığı yeri, Requested Compressed Space kısmında ise Row compression yapılırsa table ın kaplayacağı yeri görebiliriz. Bu table için Row sıkıştırmasıyla %12 lik bir sıkıştırma yapabiliyormuşuz.

Şimdide Compression Type kısmından page i seçip calculate basalım. Gördüğünüz gibi page sıkıştırması bu table için daha iyi bir sonuç veriyor ve yaklaşık olarak %32 lik bir sıkıştırma sağlıyor.

Sıkıştırma tipine karar verdikten sonra next e basıyoruz ve aşağıdaki ekrana geçiyoruz.

cmp3

Buradaki seçeneklere değinecek olursak;

Create Script : Bu işlem için bir T-SQL script i oluşturmakta. Bu oluşan script i daha sonra management studio dan uygulayabiliriz.

Run immediately : Sıkıştırma işlemini hemen gerçekleştirmekte.

Schedule : Bu sıkıştırma işlemi için bir görev oluşturulabilir ve örneğin her hafta aynı gün ve saatte bu sıkıştırma işlemini tekrarlatabiliriz.

Biz bu örneğimiz için Run immediately i seçiyoruz ve next e basıyoruz. Gelen ekranda yapılacak olan sıkıştırma işlemi için bir summary bulunmakta. Bu ekranda finish e basıyoruz ve işlemi bitiriyoruz.


Table Compression işlemi management studio ile yapılabildiği gibi sql script ile de yapılabilmekte.

İlk olarak sıkıştırma yapacağımız table da ne kadar yer kazanabileceğimize bakalım.

EXEC sp_estimate_data_compression_savings
	@schema_name = 'Sales'
	,@object_name = 'SalesOrderDetail'
	,@index_id = null
	,@partition_number = null
	,@data_compression = 'ROW';

Bu script vasıtasıyla Sales.SalesOrderDetail table ında ROW table compression yapılırsa kazanılacak yerleri görebilmekteyiz.

Gelen sonuç ekranında index_id 1 olan satır clustered index i göstermekte ve her bir index için kazanılacak yerleri görebilmekteyiz.

Aynı işlemi PAGE compression type kullanarakta yapabiliriz.

Şimdi ise sıkıştırma işlemini script ile gerçekleştirelim. Bunun için aşağıdaki kod bloğunu kullanabiliriz.

ALTER TABLE [Sales].[SalesOrderDetail] REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = PAGE);


Bu arada table ları create ederken compression özelliğini verebilmekteyiz. Bu sayede her defasında table ı compress yapmamıza gerek kalmamakta. Bunun içinde table create scriptinde WITH (DATA_COMPRESSION = PAGE) komutunu kullanabiliriz.

Table compression işlemlerimiz bu kadar. Şimdi BackUp Compression işlemlerine geçelim.

BackUp Compression

Dataların yedeği alınırken sıkıştırma işlemi yapılabilir. Bu şekilde sıkıştırılmış datalar herhangi bir SQL Server 2008 Edition unda restore edilebilir.

SQL Server ın BackUp alınırken sıkıştırma yapılıp yapılmayacağını belirleyen default bir özelliği bulunmaktadır. Bu özelliğin şu andaki değerinin ne olduğunu görmek için aşağıdaki script i uyguluyalım.

EXEC sp_configure 'backup compression default'

 

 

 

 

 

Gelen sonuç ekranında config_value kısmında 0 var ise backup işlemlerinde sıkıştırma yapılmamakta,1 var ise sıkıştırma yapılmaktadır.

Bu default değeri değiştirmek için ise aşağıdaki script i uygulayabilirsiniz.

EXEC sp_configure 'backup compression default', 1
RECONFIGURE WITH OVERRIDE;


Yukarıdaki script i uyguladıktan sonra tekrar bir önceki script i uygularsak config_value nun 1 olarak değiştiğini dolayısıyla bundan sonra yapacağımız backup işlemlerinin compress edilip backup lanacağını bilebiliriz.


Şimdi 3 değişik şekilde backup alalım ve aralarındaki farkları görelim.

İlk backup ı with clause kullanarak compressed halde alacağız.

İkinci backup ta ise server default u kullanacağız. Şu an server default umuz compress seçili.

Üçüncü back upda ise with clause kullanarak uncompressed yani sıkıştırılmamış backup alacağız.

Bu işlemler için aşağıdaki script bloklarını sırasıyla uygulayınız.

--With clause ile compress edilmiş backup
BACKUP DATABASE AdventureWorks2008
TO DISK = 'D:\temp\Compressed.bak'
WITH COMPRESSION

--default compression type ile back up
BACKUP DATABASE AdventureWorks2008
TO DISK = 'D:\temp\Default.bak'

--With clause ile compress edilmemiş backup
BACKUP DATABASE AdventureWorks2008
TO DISK = 'D:\temp\No_Compressed.bak'
WITH NO_COMPRESSION

Şimdi aldığımız backup ların boyutlarına bakalım.

cmp4

Gördüğünüz gibi Default backup compress edilmiş halde çünkü server default unu buna göre ayarlamıştık.

Bu arada aklınızda bulunmasında fayda var. BackUp compression özelliği sadece SQL Server 2008 Enterprise ve Developer edition da bulunmakta. Fakat sıkıştırılmış bir backup bütün SQL Server editionlarında restore edilebilmektedir.

 

 

SQL Server 2008 de Table ve BackUp Compression işlemleri bu şekilde. Aklınıza takılan bir şey olursa yorum kısmından sorabilirsiniz.

Kolay gelsin

Turgay Sahtiyan

Not : Blog haricinde, faydali gördügüm yazilari ve linkleri twitter adresimden paylasiyorum. Beni twitter'da takip etmek için : twitter.com/turgaysahtiyan