Categories
Database SQL Server

TSQL Script to Take Database Offline and Take Database Online Microsoft SQL Server 2014

DBIf You wish to take a Microsoft SQL Server 2014 database offline or online, You need to use the GUI . GUI path is Tasks-Take Online or Take Offline.

On the other hand you can do it as a following sql scripts

Firstly, you can take offline

USE master
GO
ALTER DATABASE DB_Name
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

Secondly, you can take online

USE master
GO
ALTER DATABASE DB_Name
SET ONLINE
GO

Categories
Database SQL Server

CASE WHEN

DBSql Server da kullanışlı bir fonksiyon olan Case fonksiyonu ile ilgili küçük bir örnek yapacağım. tblmusteri adinda bir table`ımız olduğunu ve bunun da id  (auotincrement), musterino , isim , adress ve il kolonlarının bulunduğunu düşünelim, il kolonu integer türünde ve biz bu kolonun varchar yani string olarak değerini görmek istiyoruz. İşte burda Case bize çok uygun bir yapı sağlar.

 select * from tblmusteri  WITH (NOLOCK)    dediğimizde bizim karşımıza gelecek data aşağıdaki gibidir.

1 1001 Erkan Sezer Kadıkoy 34

7 1002 Mehmet Dal Ermenek 70

3 1003 Aynur Guney Ermenek 70

4 1004 Muhammet Ali Hancer Cekmekoy 34

5 1005 Yavuz Selim Keresteci Goztepe 34

Peki ben bu il kolonunu nasil string yaparım?  Select ifademi aşağıdaki gibi değiştirirsem bana ilisim isminde bir kolon daha gelecektir ve burda da il isimlerinin yazdığını göreceğiz. Peki select ifademde ne yaptığımı kısaca anlatacak olursak; gelen il değerine bakıldı ve bu değer 34 ise İstanbul , 70 ise Karaman olarak ilisim kolonuna getirildi. Bu yapı çok kullanışlıdır ve bize çoğu zaman çok kısa çözüm yolları sunar. Select ifademiz ve gelen yeni data ağağıdaki gibidir.

SELECT *

CASE il 

WHEN `34` THEN `İstanbul` 

WHEN `70` THEN `Karaman` END 

AS ilisim

FROM tblmusteri WITH (NOLOCK)   

1 1001   Erkan Sezer   Kadıkoy   34  İstanbul
7 1002   Mehmet Dal   Ermenek   70   Karaman
3 1003   Aynur Guney   Ermenek   70   Karaman
4 1004   Muhammet Ali Hancer   Cekmekoy   34   İstanbul
5 1005   Yavuz Selim Keresteci   Goztepe   34   İstanbul

Categories
Database SQL Server

IF EXISTS Kontrolu

DBSql Server de IF EXISTS ifadesinin nasil kullanilabilecegini anlatacagim. Ornegin table1 isminde bir table var ve bundan da id kolonunuz olsun, bu kolonda 1 ve 2 degerlerinin oldugunu dusunuyoruz. Simdi bu table1 tableinin id kolonunun degerine gore ekrana kayit var veya kayit yok yazdiracagiz.

Tabiki siz bu yazdirma islemi yerine sql de istediginiz islemleri yapacaksiniz 🙂 Asagidaki ifadede yukarda da belirttigim gibi id degerinin 1 oldugu satir var ve bu yuzden ekrana “Kayit Var” yazacaktir.

IF EXISTS ile bu ifadeye bakiyorum ve 1 degeri oldugu icin ilk BEGIN END bloguna girerek istedigim islemleri (update , delete , insert veya transaction) veya da ELSE blogunda gerekli islemleri yaptiririm.

IF EXISTS(select * from dbo.table1 where id = 1 )
BEGIN
SELECT `Kayit Var`
END
ELSE
BEGIN
SELECT `Kayit Yok`
END

Categories
Database SQL Server

Sql de Database Ismini Degistirmek

DBCok da kullanilmayan bir durumdur ama yine de burda yazmak istedim. Sql Server da database imiz var ve bunun ismini degistirmek istedik bunu asagidaki sekilde bir sp call ederek rahat bir sekilde yapabiliriz.

EXEC sp_renamedb `erkan`, `sezer`Burda dikkat etmemiz gereken ilk parametre database ismi ikincisi ise isimlendirmek istedigimiz database in yeni ismidir.

Categories
Database SQL Server

T-SQL de Bolme Islemi

DBT-Sql de bolme islemi yaparken dikkat etmemiz gereken kucuk bir noktadan bahsedecegim.

Bolme isleminde bolunenin deger turu float ceya decimal olmalidir . Asagidaki ornektede goreceginiz gibi bu deger turu float veya decimal degilse sonuclar yanlis cikacak ve ozellikle bankacilik gibi muhasebe islemlerinin cok oldugu sektorlerde bize buyuk zararlar verecektir.

Asagidaki ornekte gordugunuz gibi bize ilk donen select 0 olurken convert ile float turune cast edilen bolunen sonucunda bize 0.75 degeri donecektir.

SELECT 3/4;
SELECT CONVERT(FLOAT, 3) / 4

Ayni sekilde convert ile ayni islemi yapan CAST fonksiyonu ile de bu islemi gerceklestirebiliriz. Buda da FLOAT a degil de DECIMAL a cat ediyoruz bolunen degeri.

SELECT 3/4;
SELECT CAST(3 AS DECIMAL) / 4

Ikinci select sonucu decimal e cast ettigimiz icin boluneni bize 0.750000 degeri yani yukardaki ile ayni deger donecektir.

Categories
Database SQL Server

SQL Server` da Temp Table

