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

Her yıl Seattle Microsoft HeadQuarters’da düzenlenen MVP Summit’in bu yılki etkinliğine ben de katılıyorum.

image

Sadece Microsoft MVP ve Regional Director’ların devetli olduğu etkinliğe bu yıl 1600 kişi kayıt yaptırmış durumda.

27.02.2012 Pazartesi günü kapılarını açıp 02.03.2012 Cuma gününe kadar sürecek event’te 100’lerce oturuma katılma şansı bulacağız. Özellikle product group’un düzenlediği event’lerde SQL Server’i geliştiren ekibe soru sorma fırsatını yakalamak oldukça güzel. :)

Ben de etkinliğe katılmak için 25.02.2012 Cumartesi sabahı Seattle’a uçuyorum. Dönüş tarihime kadar yazılarıma ara vermek zorunda kalacağımı üzülerek belirtmek isterim.

Etkinlik süresince hem twitter’dan (@turgaysahtiyan) hem de fırsat buldukça ufak ufak bilgilendirmeleri blog’um üzerimden yapmaya çalışacağım. Ama şunu söylemem lazım ki oturumların tamamı NDA kapsamında olduğu için ne yazık ki oturumlar hakkında bilgi veremeyeceğim :)

Muhtemelen bu yazı dönüş tarihime (05.03.2012) kadar yazabileceğim son yazı. Döndüğümde uzun uzadıya event hakkında bilgilendirme yapma ümidiyle.

 

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 2012’nin çıkması artık sayılı gün kala Microsoft’tan yeni bir etkinlik haberi geldi. Sanal olarak gerçekleştirilecek bu etkinlikte benim de bir otururum olacak.

image

8 Mart 2012’de gerçekleştirilecek SQL Server 2012 sanal lansmanında 14 tanesi Türkçe olmak üzere toplam 45 oturumla SQL Server 2012 ile gelen yenilikleri öğrenme fırsatı yakalayacaksınız.

SQL Server Öncüleri olarak had safhada destek vermeye çalıştığımız bu etkinlikte benim de SQL Server 2012 AlwaysOn ile Daha Fazla Yüksek Erişilebilirlik adlı 20 dakikalık bir otururumum olacak.

Etkinliğe katılmak için http://www.sqlserverlaunch.com/TUR/Home adresinden kayıt olabilirsiniz. Ayrıca etkinlik genelinde yapılacak oturumların detaylarına http://www.sqlserverlaunch.com/TUR/Agendaadresinden erişebilir katılmak istediğiniz oturumları outlook takviminize ekleyebilirsiniz.

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


SSDT makale serimin 5. makalesinde projelerin snapshot’ını nasıl oluşturacağımızı, bu snapshot’lar üzerinden yeni bir proje nasıl oluşturacağımızı ve snapshot’ları kullanarak Schema Compare işlemini nasıl yapabileceğimizi görüyor olacağız.

[more]

SSDT’de snapshot kullanımının SQL Server’da bulunan snapshot ile aynı mantıkta olduğunu söyleyebiliriz. Belli bir zamanda Schema’sal olarak proje veritabanının salt okunur halini kaydetme ihtiyacımız olabilir. Bunu snapshot ile yapabiliriz.

Örneğin development ortamı olarak kullandığımız projede birden fazla blok geliştirme yaparken her geliştirmeden sonra snapshot oluştururak geliştirme sonrası salt okunur bir kopya elde edebiliriz. Bu şekilde versiyonlama kontrolü yaparak geliştirme adımlarının her birinin bitiminde schema olarak elimizde nasıl bir veritabanın olduğunu saklayabiliriz.

Bugünkü makalemde SSDT üzerinden snapshot oluşturmayı, oluşturduğumuz bu snapshot’ları birbirleriyle ya da proje ile nasıl karşılaştırabileceğimizi ve son olarakta snapshot üzerinden yeni bir projeyi nasıl import edebileceğimizi görüyor olacağız.

Snapshot Oluşturmak

Yeni bir snapshot oluşturmak için projeye sağ tıklayıp gelen ekrandan Snapshot Project yazısını seçiyoruz.

1

Snapshot Project yazısına tıklandıktan sonra proje build olacak ve eğer projede herhangi bir hata yok ise snapshot oluşturulacaktır.

Eğer daha önce bir snapshot oluşturulmadıysa bu işlem sonucunda proje altında snapshot adında yeni bir klasör oluşacak ve bu klasörün altında da “<Project Name>_YYYYMMDD_HH-MM-SS.dacpac” formatında yeni bir snapshot dosyası oluşacaktır.

