Orhan AKDOĞAN > SQL Server

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 2011 Denali Kurulum Yenilikleri

SQL Server’ın kod adı “Denali” olan yeni sürümü ile gelen kurulum değişikleri aşağıdaki gibidir.

SQL Server Multi-Subnet Clustering

Denali ile Farklı alt ağlarda kümelenmiş düğümleri kullanarak SQL Server failover cluster yapılandırabilirsiniz.

 

 SQL Server Multi-Subnet Clustering

Kurulum gereksinimleri

SQL Server Denali kurulum için, Power Shell 2.0, .NET 3.5 SP1 ve .NET 4.0 paketlerine ihtiyaç duyar.

Bunlardan .NET 4.0 haricindeki gereksinimler kurulum paketi tarafından yüklenecektir.
.NET 3.5 SP1 sürümü Vista ve Server 2008 de gerekli olmaktadır.

Windows 7 SP1 ve Windows Server 2008 SP1 de dahili olarak bulunan Microsoft .NET Framework 4 ü aşağıdaki linkten yükleyebilirsiniz;
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en

TSQL – Birleşik metinden parse

Birleşik metin içeren bir alandan belirli bir aralığı parse etmek için aşağıdaki örneği kullanabilirsiniz.

Declare @baslangic varchar(30)= 'adsoyad :'; --sağa sola boşluk koymayalım
Declare @bitis varchar(30)= '; dogumgun :';  --sağa sola boşluk koymayalım
--
Set @baslangic='%'+@baslangic+'%';
Set @bitis='%'+@bitis+'%';
Select BirlesikMetin,ltrim(rtrim(substring(BirlesikMetin,(PATINDEX(@baslangic, BirlesikMetin)+LEN(@baslangic)-2),PATINDEX(@bitis, BirlesikMetin)-(PATINDEX(@baslangic, BirlesikMetin)+LEN(@baslangic)-2))))
From Tablom
Where  PATINDEX(@bitis, BirlesikMetin)-(PATINDEX(@baslangic, BirlesikMetin)+LEN(@baslangic)-2)>0

Alan : Adsoyad : Orhan AKDOĞAN ; dogumgun : 13
Sonuç : “Orhan AKDOĞAN” sonucunu döndürecektir.

TSQL – Birleşik adı soyadı alanını, sql ile ad ve soyad olarak ayırmak

Eğer elinizde birleşik şekilde tek bir kolonda ad ve soyad
bulunuyor ve bunları ayırmak istiyorsanız,
bu işlem için aşağıdaki sorgu size yardımcı olacaktır.
(iki isimli olma durumu dikkate alınarak yazılmıştır.)

Select adsoyad --Birleşik Hali
,left(adsoyad,len(adsoyad)+1-charindex(' ',reverse(rtrim(adsoyad)))-1)  --Adı
,right(adsoyad,charindex(' ',reverse(rtrim(adsoyad)))-1)                --Soyadı
From CV
Where charindex(' ',reverse(rtrim(adsoyad)))>0 --Soyadı Boş olmayanlar (hata verip durmaması için.)

Eğer Update etmek isterseniz;

Update CV set ad=left(adsoyad,len(adsoyad)+1-charindex(' ',reverse(rtrim(adsoyad)))-1),
			  soyad=right(adsoyad,charindex(' ',reverse(rtrim(adsoyad)))-1)			
Where charindex(' ',reverse(rtrim(adsoyad)))>0

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;)

SQL SERVER 2011

Microsoft SQL Server 2011 olarak çıkması beklenen,
SQL Server’ın kod adı “Denali” olan yeni sürümünün
CTP 1 (Community Technology Preview 1) versiyonu indirebilir durumda.

Download Linki:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9

Detaylar:
http://www.microsoft.com/sqlserver/en/us/product-info/future-editions.aspx

Books Online:
http://msdn.microsoft.com/en-us/library/ms130214(v=SQL.110).aspx

Bulk Insert

Bulk Insert , metin Dosyasındaki veriyi, SQL Server da bir tabloya aktarmak amacı ile kullandığımız T-SQL deyimidir. 

(daha&helliip;)

SQLPASS

SQL Server Günlüğüm Orhan AKDOĞAN, En iyi SQL Server Community lerinden olan SQLPASS Blog listesine girmiştir.

Teşekkürler SQLPASS.

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.