Orhan AKDOĞAN > İpucu

SQL Server 2008 R2 Güncellemeleri

SQL Server 2008 R2 güncelleştirmelerine önem vermenizi tavsiye ediyorum,
yaşanan pek çok sorunu güncelleştirme ile çözebilirsiniz.

SELECT @@Version

Sorgusu ile mevcut MSSQL versiyonunuzu öğrenebilirsiniz.

Aşağıdaki tabloda 13 Nisan itibari ile tüm build ler bulunmaktadır.

Build KB Article Release Tarihi Açıklama
10.50.1765.0 2489376  21 Şubat 2011 SQL Server 2008 R2 Cumulative Update 6
10.50.1753.0 2438347  20 Aralık 2010 SQL Server 2008 R2 Cumulative Update 5
10.50.1746.0 2345451  18 Ekim 2010 SQL Server 2008 R2 Cumulative Update 4
10.50.1734.0 2261464  16 Ağustos 2010 SQL Server 2008 R2 Cumulative Update 3
10.50.1720.0 2072493  21 Temmuz 2010 SQL Server 2008 R2 Cumulative Update 2
10.50.1702.0 981355  17 Mayıs 2010 SQL Server 2008 R2 Cumulative Update 1
10.50.1600.1 RTM   SQL Server 2008 R2 RTM
10.50.1450.3 RC0   SQL Server 2008 R2 Release Candidate 0

 

 

Build 10.50.1765.0 (cumulative update 6 )  –   http://support.microsoft.com/kb/2489376

Build 10.50.1753.0 (cumulative update 5 )  –   http://support.microsoft.com/kb/2438347

Build 10.50.1746.0 (cumulative update 4 )  –   http://support.microsoft.com/kb/2345451

Build 10.50.1734.0 (cumulative update 3 )  –   http://support.microsoft.com/kb/2261464

Build 10.50.1720.0 (cumulative update 2 )  –   http://support.microsoft.com/kb/2072493

Build 10.50.1702.0 (cumulative update 1 )  –   http://support.microsoft.com/kb/981355

Kaynak : http://support.microsoft.com/kb/981356

SQL Server 2012 – Code Snippet

 

SQL Server 2012 “Denali” ile gelen  yeni özelliklerden biride “Code Snippets” dır.

Önceki versiyonlarda bulunan Template Explorer özelliğinin geliştirilmiş hali olan bu özellik ile SQL cümlelerini taslak olarak saklayabiliyor ve daha sonra çağırıp kullanabiliyorsunuz. Özellikle Yazılım geliştiren arkadaşların oldukça işine yarayacak güzel bir özellik.

Intellisense destekli  Code Snippets özelliğinin Network desteği sayesinde, Snippet dosyalarını Ağ üzerinde saklayabilir, çalışma arkadaşlarınız ile ortak kullanabilirsiniz.

Kayıtlı Code Snippets ‘ı çağırmak için;
“Edit”-> “IntelliSense”  -> “Insert Snippet…” menü yolunu izleyebilir  veya
“Ctrl+K + X” tuş kombinasyonu ile çağırabilirsiniz.



Açılan Insert Snippet penceresinde kategori seçimi ve IntelliSense yardımıyla sistemde önceden tanımlı olan veya kendi oluşturduğunuz Kod parçasına kolayca ulaşabilirsiniz.


Açılan Snippet üzerinde;
Tab tuşu ile sonraki  “replacement”e ,
“Shift +Tab” ile de önceki “replacement”a  geçebiliyorsunuz.

Yeni Snippet eklemek için;
Aşağıdaki gibi bir Xml içeriği Gri renkli değerleri  girerek, dosya uzantısı  “.snippet “ olacak şekilde kaydedip,
“Tools” -> “Code Snippet Manager”  yolu ile açılan ekranda “Import” butonu içeri alabilir veya  “Add” butonu  ile dosyanın bulunduğu dizini Snippets dizini olarak atayabilirsiniz.

.snippet uzantılı XML dosyası içeriği örneği:

<?xml version=”1.0″ encoding=”utf-8″ ?>

<CodeSnippets xmlns=”http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet”>

<CodeSnippet Format=”1.0.0″> <Header><Title>ilkon</Title>

<Shortcut></Shortcut>

<Description>Tablonun ilk 10 kaydını getirir.</Description>

<Author>Orhan AKDOĞAN</Author>

<SnippetTypes>

<SnippetType>Expansion</SnippetType>

</SnippetTypes>

</Header>

<Snippet>

<Declarations>

<Literal>

<ID>tabloadi</ID>

<ToolTip>Tablo Adını Giriniz</ToolTip>

<Default>tabloadi</Default>

</Literal>

</Declarations>

<Code Language=”SQL”>

<![CDATA[Select TOP 10 * From $tabloadi$]]>

</Code>

</Snippet>

</CodeSnippet>

</CodeSnippets>