2

Bu ekrandan snapshot dosyasını silebilir ya da ismini değiştirebiliriz.

3

Snapshot’ı Import Etmek

Snapshot’ı projeye import ederek snapshot üzerinden yeni bir proje veritabanı oluşturabiliriz.

Bunun için ilk olarak DBProject2 adında yeni bir proje oluşturuyoruz ve bu projeye sağ tıklayarak gelen ekrandan Import bölümünün altından Data-tier Application (*.dacpac) yazısını seçiyoruz.

4

Gelen ekranda Data-tier yani snapshot dosya seçimini Browse butonunu kullanarak yapıyoruz.

5

Diğer ayarlamaları yaptıktan sonra start butonuna basıyoruz ve snapshot dosyası üzerinden import işlemine başlıyoruz.

6

İşlem tamamlandığında snapshot içerisinde bulunan objelerin (Table_1 vs.) DBProject2’ye import edildiğini görüyoruz.

7

Snapshot’ları Schema Compare Yapmak

Değişik zamanlarda almış olduğumuz snapshot’ları Schema Compare özelliği ile karşılaştırarak schema değişikliklerini kontrol edebiliriz. Aynı zamanda bir snapshot’ı proje ile ya da SQL Server üzerinde tanımlı bir veritabanı ile de karşılaştırabiliriz.

Bunun için snapshot üzerinde sağ tık yapıp gelen ekranda Schema Compare yazısını seçiyoruz.

8

Gelen ekranda seçtiğimiz snapshot’ı diğer snapshot’lar, projeler ya da SQL Server veritabanları ile karşılaştırabiliriz.

9

Schema Compare işlemi ile ilgili detaylara şu makalemden bakabilirsiniz.

Bugünkü SSDT makalemiz bu şekilde. Makale serimin bir sonraki makalesinde görüşmek üzere.

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 2012’nin çıkmasına sayılı gün kala Microsoft tarafından SQL Server’ın 1989 yılından beri aldığı yol ile alakalı güzel bir video hazırlanmış.

[more]

İlgili video’yu aşağıda bulabilirsiniz.

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


Azure’da host edilen veritabanlarının güvenliği konusunda daha önce şu makaleyi kaleme almıştım. “Trust Services” kod adıyla anılan yeni proje ise Azure’daki güvenliği bir adım daha ileriye götürmekte.

[more]

Microsoft Codename “Trust Services” uygulama seviyesinde çalışan bir şifreleme framework’üdür. Ana amacı Azure’da host edilen hassas dataları korumak olan Trust Services ile korunan dataları sadece izin verilen kullanıcılar görüntüleyebilir.

image

2 adımdan oluşan örnek akış şu şekilde çalışır;

  • Veriyi Azure’a publish eden kullanıcılar “Trust Services”’i kullanarak veriyi şifreli olarak Azure’a yerleştirirler.
  • Onaylanmış ve izin verilmiş kullanıcılar veriyi decrypt ederek okurlar. İzin verilen kullanıcılar hariç hiç bir kullanıcı şifrelenmiş veriye erişemez.

Akışın nasıl gerçekleştiği aşağıdaki video’da oldukça güzel bir şekilde anlatılmış.

http://www.microsoft.com/en-us/showcase/details.aspx?uuid=ceac947b-5fbf-4e09-8581-0c12a5c1759e

Bunun haricinde daha fazlası için aşağıdaki linke göz atabilirsiniz.

http://www.microsoft.com/en-us/sqlazurelabs/labs/trust-services.aspx

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


SSDT makale serimin 4. makalesinde veritabanı projesini SQL Server’da tanımlı bir veritabanı ile nasıl karşılaştırıp schema farklılıklarını bulabileceğimizi görüyor olacağız.

[more]

Bir önceki makalemde projede yaptığımız değişiklikleri nasıl publish edebileceğimizi görmüştük. Bu makalede ise publish’den önce veritabanları arasındaki farklılıkları nasıl karşılaştıracağımıza bakacağız.

Projeyi development ortamı, publish ettiğimiz yeri ise production ortamı olarak adlandırmıştık. Bu durumda developer’lar projede schema değişikliği yaparken aynı zamanda production ortamında da DBA’ler schema değişikliği yapmış olabilirler.

En nihayetinde publish esnasında 2 veritabanı arasında schema olarak farklılık oluşur. Dolayısıyla publish’ten önce bu değişikliklerin kontrol edilmesi ve conflict var ise çözümlenmesi gerekir.