DBSql Server kullanirken bazi bilgiler uzerinde oynama yapmak isteriz. Ornegin select attigimiz table dan gelen kayitlar uzerinde null degerler5 olabilir , yeni bir kolon eklemek isteyebiliriz veya bazi kolonlardaki degerleri update etmek isimize gelecektir.

Buna benzer durumlardan dolayi sql de bulunan table dan cektigimiz kayitlari temp table a yazdirabiliriz. Ben sadece 3 kaydi olan basit bir table i temp table a yazdirmayi ve burdan degerleri select etmeyi, son olarak da temp table i tumden silmeyi asagidaki gibi gosterecegim.

Table ismimiz kullanici: Select attigimizda asagiki gibi degerleri gorecegiz.

KullaniciAdi AdSoayd Adres

erkansezer Erkan Sezer Sahrayicedit

yavuzselim Yavuz Selim Keresteci Goztepe

muhammetali Muhammet Ali Hancer Cekmekoy

Daha sonra bunlari asagidaki gibi #tmp isimli bir table a yazdiririz , select attgimizda yine ayni degerleri gorecegiz.

SELECT * INTO #tmp FROM kullanici 

Burda #tmp isimle table olusturuldu ve kullanici table indaki kayitlar buraya insert edildi.

Bu temp table a su sekilde select atabiliriz : SELECT * FROM #tmp

Bu select ile yukardaki select ayni olacaktir. Son olarakda islemlerimiz bittiginde bu temp table i asagidaki gibi drop etmemiz gerekir.

DROP TABLE #tmp

Categories
Database SQL Server

Sql`de Calisan Exe`nin Ismi

DBDatabase olarak Sql Server`i kullanan ve birden fazla sayida exemiz olduğunu varsayalım. Hangi exe`de çalıştığımızı bulmak için genellikle SQL`e strored procedure ile parametre geçiyoruz. Bu iş hem zahmetli hemde maliyetli olmaktadır, bunu çok daha efektik ve kolay olarak yapabiliriz.

Yapacagimiz tek sey : SQL de hangi exenin calistigini bulmak,bunun icin Application name`ini bulursak işlerimiz çok kolaylasacaktir. Bunu da asagidaki kod blogu ile rahat sekilde bulabilmekteyiz.

SELECT APP_NAME()

If  donguleri kullanarak bu bizim icin cok büyük kolayliklar saglayacaktir.

IF APP_NAME()=`Exe nin İsmi`

BEGIN

   Yapmak istediginiz islem

END

Categories
Database SQL Server

Sql Server 2008 Intellisense

DBVisual Studio idesi ile kod yazarken bize buyuk kolayliklar salayan Intellisense ozelligi Sql Server 2008 ile birlikte T Sql yazarken bize sunuldu. Bunda onceki versiyonlarda third party uygulamalarla kullandigimiz intellisense ozelligi bize buyuk kolayliklar saglayacak.

Select * from ifadesinde Ctrl + Space tusu ile table isimlerini artik otomatik olarak gorebilecek ve istedigimiz table ismine daha kolay ulasacagiz. Bircok karmasikligi cozecek olan bu durum table isimlerini de tam olarak bilmek gerektirmeyecek. Ayrica join ifadelerinde otomatik olarak ad siralamasi yapacagi icin , bizi bircok hatadan da kurtaracak

Categories
Database SQL Server

Sql`de Table`a Kolon Eklemek / Değiştirmek

DBSql Server`da tablelar oluştururken genellikle hep wizardları kullanırız Bu bizim için büyük kolaylıklar sağlar fakat büyük bir projede olduğumuzu düşünürsek her seferinde tek tek tablelari bulmakla uğraşabailiriz.

Daha da önemlisi dba bize tableları alter edecek yetki vermemişse ne yaparız? dba`e bu sql scriptini göndeririz. Ben burda oluşturulan tabloya kolon eklemeyi ve var olan bir kolonun değiştirilmesini anlatacağım.

ALTER TABLE Table_Ismi ADD Kolon_Ismi VARCHAR(40)

Burda Varchar tipinde ve 40 karakter uzunluğunda bir kolon ekliyoruz. Tabiki bunu istediğiniz kadar artırabilirsiniz.

Kolon üzerinde değişikliği ise şu şekilde yapabiliriz:

ALTER TABLE Table_Ismi ALTER Column Kolon_Ismi VARCHAR(38) 

Categories
Database SQL Server

Sql Serverda Bazı Fonksiyonlar – 2

DBSql Server` da birkaç yeni fonksiyonu anlatacağım.

CHARINDEX : İlk parametre olarak aldığı stringi verilen karakterlerin içinde kaçıncı harf olduğunu gösterir. Örnek vermek gerekirse aşağıdaki Select sonucu bize dönen değer 18 olacaktır. Aradığımız karakter `?` dir ve bu da 18. karakterdir.

SELECT  CHARINDEX(`?` , `Bakalım Olacak mı? Tabiki Olacak `)

SUBSTRING: Birçok yerde kullandığımız gibi substring fonksiyonu Sql`de de karşımıza işimizi çok kolaylaştıracak şekilde çıkmaktadır.

Substring ile strind değerinin kaçıncı paramtersinden başlayacağımızı ve kaç karakter alacağımızı vermektedir. Substring işlerimizi bazen çok kolaylaştırmaktadır. Basit bir örnek verecek olursak:

SELECT SUBSTRING(`Erkan Sezer`, 7,5) , bize verilen string değeri `Erkan Sezer` dir ve bizden istenen de 7. karakterden başlayarak 5 karakter almamızdır. Bu select değeri bize `Sezer` stringinigeir döndürecektir.