Not : Yukarıdaki örnekte de görüldüğü gibi Sorgu içerisindeki Replacement olarak ifade edilen değişebilir yerleri,  $değişken$ formatında olacak şekilde yazıyoruz ve her Replacement için “Literal” tag grubu eklememiz gerekiyor.
Yukarıdaki snippet a ait ekran görüntüleri:

Code Snippets oluşturma işini daha pratik hale getirmek için bir Add-on geliştirdim.
Bu uygulama ile .snippet uzantılı dosyayı en pratik şekilde oluşturabilirsiniz..

Aslında Snippet Generetor adında bir uygulama bulup kullanmaya başlamıştım fakat uygulamanın Replacament ekleme özelliğinin olmadığını görünce oturup yazayım dedim. Visual Studio vb. farklı bir uygulamaya ihtiyaç duymayan Replacement destekli ilk ve şu an için tek Snippet kaydedici Tool budur :)

Aşağıdaki Linkten indirebilirsiniz:
http://orhan.ws/download/SaveSnippet.rar

SQL Server 2012 “Denali” – Startup Parameters

SQL Server 2012 ile Servis parametrelerinin yapılandırılması daha pratik bir yapıya kavuşmuş;

başlangıç parametreleri

Listede master data ve log dosya pathleri ile error log
Varsayılan Başlangıç Parametreleri olarak bulunurlar.

-d master_file_path
-e error_log_path
-l master_log_path

Yeni Servis Başlangıç parametresi eklemek için;

1- SQL Server Configuration Manager uygulaması içerisinden “SQL Server Services” menüsüne girilir.

2- Sağ paneldeki service  -SQL Server (<instance_name>)- üzerinde sağ tıklayıp Properties denilir.

3- Startup Parameters tabı üzerinde, “Specify a startup parameter” kutusuna parametre girilir ve Add butonuna tıklanır.

4- Ok denilir ve Database Engine restart yapılır.

Kullanılan parametrelere örnek verecek olursak;

-x Parametresi bazı izleme özelliklerini devre dışı bırakır, nedir bunlar:
Performance monitor counters, “Keeping CPU time” ve “cache-hit ratio” istatistikleri, DBCC SQLPERF komutu,Dynamic Management Views vb.

-m Parametresi servisi Single User mode da açar.

Diğer parametreler hakkında detaylı bilgi için;
http://msdn.microsoft.com/en-us/library/ms190737.aspx

SQL Server 2012 – Management Studio – Moveable Query Panel

Harika bir özellik.
SQL Server 2012 de, Sorgu penceresini, Management Studio Ana ekranından çıkarabiliyoruz.
Aynı anda çok sorgu penceresiyle çalışan, özelliklede iki ekran kullanmaya alışmış kişiler için
çok fayda sağlayan bir özellik.

Aşağıda ikinci ekrana taşınmış bir denali sorgu paneli görünüyor.

SQL SERVER 2012 – Clipboard Ring – Ctrl + Shift + V

Visual Studio dan alışık olduğumuz Clipboard Ring özelliği, SQL Server 2012 (Denali)  Management Studio – Query Editor ile de karşınızda.

SQL SERVER 2012 de, Clipboard Ring özelliği ile “Ctrl + C” veya “Ctrl + X” ile Clipboard’a aldığınız değerler içerisinde,
Ctrl + Shift + V ile geriye doğru gidebiliyor ve Ctrl + V ile halkada gelinen noktayı yapıştırabiliyorsunuz.

SQL JOIN

SQL Server için, Inner Join, Left Join, Right Join, Full Outer Join
kullanımını tek bir image ile özetleyecek olursak;

SQL JOIN

SQL Server Denali ile gelen yeni System Objeleri

Bu yazıda Aaron Bertrand ın bloğunda gördüğüm, aynı zamanda iki veritabanının kıyaslanmasında da kullanabileceğimiz bir yöntemi paylaşmak istiyorum.

2008 R2 instance ‘ı ile SQL  Server Denali instance ındaki sistem objelerini, yazacağımız bir sorgu ile eşleştirip, yeni sistem objelerini, kaldırılmış ve değişikliğe uğramış system obje lerini tesbit edebiliriz.

SQL Server DENALI Yeni eklenen System Objeleri

SELECT
    [name] = N'sys.' + o.name,
    [type] = o.type_desc
FROM
    [master].sys.all_objects AS o
LEFT OUTER JOIN
    [ORHAN\2008R2].[master].sys.all_objects AS oo
ON
    o.name = oo.name
    AND o.[schema_id] = oo.[schema_id]
WHERE
    oo.name IS NULL
    AND o.[schema_id] = 4
ORDER BY
    o.type_desc,
    o.name;

  (daha&helliip;)

Saat, Gün, Ay ve Yıl şeklinde Dinamik Tarih Tablosu oluşturma