SQL Server 2012’den önce schema compare işlemleri için Redgate, Idera gibi 3rd party tool’lar kullanılmaktaydı. Artık schema compare işlemini SQL Server 2012 ile ücretsiz olarak yapabiliriz.

Lafı fazla uzatmadan karşılaştırmayı nasıl yaptığımıza bakalım. Bunun için her 2 ortamda yani hem projede hem de SQL Server’da tanımlı veritabanında değişiklikler yapacağım ve daha sonra Schema Compare ile bu değişiklikleri nasıl bulacağımıza bakacağız.

İlk olarak bir önceki makalemde oluşturduğum tbl_SSDTSample isimli tabloma FaxNo isimli yeni bir kolon ekliyorum.

1

Daha sonra projemde bir değişiklik daha yapmak adına tbl_SSDTMPerson isimli yeni bir tablo oluşturuyorum. Yeni bir tablonun nasıl oluşturulacağını şu makalemden bakabilirsiniz.

2

Şimdi de production tarafı olarak varsaydığımız SQL Server’da tanımlı AdvenTureWorks veritabanında bulunan tbl_SSDTSample isimli tablodan NewTelephone isimli kolonu siliyorum.

3

Değişiklik ve eklemelerim tamam. Şimdi 2 veritabanı için Schema Compare yapacağım.

Bunun için projeye sağ tıklayıp Schema Compare yazısını tıklıyorum.

4

Gelen ekranda kaynak olarak projedeki veritabanını hedef olarakta SQL Server’da bulunan veritabanını seçiyorum ve Compare butonuna basıyorum.

5

Compare işlemi tamamlandığında karşıma 2 bölümden oluşan bir sonuç listesi çıkıyor.

6

Üst bölümde 2 veritabanı arasındaki farklı olan objeler listelenirken, alt bölümde seçili olan farklılığın detayı gözüküyor.

Örneğin ilk değişikliğe baktığımızda 2 veritabanında da tbl_SSDTSample isimli tablonun olduğunu ama bu 2 tablo arasında farklılık olduğunu görüyoruz. Farklılığın detayına 2. bölümde baktığımızda; FaxNo (projeye yeni eklediğimiz kolon) ve NewTelephone (SQL Server’daki AdventureWorks’ten sildiğimiz kolon) kolonlarının hedef veritabanında olmadığını görüyoruz.

7

Aynı şekilde değişikliğe sahip 2. objeye yani tbl_SSDTSample isimli objeye baktığımızda bu objenin kaynak veritabanında olduğunu ama hedef veritabanında olmadığını görüyoruz. Zaten Action kısmındaki “Add” ifadesi de bunu işaret eder durumda.

8

Üst tarafta bulunan butonlar sayesinde Schema Compare işleminin özelliklerini, gruplamasını, filtrelemesini yapabiliriz. Bunların çok detayına girmeyeceğim. Belki ilerde bu özelliklerin bazıları için ayrı bir makale yazarım.

Farklılıkları inceledikten sonra direk bu ekrandan farklılıkları eşitleyebiliriz. Bunun için üst tarafta bulunan Generate Script butonunu kullanarak değişikliklerin script’lerini oluşturabileceğimiz gibi Update butonunu kullanarak değişikliklerin direk eşitlenmesini sağlayabiliriz.

9

Update işleminden sonra 2 veritabanın birbirine eşitlendiğini tekrar Schema Compare yaparak kontrol edebiliriz.

Schema Compare özelliği SQL Server 2012’e ile bundle olarak gelen bir özellik. Daha önceki sürümlerde 3rd Party Tool’lar kullanarak yaptığımız schema karşılaştırma işlemini artık SQL Server 2012 ile beraber ücretsiz yapabiliriz.

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 bulunan Auto Growth (Otomatik Büyüme) özelliği sayesinde veritabanı dosyaları dolduğunda sistem tarafından otomatik olarak büyütülmektedir. Bu büyüme oransal ya da boyutsal olarak daha önceden belirlenebilir. Aynı zamanda dosyaların en fazla hangi boyuta kadar büyüyebileceği de ayarlanabilir.

[more]

Büyümelerin default değeri data dosyası için 1MB, log dosyaları için %10’dur. Değeri default haliyle bırakmak çoğu durumda performans sıkıntısı doğurmaktadır.

Peki bu değerleri kaç olarak ayarlamalıyız?

Bu konuda ilk söylemem gereken değerlerin kesinlikle % şeklinde bırakılmaması gerektiği. Bunun sebebi; düşük boyutlu dosyalarda sürekli auto growth yapma ihtiyacı doğacakken büyük boyutlu dosyalarda da tek seferde çok fazla büyüme yapılma ihtimalidir.

Örneğin dosyanız şu anda 10MB ve auto growth değeri %10 ise büyümeler 1MB’lık bloklar şeklinde yapılacak ve sürekli büyüme ihtiyacı ortaya çıkacaktır.

Tam tersini düşündüğümüzde yani dosyanın boyutunun 100GB olduğunu düşündüğümüzde, bu durumda da her büyüme için 10 GB’lık dosya allocate edilmeye çalışılacak. Bu da uzun sürecektir.

Dolayısıyla toparlayacak olursak; yüzdesel büyüme değerleri vermektense sabit değerler vermeliyiz. Peki bu sabit değer ne olmalı? 10MB, 100MB, 1GB, 10 GB?

Auto Growth değerinin çok büyük set edilmesi daha öncede söylediğim gibi işlemin yapıldığı anda beklemeye sebebiyet verecektir. Küçük olması da sürekli Auto Growth ihtiyacı anlamına gelmektedir. O yüzden bu konuda sunulan ilk best practice auto growth değerinin 1GB’dan büyük set edilmemesi.

Ben kendi ortamlarında data dosyaları için 1024MB ya da 512MB log dosyaları için de 512MB ya da 256MB set etmekteyim. Siz de bu değerleri gönül rahatlığıyla kullanabilirsiniz.

Bu arada otomatik büyümeleri gün içinde kendi hallerine bırakmaktansa mesai saatleri dışında çalışan bir job ile yapmak ta best practice’dir. Bu konu hakkında yazdığım aşağıdaki makaleyi okumanızı tavsiye ederim.

http://www.turgaysahtiyan.com/post/Veritabanc4b1-Otomatik-Buyumeleri-Kontrolunuz-Altc4b1nda-Olsun-(Database-Auto-Growth).aspx

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 page’lerdeki hataları ve bu hatalardan kaynaklı tamamlanamayan I/O işlemlerini loglamak için Page Verify özelliğini kullanılmaktadır. Page Verify özelliği None, TornPageDetection ve Checsum değerlerini alabilmektedir. Bu yazımda bu seçeneklerin neler olduklarını ve best practice olarak hangi seçeneğin seçilmesi gerektiğini inceliyor olacağız.

[more]

Page Verify özelliği veritabanı seviyesinde tanımlanan bir değerdir. TSQL ile şu şekilde değiştirilir;

ALTER DATABASE [dbDeneme] SET PAGE_VERIFY CHECKSUM WITH NO_WAIT

 

Aynı işlemi SSMS’de veritabanı özeliklerinden şu şekilde yapabiliriz.

image

Page Verify özelliğinin alabileceği değerler ve açıklamaları şu şekildedir;

  • CHECKSUM : Bu seçenek seçildiği zaman, ilgili page disk’e yazılırken SQL Server Database Engine tarafından bir checksum değeri hesaplanır ve bu değer page’in header’ına konulur. Page disk’ten okunmak istendiğinde checksum değeri tekrar hesaplanır ve daha önce page header’a yazılan değer ile karşılaştırılır.
  • TORN_PAGE_DETECTION : Bu seçenek seçildiği zaman, ilgili page disk’e yazılırken page’in içerisindeki her 512 byte’lık sector için 2-bit’lik bir değer page header’a yazılır. Page disk’ten okunduğunda daha önce page header’a yazılan torn bit’ler gerçek page sector bilgileri ile karşılaştırılır.
  • NONE : Bu seçenek seçildiği zaman page diskten okunurken Checksum veya Torn Page olarak herhangi bir karşılaştırma ve kontrol yapılmaz.

Checksum, Torn_Page_Detection’a oranla performansa daha az etkisi olduğu ve daha güvenli olduğu için tercih edilmektedir.

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


Bu yazımda bir okuyucumdan gelen soruyu ve cevabımı sizin de işinize yarayacağını düşündüğüm için paylaşmak istiyorum.

[more]

Soru şu şekilde;