Uygulama geliştirirken, rapor sorgularında, raporların grafiksel sunumunda, tablomuzda kullanılmamış tarih birimlerini listelemek, rapora dahil etmek isteyebiliriz.

Aşağıdaki SQL function sayesinde belirlediğimiz iki tarih-saat arasındaki tüm saatleri, günleri, ayları ve yılları bir tablodan sonuç döndürür gibi listeyebilirsiniz.

Function ı oluşturmanız için gerekli create sorgusu:

CREATE Function [dbo].[TarihTablosu]
(
  @baslangic datetime,
  @bitis datetime,
  @tur char(5) --'saat', 'gün', 'ay', 'yıl' değerlerini alabilir.Default değer 'gün' dür.
)
Returns @Result Table
(
  [Tarih] datetime
)
As
Begin
  Declare @bugun datetime
  Set @bugun=@baslangic
  While @bugun<=@bitis
  Begin
    Insert Into @Result Values (@bugun)
    Select @bugun=
    Case
    When @tur='yıl' Then DateAdd(yy,1,@bugun)
    When @tur='ay' Then DateAdd(mm,1,@bugun)
    When @tur='saat' Then DateAdd(hh,1,@bugun)
    Else
      DateAdd(dd,1,@bugun)
    End
  End
  Return
End
GO

Kullanımı:

set dateformat dmy
Select tarih From dbo.TarihTablosu('01.01.2010','01.05.2010','ay')

Bu örnek sorgu 5 farklı ayı tarih sonucu şeklinde döndürecektir.

Result:

2010-01-01 00:00:00.000
2010-02-01 00:00:00.000
2010-03-01 00:00:00.000
2010-04-01 00:00:00.000
2010-05-01 00:00:00.000

Rapor sorgularınızda, kendi tablonuzu, bu function tablosuna left join olarak ilişkilendirerek
sonuç dönmeyen tarihlerinizi raporda 0 olarak gösterebilir ve daha pek çok amaçla bu functionu kullanabilirsiniz.

Bir örnekte saat ile ilgili yapalım:

set dateformat dmy
Select tarih From dbo.TarihTablosu('04.05.2010',GETDATE(),'saat')

Bu sorgu ilede bugün, şu ana kadar geçen saat dilimlerini listeliyoruz.

Result:

2010-05-04 00:00:00.000
2010-05-04 01:00:00.000
2010-05-04 02:00:00.000

Benzer şekilde günleri ve yılları tablo olarak döndürebilirsiniz.

 

Sql Server Collation Değiştirme

Database Collation Değiştirme:

Sql Server ‘da, bir veritabanının collation türünü “Turkish_CI_AS” e çevirmek için,

ALTER DATABASE [VeritabaniAdi] COLLATE Turkish_CI_AS

sorgusunu kullanabilirsiniz.Eğer “The database could not be exclusively locked to perform the operation” şeklinde bir hata alırsak, çok kullanıcılı veritabanlarında karşılaştığımız bu hatayı;

ALTER DATABASE [VeritabaniAdi] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [VeritabaniAdi] COLLATE Turkish_CI_AS
ALTER DATABASE [VeritabaniAdi] SET MULTI_USER

sorgusuyla çözebiliriz.

Server Collation Değiştirme:

Kurulum dizinimizdeki Setup.exe yi komut isteminde kullanarak kısa bir süre içerisinde bu işlemi tamamlayabiliriz.

ilk olarak tüm veritabanlarının yedeğini alalım ve tüm userların create cümleciklerini yedek de tutalım.

Yedeklerimiz tamamsa aşağıdaki içeriği .bat uzantılı dosya haline getirip çalıştırarak işlemi tamamlayalım.

Artık Server Collation yanında system veritabanlarının da (master,model,msdb ve temdb) Collation değeri değişmiş olacaktır.İşlem sonrasında tüm Kullanıcı veritabanları kendiliğinden detach olur, yeniden attach edebilirsiniz.

SQL Server 2005 için:

c:
cd \
cd "C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap"
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD="yenisifre" SQLCOLLATION=TURKISH_CI_AS

SQL Server 2008 için:

c:
cd \
cd "C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release"
setup.exe /q /ACTION=RebuildDatabase /INSTANCENAME=MSSQLSERVER /SAPWD="yenisifre" / SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" /SqlCollation=TURKISH_CI_AS

İşlem sonucunda her hangi bir hata söz konusu olur ise hata detayını ,
“C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log” dizinindeki,
Summary.txt dosyasından gözlemleyebilirsiniz.

SQL Server 2008 Replace

SQL Server 2008 öncesinde, Replace fonksiyonunun üç parametresinin de sağındaki boşluklar otomatik olarak siliniyordu. SQL Server 2008′ de bu durum değişti. Artık boşluklar otomatik olarak silinmiyor.
Aynı şekilde kullanmak istiyorsak Rtrim fonksiyonundan yardım almalıyız,

Replace(rtrim(param1), rtrim(param2), rtrim(param3))