Turgay Bey, Deneme amaçlı bir kullanıcı ekledim ve bu kullanıcıyı sitenizdeki "SQL Server–Bir Login’i User’ları ile Beraber Tamamen Silmek" makalenizdeki sp ile sildim. Burada bir problemim yok.Fakat bu kullanıcıyı silmeme rağmen Mangement Studio açılış ekranında hala o kullanıcıyı görebiliyorum.Aynı şekilde daha önce bağlandığım Server isimlerini de.Sizden öğrenmek istediğim bu açılış ekranındaki bilgileri nasıl silebilirim.Umarım sıkıntımı anlatabilmişimdir.Şimdiden teşekkür eder,iyi çalışmalar dilerim.Saygılarımla...

Okuyucumun yapmak istediği Management Studio bağlantı ekranında daha önceden kullandığımız sunucu adı ve kullanıcı bilgilerini silmek.

image

Bu bilgiler bilgisayarın document and settings kısmında saklanmaktadır. Tam dizin SQL Server versiyonuna ve işletim sisteminin versiyonuna göre değişmektedir. Örneğin win7+SQL Server 2008 kurulumlu benim makinamda dosyanın bulunduğu yer şu şekilde;

C:\Documents and Settings\[user]\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

Bu dosyayı sildikten sonra SSMS’i tekrar çalıştırırsanız eski sunucu adları ve kullanıcı adlarının silindiğini göreceksiniz.

Diğer işletim sistemi ve SQL Server versiyonu kombinasyonlarına göre dosyanın tutulduğu klasörler şu şekilde;

Windows Server 2003 ya da XP için

  • SQL Server Management Studio 2005:
    C:\Documents and Settings\[user]\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Windows Server 2008, Vista ya da windows 7 için

  • SQL Server Management Studio 2008:
    C:\Users\\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin
  • SQL Server Management Studio 2005:
    C:\Users\\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

 

İ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


Insert,Update,Delete işlemlerinde tablonun üzerinde bulunan her index’in update görme ihtimali vardır. Dolayısıyla tablo üzerinde ne kadar çok index var ise DML işlemlerinin performansı o kadar düşecektir.

Bugün sizler ile paylaşacağım script ile kolon sayısından daha fazla index’e sahip tabloları listeleyeceğiz.

[more]

Script’imiz şu şekilde

create table #tmp1 (DBName sysName, SchemaName sysName, ObjectName sysName, IndexCount int, ColumnCount int)

exec sp_msforeachdb 'use ?;
insert #tmp1
select ''?'' as DBName, SchemaName, ObjectName, IndexCount, count(*) as ColumnCount
from (
	select object_schema_name(object_id) as SchemaName
		,object_name(object_id) as ObjectName
		,count(*) as IndexCount		
		,object_id
	from sys.indexes i
	where ObjectProperty(object_id,''IsUserTable'')=1 and index_id>0 
	group by object_id
)xx	
join sys.columns c on c.object_id=xx.object_id
group by SchemaName, ObjectName, IndexCount
having IndexCount>count(*)
'

select * from #tmp1

drop table #tmp1

 

Örnek bir çıktı aşağıdaki gibi olacaktır.

image

Örneğin ilk tabloda 2 kolon varken bu tablo 3 adet index’e sahip.

Yukarıdaki script’in sizin ortamlarınızda kaç sonuç döndürdüğünü merak ediyorum. Bu script’i kendi ortamınızda çalıştırıp çıkan sonucu yorum olarak paylaşır mısınız?

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


SSDT makale serimin 3. makalesinde veritabanı projesinde yaptığımız değişiklikleri nasıl publish edebileceğimizi görüyor olacağız.

[more]

Kafanızda daha rahat canlanması açısından veritabanı projesini development ortamı, publish edeceğimiz yeri de production ortamı olarak düşünebiliriz. Bu makalede development ortamında yaptığımız veritabanı değişikliklerini production ortamına nasıl publish/deploy edebileceğimizi göreceğiz.

Örneklere geçmeden önce şu bilgiyi vermek istiyorum. SSDT ile publish işlemi SQL Server 2005 ve üzeri versiyonlara ve ayrıca SQL Azure’a yapılabilir. Hedef sunucunun versiyonunu projenin özellikleri sayfasından belirleyebiliriz.

0

Şimdi örneklere geçelim.

Yeni Tablo Eklemek

İlk olarak projede tbl_SSDTSample adında yeni bir tablo create ediyoruz.

1

Şimdi bu oluşturduğumuz tabloyu production’a publish edelim. Bunun için projeye sağ tıklayıp açılan ekrandan publish yazısını tıklıyoruz.

2

Gelen publish ekranını detaylı inceleyelim.

3

(1) Publish’i hangi instance’a ve veritabanına yapacağımızı edit butonu vasıtasıyla belirliyoruz.

(2) Advanced butonu vasıtasıyla detaylı publish seçeneklerini belirliyoruz.

4

(3) Ekranda yaptığımız değişiklikleri template olarak saklayabiliyoruz. Bu şekilde sürekli aynı sunucuya yaptığımız publish işlemlerinde tekrar tekrar aynı seçenekleri seçmektense daha önce kaydettiğimiz bir profile’ı seçerek işlemleri hızlandırabiliriz.

(4) Profile’ın projeye eklenip eklenmeyeceğini seçebiliriz.

(5) Generate Script butonu ile publish script’ini oluşturabiliriz.

5

(6) Ya da Publish butonu ile direk hedef sunucu üzerinde ilgili script’i çalıştırabiliriz.

İşlem tamamlandığında hedef sunucuda yeni oluşturduğumuz tablonun(tbl_SSDTSample) oluştuğunu görüyoruz.

6

Tabloya Kolon Eklemek

Şimdi tbl_SSDTSample tablosuna yeni bir kolon ekleyelim.

7

Normalde kolon eklemelerinde alter script’leri yazmamız gerekli. Oysa SSDT’de değişikliği yukarıda gördüğünüz gibi tablo üzerinde yapmamız yeterli. Create ya da alter komutu yapılacağını SSDT kendisi ayarlamakta.

Yukarıdaki değişikliği görmek için tekrar publish yaptığımızda alter script’inin oluşturulduğunu görüyoruz.

8

Kolonun Adını Değiştirmek

Az önce eklediğimiz Phone isimli kolonun adını Telephone yapalım.

9

Bu işlemi yani bir kolonun adını değiştirdiğimiz anda projenin altında refactorlog uzantılı bir dosya oluşmakta.

10

Bu dosya yapılan kolon değişikliklerinin detaylarını tutmakta ve SSDT bu dosya vasıtasıyla kolon adı değişikliklerini kontrol altına almakta.

11

Aynı kolonun adını bir daha değiştirirsek refactorlog uzantılı XML dosyasında yeni bir kayıt seti daha oluşacaktır.

12

Son olarak yaptığımız bu kolon değişikliklerini publish ettiğimizde hedef tabloda kolonun en son halini aldığını görüyoruz.

13

Bu makalemizde publish işleminin detaylarını gördük. Bir sonraki makalede Schema Compare özelliğini inceliyor olacağız.

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


Güvenlik açısından bir login’in şifresinin boş olması ya da login adı ile aynı olması bir sıkıntıdır. Bu makalemde paylaşacağım script’ler ile şifresi boş olan ya da şifresi login adı ile aynı olan SQL Login’leri bulabilirsiniz.

[more]

Daha önce pwdcompare fonksiyonunu incelemiştik. Konu önemli olduğu için tekrar detaylı bir script hazırlamak istedim.

Şifresi boş olan SQL Login'ler

--Şifresi boş olan SQL Login'ler
select  serverproperty('machinename') as 'Server Name'
	,isnull(serverproperty('instancename'),serverproperty('machinename')) as 'Instance Name'
    ,name as 'Login With Blank Password'
from master.sys.sql_logins
where pwdcompare('',password_hash)=1
order by name
option (maxdop 1)
go

 

Şifresi login adı ile aynı olan SQL Login'ler

--Şifresi login adı ile aynı olan SQL Login'ler
select serverproperty('machinename') as 'Server Name'
	,isnull(serverproperty('instancename'),serverproperty('machinename')) as 'Instance Name'
    ,name as 'Login With Password Same As Name'
from master.sys.sql_logins
where pwdcompare(name,password_hash) = 1
order by name
option (maxdop 1)

 

İ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


SSDT makale serimin 2.makalesinde hali hazırda kullanmakta olduğumuz bir veritabanını SSDT’ye proje olarak nasıl ekleyebileceğimizi görüyor olacağız.

[more]

İşlemi 2 farklı yerden yapabiliriz. Bunlardan ilki SQL Server Object Explorer.İkincisi ise Solution Explorer.

Ben bu makalemde SQL Server Object Explorer’ı kullanarak olan bir veritabanından yeni bir projenin nasıl oluşturulacağını göstereceğim.

SSDT’ye yeni bir proje olarak eklemek istediğimiz veritabanını sağ tıklayıp Create New Project yazısına tıklıyoruz.

1

Bu ekranda gördüğünüz TURGAY-PC\SS2012 benim makinamda kurulu olan bir SQL Server 2012 instance’ı.

Gelen ekranda Import seçeneklerini belirliyoruz.

2

Bazı önemli import seçeneklerine bakacak olursak;

(1) Proje’ye bir isim ve lokasyon belirliyoruz.

(2) Proje’yi olan bir solution’a proje olarak ekleyebilir ya da yeni bir solution create edebiliriz. Ben yeni bir solution create etmeyip projeyi bir önceki makalemde oluşturduğum solution’ın içine create ediyorum.

(3) Oluşturulacak olan objelerin ne şekilde klasörlere ayrılmasını istediğimizi belirliyoruz.

(4) Her bir klasörde bulunacak maksimum obje adedini belirliyoruz.

Import seçeneklerini belirledikten sonra Start butonuna basarak import işlemini başlatıyoruz.

3

Import işlemi tamamlandığında Finish’e basıyoruz.

4

Import işlemi bittiğinde Solution Explorer’a yeni bir proje açılmış olacaktır.

5

İstediğimiz bir objenin içeriğine Solution Explorer’dan bulup bakabiliriz.

6

Bu makalemizde hali hazırda kullanmakta olduğumuz bir veritabanını SSDT’ye proje olarak nasıl eklendiğini inceledik. Bir sonraki SSDT makalemde bu veritabanı üzerinde yaptığımız değişiklikleri nasıl publish edeceğimize bakıyor olacağız.

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


Bugün sizlerle yeni bir makale serisine başlayacağız. Bu makale serisinde SQL Server 2012 ile gelen yeni bir tool olan SQL Server Data Tools (SSDT) üzerine konuşuyor olacağız.

[more]

SSDT’nin ne olduğuna daha önce şu makalemde değinmiştim. Değinmiştim diyorum çünkü CTP1 zamanında yazdığım bu makaleden sonra baya bir değişiklik oldu.

Bu değişikliklerin tamamını ve SSDT’nin bize neler sunduğunu bu makale serisinde detaylı olarak inceleyeceğiz.

Serinin bugünkü makalesinde SSDT’ye giriş yapıp genel bir bakış atacağız.

SSDT Local DB İmkanı Sunar

SSDT ile gelen özelliklerden bahsedeğim ilki Local DB özelliği. Yani siz makinanızda SQL Server kurulumu yapmasanız dahi SSDT’nin Local DB özelliği sayesinde sanki makinada SQL Server servisleri kuruluymuş gibi veritabanı oluşturabilir ve yönetebilirsiniz. Bu sayede developer’lar makinalarına SQL Server kurmak zorunda kalmazlar.

Şimdi hem Local DB özelliğini görmek hem de SSDT’ye ilk adımı atmak için yeni bir veritabanı projesi başlatarak işlemlerimize başlayalım.

New Project ekranından SQL Server Template’leri altında bulunan SQL Server Database Project’i seçiyoruz ve projemize bir isim(örneğin DBProject1) verdikten sonra OK’e basarak projeyi create ediyoruz.

1

Projeyi oluşturduktan sonra sol tarafta bulunan SQL Server Object Explorer listesinde SQL Server bağlantılarımızı görüyoruz.

Bu listede bulunan localdb öğesini incelediğimizde bu öğe sanki bir SQL Server Instance’ı gibi gözüküyor. Ama daha öncede bahettiğim gibi bu gerçekte bir SQL Server servisi değil SSDT ile beraber gelen local DB özelliği.

localdb’nin altındaki objeleri genişlettiğimizde normal bir SQL Server Instance’ında olan her şeyin localdb’de de olduğunu görüyoruz.

2

Örneğin yeni bir tablo ya da yeni bir SP’yi bu ekrandan ekleyebilir ya da daha önce oluşturulmuş objeleri görüntüleyebiliriz.

3

4

SSDT Üzerinden Tablo Oluşturma Ya da Değiştirme

Bir önceki başlıkta gördüğümüz gibi obje ekleme işlemini SQL Server Object Explorer üzerinden yapabiliriz. Ya da bu işlemler için Solution Explorer ekranında bulunan Project’e sağ tıklayarak ta yapabiliriz.

5

Yeni bir tablo eklemek için Add menüsünden Table’ı seçelim.

6

Gelen ekrandan Table’ı seçip Add’e basıyoruz.

7

Gelen ekranda hem kod ile hem de design ekranını kullanarak tablo oluşturma işlemini yapabiliriz.

8

SSDT ile gelen bu ekranın en güzel özelliklerinden biri code ekranında yaptığımız bir değişikliğin aynı anda design ekranına yansıması. Aynı şekilde design ekranında yapılan değişikliğin de aynı anda code ekranına yansımasıdır.

Tanımlamaları yapıp tabloyu kaydediyoruz.

9

Kayıt işleminden sonra localDB’ye de bu tablonun açılması için Debug(F5) butonuna basıyoruz.

10

SQL Server Object Explorer’dan LocalDB’yi kontrol ettiğimizde tables kısmında dbo.Table1’i tablosunu görüyoruz.

11

Tabloya Address varchar(100) şeklinde yeni bir kolon tanımlayıp tekrar Debug yaparsak ilgili değişikliğin localDB’ye de yansıdığını görüyoruz.

12

13

SSDT’ye giriş makalemizin sonuna geldik. Bir sonraki makalede hali hazırda kullanmakta olduğumuz bir veritabanını SSDT’ye nasıl import edip çalışacağımızı göreceğiz.

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


Internet’ten download edilebilen ücretsiz SQL Server 2012 Upgrade Assistant tool’u ile SQL Server 2012’e upgrade etmeyi düşündüğünüz veritabanlarınızı upgrade etmeden önce analiz edebilirsiniz.

[more]

SQL Server 2012 Upgrade Assistant tool’u uygulama uyumluluğunu test ederek karşılaşılabilecek potansiyel fonksiyonel ve performans problemlerini bulur. Bu şekilde SQL Server 2012’ye upgrade etmeyi düşündüğünüz SQL Server 2008R2 ve önceki versiyonlara sahip veritabanlarınızı 2012 uyumluluk testinden geçirebilirsiniz.

Ücretsiz bir tool olan SQL Server 2012 Upgrade Assistant tool’unu aşağıdaki adresten indirip kurabilirsiniz.

http://www.scalabilityexperts.com/tools/downloads.html

Tool ile alakalı wiki sayfalarına ise şu adresten erişebilirsiniz.

http://social.technet.microsoft.com/wiki/contents/articles/sql-server-upgrade-assistant-tool-for-denali.aspx

 

İ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


Microsoft 26.01.2012’de System Center Advisor’ın release edildiğini anons etti. Cloud-Based bir hizmet olan System Center Advisor ile Windows ve SQL Server’larınızı analiz ettirerek potansiyel konfigurasyon problemlerinin ve performans problemlerinin önüne geçebilirsiniz.

[more]

System Center Advisor (SCA), Windows Azure üzerinde konuşlanan bulut tabanlı bir analiz aracıdır. SCA ile windows ve sql server sunucularınızı monitor edip hali hazırda olan ya da ileriye doğru çıkacak problemleri önceden görüp aksiyon alabilirsiniz.

Bulutta sizin adınıza tutulan alana local’inizde kurgulayacağınız bir gateway aracılığı ile server bilgilerinizi otomatik ve periyodik olarak yükleyebilirsiniz.

image

SCA bulut tabanlı bir hizmet olduğu için MS’e açtığınız case’lerde case’e bakan mühendis sizin bulutta tuttuğunuz verilere erişerek probleminize daha kısa sürede cevap bulabilir. Aynı zamanda siz de domain dışındaki bir noktadan sunucularınızın sağlığını kontrol edebilirsiniz.

SCA ile Windows Server 2008+, SQL Server 2008+ sunucuları monitor edebilirsiniz. Ne yazık ki Windows Server 2003 ve SQL Server 2005 desteği bulunmamakta.

26 ülkede hizmet vermeye başlayan SCA’ın hizmet verdiği ülkeler listesinde ne yazık ki Türkiye bulunmamakta. Ama SCA web sayfasından (www.systemcenteradvisor) açacağınız trial account ile 60 gün boyunca sunucularınızı ücretsiz olarak monitor ederek hizmeti test edebilirsiniz.

SCA ile ilgili aşağıdaki 3 dakikalık video’yu izlemenizi özellikle tavsiye ederim. Bu video ile SCA’nın neler yapabildiği konusunda fikir edinmiş olacaksınız.

http://www.microsoft.com/en-us/showcase/details.aspx?uuid=32e32209-71c4-43d2-b2ae-015598bf5b7d

Bulut tabanlı uygulamalar her geçen gün hayatımıza daha çok girmekte. SCA’da monitoring tarafındaki eksikliği gidermiş gibi gözüküyor.

Şahsi kanaatim tutacağı yönünde. Umarım yanılmam Smile

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