SQL SERVER Computed Column Özelliği

sql_server_large_logo

SQL Server‘da Computed Column özelliği tabloda var olan verileri kullanarak yeni bir kolon türetmek için kullanılır. Örneğin; Siparişlerin tutulduğu bir tablo olduğunu varsayalım. Tablomuzda adet ve ürün tutarı tutulmuş olsun. Biz tablomuzda toplam tutar alanına ihtiyacımız olduğunu varsayacak olursak; Toplam Tutar=Adet*Ürün Tutarı olarak hesaplanacaktır.
İhtiyacımız olan alanı hesaplamak için iki farklı yöntem kullanabiliriz. İlk yöntemde “toptam tutar” kolonunu normal bir tabloya kolon ekler gibi ekledikten sonra uygulama katmanında “toplam tutar” değerini hesaplatıp tabloya gönderebiliriz. İkinci yöntemde ise SQL SERVER tarafında kullanabileceğimiz güzel bir özellik olan Computed (Hesaplanmış) kolon özelliğini kullanarak her kayıt eklendiğinde SQL Server tarafından otomatik olarak hesaplanıp bu kolona değeri işleyebiliriz. Konuyu örnek üzerinden inceleyelim.
Sipariş bilgilerinin tutulacağı bir tablo oluşturalım;


CREATE TABLE CustomerOrders
(
OrderID INT IDENTITY(1,1),
CustomerID INT,
Qty INT,
Price DECIMAL(18,2)
)

Yukarıdaki script yardımı ile tablomuzu oluşturmuş olduk. Tablomuza toplam tutar bilgisinin Computed Column olarak tutulması için “Amount” isminde hesaplanmış kolon tanımlıyoruz.

ALTER TABLE CustomerOrders
ADD Amount AS Price*Qty

Yukarıdaki t-sql sorgusunda da görüldüğü gibi tabloya normal bir kolon dahil eder gibi kullanıyoruz ancak veri tipi belirtmek yerine “AS” ifadesi ile hesaplama için kullanılacak formülü belirtiyoruz.

Dikkat: SQL Server’da Computed Column ile oluşturulan kolonlar fiziksel olarak diskte yer kaplamazlar. Ancak hesaplanmış kolonların diskte yer tutmasını fiziksel olarak diske yazılmasını istiyorsanız; “PERSISTED” ifadesini kullabilirsiniz. Yukarıdaki sorguda “PERSISTED” kullanılmadığı için hesaplanan kolon diskte yer tutmayacaktır. “PERSISTED” seçeneğini kullanmak isterseniz sorguyu aşağıdaki gibi düzenlemeniz gerekmektedir.


ALTER TABLE CustomerOrders
ADD Amount AS Price*Qty PERSISTED

computed_column

 

Computed Column olarak oluşturulan alanlar yukarıdaki resimde görüldüğün gibi normal kolon simgesi ile birlikte hesap makinesi simgesi ile temsil edilmektedir.

PERSISTED özelliğini ne zaman kullanmalıyım? diye bir soru aklınıza gelebilir. Eğer verilerinizin diske yazılmasını istiyorsanız ve hesaplanmış kolon üzerinde INDEX tanımlamanız gerekiyorsa “persisted” özelliğini kullanmalısınız.


INSERT INTO CustomerOrders VALUES (1,3,24.50),(1,5,25),(2,2,100)

Computed Column özelliğini test etmek için yukarıdaki script yardımı ile tabloma 3 tane kayıt ekliyorum.

computed_column_result

Eklemiş olduğum kayıtları sorguladığımda “Amount” kolonundaki verilerin benim belirttiğim formüldeki gibi hesaplandığını görüyorum.

Faydalı olması dileğiyle.

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

SQL Server – Tablolarda Index Tanımlı Olup Olmadığını Sorgulamak

sqlserver2016

SQL Server’da tablolarda oluşturulan Index‘lerin (Clustered/Non-Clustered) bazı durumlarda T-SQL yardımı ile sorgulanıp var olup olmadıkları bilgisine ihtiyacımız olabilir. Tablolarda oluşturulan index‘lerin nasıl t-sql yardımı ile var olup olmadığına iki farklı yöntem ile gözatalım.

Ben Microsoft‘un örnek veritabanı olan AdventureWorks veritabanında bulunan Production.Product tablosundaki ismini belirtiğim index’lerin var olup olmadığına bakıyor olacağım.Index_have_table

1. Yöntem : Catalog Views yardımı ile index’in tanımlı olup olmadığını sorgulamak

sys.indexes catalog view yardımı ile Clustered ve Non-Clustered index bilgisini sorgulayabiliriz. Ben bu örneğimde Production.Product tablosunda tanımlı olan “PK_Product_ProductID” isimli Clustered index’in t-sql yardımı ile sorgulanmasına bakıyor olacağım.


IF EXISTS (
SELECT 1 FROM sys.indexes I
JOIN sys.tables T ON I.object_id=T.object_id
JOIN sys.schemas S ON S.schema_id=T.schema_id
WHERE I.Name='PK_Product_ProductID' --İndex Adı
AND T.Name='Product' -- Tablo Adı
AND S.Name='Production' -- Şema Adı
)
BEGIN
PRINT 'Index Mevcut'
END
ELSE
BEGIN
PRINT 'Index Mevcut Değil'
END

indexes_find_index_by_name

2. Yöntem : sys.indexes Catalog View ile birlikte OBJECT_ID fonksiyonu kullanımı

Bu yöntemde yine Production.Product tablosunda bulunan “PK_Product_ProductID” isimli Clustered Index’in var olup olmadığını sorgulayacağız. Bu sefer sys.indexes view’i ile birlikte OBJECT_ID fonksiyonunu da kullanıyoruz.


IF EXISTS (
SELECT 1 FROM sys.indexes
WHERE Name='PK_Product_ProductID' --İndex Adı
AND object_id=OBJECT_ID('Production.Product')
)
BEGIN
PRINT 'Index Mevcut'
END
ELSE
BEGIN
PRINT 'Index Mevcut Değil'
END

index_find_by_object_id

Bazı senaryolarda ihtiyacınız olacak olan bu sorgulama yöntemlerinin faydalı olması dileğiyle. Sizlerinde kullanmış olduğu farklı yöntemler var ise yorum panelinden paylaşabilirsiniz.

 

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

SQL SERVER 2016 – STRING_SPLIT Fonksiyonu

sqlserver2016

SQL SERVER 2016 ile birlikte gelen yeni özelliklerden birisi de STRING_SPLIT fonksiyonudur. Genelde veritabanı üzerinde çalışmalar yapanların kullandığı custom string split fonksiyonu vardır. SQL SERVER 2016 ile birlikte kullanımımıza sunulan STRING_SPLIT fonksiyonu ile custom split fonksiyonu oluşturmamıza gerek kalmıyor. Biraz geçte olsa sık kullanılan bir fonksiyonun varsayılan olarak SQL SERVER ile birlikte kullanıma sunulmasına sevindim. SQL SERVER 2016 ile birlikte gelen bu yeni fonksiyonun kullanımını inceleyelim.

SYNTAX: STRING_SPLIT(string,seperator)

String parametresinde kullanılabilecek veri türleri : CHAR,VARCHAR,NVARCHAR,NCHAR

Seperator parametresinde kullanılabilecek veri türleri: CHAR(1),VARCHAR(1),NVARCHAR(1),NCHAR(1)

Not: Seperator parametresinde ayraç olarak gelebilecek değer bir karakter olmak zorundadır.

Fonksiyon sonucunda bize tek kolonlu bir tablo döndürmektedir. Şimdi örnek ile fonksiyonu inceleyelim.

Öncelikle “,” (virgül) ile birbirinden ayrılacak alanları nasıl ayıracağımıza bakalım;


SELECT * FROM STRING_SPLIT('Mesut,Güneş,DBA',',')

string_split

Aynı örneği bu sefer değişken kullanarak yapalım;


DECLARE @str VARCHAR(20)='Mesut,Güneş,DBA'
,@separator CHAR(1)=','
SELECT * FROM STRING_SPLIT(@str,@separator)

sql_server_2016

SQL Server 2016 ile birlikte gelen String_Split fonksiyonu sayesinde, split işlemlerinizi özel bir fonksiyon oluşturmanıza gerek kalmadan rahatça kullanabilirsiniz.

 

Not: Bu örnek SQL Server 2016 RC3 versiyonu ile birlikte hazırlanmıştır.

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

SQL Server 2016 – GZIP COMPRESS ve DECOMPRESS Fonksiyonları

sqlserver2016

COMPRESS ve DECOMPRESS SQL Server 2016 ile birlikte gelen yeni fonksiyonlardır. Fonksiyon isimlerinde de anlaşılacağı üzere sıkıştırma ve çözme (sıkıştırılan veriyi açma) fonksiyonlarıdır. Bu makalede her iki fonksiyonun kullanımı inceleyeceğiz.

COMPRESS fonksiyonu kendisine verilen veriyi GZIP algoritması ile sıkıştırarak geriye binary veri türü olan Varbinary(max) veri türü dönüşü yapmaktadır.

DECOMPRESS fonksiyonu GZIP algoritması ile sıkıştırılmış veriyi çözmek/açmak için kullanılır. GZIP algoritması ile sıkıştırılan veri DECOMPRESS fonksiyonu ile geri dönüştürme işlemi sonrası yine COMPRESS fonksiyonunda olduğu gibi Varbinary(max) veri türü dönüşü yapmaktadır. DECOMPRESS edilen veriyi ilk haline, sıkıştırılmadan önceki haline dönüştürmek için “explicit conversion“,”Cast” işlemi yapmamız gerekiyor.
COMPRESS ve DECOMPRESS fonksiyonları standart GZIP algoritmasını kullanmaktadır. Uygulama katmanında veriyi sıkıştırıp SQL Server’a gönderebilir, Sql Server 2016 üzerinde sıkıştırılan veri direk veritabanına yazılabilir veya veri decompress edilip veritabanına yazılabilir. Aynı şekilde Uygulama katmanına sql server üzerinden gelen compress edilmiş veri uygulama katmanı üzerinden decompress edilebilir.

Şimdi örnekler üzerinden bu iki fonksiyonun kullanımına geçelim.


SELECT COMPRESS('Mesut Güneş')

sql_server_compress

Şimdi sıkıştırılan veriyi geri dönüştürmek için DECOMPRESS fonksiyonumuzu kullanalım.


SELECT DECOMPRESS(0x1F8B0800000000000400F34D2D2E2D5170FF9397FA0F004F3025550B000000)

sql_server_Decompress

Sorgu sonucundan da anlaşılacağı gibi DECOMPRESS fonksiyonu da bize binary data döndürdü. Gerçek verimize ulaşmak için sorgu çıktısındaki Binary veriyi cast etmemiz gerekiyor.


SELECT CAST(0x4D657375742047FC6E65FE AS VARCHAR(MAX))

sql_server_cast

Sorgu çıktısında görüldüğü üzere decompress fonksiyonundan gelen verimizi cast işlemin tabi tuttuktan sonra sıkıştırılmamış değerine ulaştık.

Şimdi bir örnek daha yapalım ve makalemizi bitirelim. Bu örnek sorguda tek Select ifadesinde hem Compress hem Decompress fonksiyonlarının kullanımına gözatalım.


DECLARE @CompressValue VARCHAR(MAX) ='MESUT GÜNEŞ'

SELECT @CompressValue AS CompressValue,
COMPRESS(@CompressValue) AS CompressedValue,
DECOMPRESS(COMPRESS(@CompressValue)) AS DeCompressedValue,
CAST(DECOMPRESS(COMPRESS(@CompressValue)) AS VARCHAR(MAX)) AS CASTValue

all_selecct

 

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

SQL Server 2016 – DATEDIFF_BIG Fonksiyonu

sqlserver2016

SQL Server 2016 ile birlikte gelen yeni fonksiyonlardan birisi de DATEDIFF_BIG fonksiyonudur. İki tarih arasındaki farkı bigint türünde geriye döndürür. DATEDIFF fonksiyonu geriye int türünde değer döndüğünden dolayı int türünden daha büyük değerlere ihtiyaç olması durumunda kullanılması için DATEDIFF_BIG fonksiyonu kullanıma sunulmuştur.

DATEDIFF_BIG Syntax : DATEDIFF_BIG( datepart,startdate,enddate )

Kullanımı :


SELECT DATEDIFF_BIG(DAY,GETDATE(),GETDATE()+10) 

datediff_big_example

Bu örnekte DATEDIFF ile DATEDIFF_BIG arasındaki farkı daha iyi anlamak için INT (max=2,147,483,647) veri türünün sınırını geçebilecek bir tarih farkı alalım.


SELECT DATEDIFF(ms,'2016-01-01','2016-01-31')

datediff_overflow

DATEDIFF bize INT (max=2,147,483,647) veri türü döndürdüğü için ve farkını almak istediğimiz zaman bilgisi INT veritürü sınırını geçtiği için overflow hatası meydana geldi.

Şimdi de aynı sorguyu DATEDIFF_BIG fonksiyonu ile çalıştıralım;


SELECT DATEDIFF_BIG(ms,'2016-01-01','2016-01-31')

datediff_big_example_two

Sorgu sonucunda da görüldüğü üzere 1 aylık milisaniye bazındaki tarih farkını DATEDIFF_BIG fonksiyonu ile başarıyla almış olduk.

INT türünde dönüş yapan DATEDIFF fonksiyonu yetersiz kaldığı durumda BIGINT veri türünde dönüş yapan DATEDIFF_BIG fonksiyonunu SQL Server 2016 versiyonu ile bilikte rahatça kullanabilirsiniz.

Genel Bilgi: 

INT veri türü sınırları : -2,147,483,648 ile +2,147,483,647 arasındadır.

BIGINT veri türü sınırları: -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 arasındadır.

Not: Bu içerikte kullanılan SQL Server sürümü :  SQL Server 2016 CTP 3

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

MS Access’te Kullanılan Raporları Reporting Services Raporlarına Dönüştürme

Finance report

Şirketlerde verileri saklamak ve raporlamak için Access veritabanı çok az bir kullanıma sahip olsa da, Microsoft Access veritabanında yapılmış olan raporları Reporting services raporlarına (.rdl) dönüştürme ihtiyacınız olabilir.
Genelde süreç şirket verilerinin tutulduğu Access veritabanı yeterli olmadığında, daha kapsamlı bir veritabanına (SQL Server, Oracle,DB2 vb.) geçiş yapmak istenildiğinde, dataların taşınmasıyla birlikte Access’te kullanılan raporların da tekrar oluşturulması istenilecektir.
Access’te kullanılan tüm raporları tek tek SQL Server Reporting Services üzerinde oluşturmak,dizaynları yapmak zaman/maliyet’e sebep olacak.
Her zamanki gibi işlerimizi hızlandırmamıza,en değerli kaynağımız zamanı değerli kullanmamıza önem veren Microsoft Access’te kullanılan raporların Reporting Services raporlarına dönüştürmemize imkan sağlıyor.

Konuyu uygulamak için yeni bir örnek Access veritabanı oluşturuyorum. MS Access‘i açtıktan sonra ; New > Sample Templates yolu ile Access’in bize sunduğu örnek veritabanlarından “Marketing Projects” veritabanını tercih edip oluşturuyorum.

create_Access_sample_database

Oluşturmuş olduğumuz veritabanı içerisinde kullanılan raporlar da bulunuyor.

sample_Report

Artık veritabanımız ve içerisinde kullanılan raporlarda olduğuna göre bu raporları SSRS raporlarına dönüştürebiliriz.

Visual Studio’yu çalıştırdıktan sonra File>New>Project menüsü ile yeni bir rapor projesi oluşturalım.

create_report_project

Sağ tarafta bulunan Business Intelligence > Reporting Services  seçtikten sonra Report Server Project seçip projemizi oluşturuyoruz.  Projemiz oluştuktan sonra, Access veritabanı içerisinde bulunan raporları “.rdl” dönüştürmek için; Project menüsünden Import Reports> Microsoft Access… menü yolu ile açılan penreceden raporları alacağımız Access dosyasını seçiyoruz.

Access dosyamızı seçtikten sonra Visual Studio otomatik olarak raporları SQL Server Reporting Services raporlarına dönüştürmeye başlayacaktır.

reports_solution_explorer

Access veritabanında bulunan bütün raporlar Solution Explorer penceresindeki ImportAccessReport projemizin Reports klasörü altına eklendiğini görüyoruz.

report_design

Aktarmış olduğumuz raporları incelediğimizde dizaynların  birebir aktarıldığını görüyoruz. Dizaynlarla birlikte raporların datasource ve dataset’lerinin de yeni rapor sistemine aktarıldığını görüyoruz.

data_Source_dataset

Kolay ve hızlıca Access veritabanında bulunan raporları Reporting Services raporlarına dönüştürmüş olduk.

Faydalı olması dileğiyle.

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

SQL Server 2016 – DROP IF EXISTS

sql_server

SQL Server 2016 ile gelen yeniliklerden, IF EXISTS koşulu DROP komutu ile birlikte opsiyonel olarak kullanılabilir hale geldi. Basitçe IF EXISTS belirtilen nesnenin var olup olmadığı bilgisini döndüren bir komuttur.
SQL Server 2016 ile birlikte gelen bu komutun sözdizimi aşağıdaki gibidir;

DROP OBJECT_TYPE [IF EXISTS] OBJECT_NAME

Örnek olması açısından aşağıdaki gibi bir veritabanı,tablo ve stored procedure oluşturuyorum.


CREATE DATABASE SQLNews
GO
USE SQLNews
GO
CREATE TABLE cdUsers (Id INT,Name varchar(50))
GO
CREATE PROC SayHello
AS
SELECT 'Hello SQL Server 2016'
GO

create_database

Oluşturmuş olduğumuz “SayHello” sp’mizi SQL Server 2016 ile birlikte gelen kullanım şekli ile siliyoruz.


DROP PROCEDURE IF EXISTS SayHello

drop_procedure

SQL Server 2016 öncesi sürümlerinde yukarıdaki işlemleri aşağıdaki yöntemle yapabiliyoruz.


IF OBJECT_ID('SQLNews.dbo.SayHello') IS NOT NULL
BEGIN
DROP PROCEDURE SayHello
END

drop_procedure_last

SQL Server 2016 öncesi sürümlerinde IF EXISTS ile bir Stored Procedure‘nin var olup olmadığını bulmak istersek;


IF EXISTS (SELECT 1 FROM sys.procedures WHERE Name='SayHello')
BEGIN
DROP PROCEDURE SayHello
END

drop_procedure_exists

Yukarıdaki stored procedure örneklerinde olduğu gibi aynı şekilde Tablo,View,Database vb. diğer nesneleri de IF EXISTS komutunu kullanarak silebilirsiniz.


DROP TABLE IF EXISTS cdUsers

drop_table


USE master
GO
DROP DATABASE IF EXISTS SQLNews

drop_database

Tavsiye

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

SQL SERVER – QUOTED_IDENTIFIER ON/OFF

SQL-Server-2012

SQL Server’da QUOTED_IDENTIFIER özelliği ile SQL Server için ayrılmış özel kelimeleri kullanarak nesne oluşturmamıza imkan sağlar. “Table,Group,Alter” vb. SQL Server için rezerve edilmiş kelimeleri kullanmamıza imkan sağlayan bir özelliktir.
SQL SERVER için rezerve edilen kelimelerin listesi için : msdn

SQL Server QUOTED_IDENTIFIER özelliği varsayılan olarak açık (ON) durumdadır. Özelliğin daha iyi anlaşılması için bu özelliği önce kapatıp (OFF) data sonra SQL server için rezerve edilmiş bir kelime ile tablo oluşturmaya çalışacağım.


SET QUOTED_IDENTIFIER OFF

CREATE TABLE "TABLE"
(
"int" int,
"datetime" datetime
)

QUOTED_IDENTIFIER_OFF

QUOTED_IDENTIFIER özelliği kapalı iken bize Sql Server için rezerve edilmeş kelime ile tablo oluşturmamıza izin vermiyor. QUOTED_IDENTIFIER özellğini açıp tekrar deneyelim.


SET QUOTED_IDENTIFIER ON

CREATE TABLE "TABLE"
(
"int" int,
"datetime" datetime
)

QUOTED_IDENTIFIER_ON

QUOTED_IDENTIFIER özelliğini açtıktan sonra Sql Server için rezerve edilen kelime olan “TABLE” kelimesi ile tablo oluşturmamıza imkan sağlamıştır.  Dikkat ettiyseniz tablodak kolon isimlerini de veri türü ismi ile aynı olacak şekilde kullanmamıza da imkan sağlıyor. Şimdi rezerve edilen bir kelime ile oluşturmuş olduğumuz tabloya kayıt ekleyip sorgulayalım.


SET QUOTED_IDENTIFIER ON

INSERT INTO "TABLE" VALUES(1,GETDATE())

SELECT * FROM "TABLE"

QUOTED_IDENTIFIER_INSERT_SELECT

Oluşturduğumuz tablomuza kayıt ekleyip sorgulama işlemini gerçekleştirdik. Genelde SQL Server için rezerve edilen kelimeler ile tablo oluşturup projenizde kullanmak istemezsiniz.  Yine de böyle bir özelliğin olduğunu bilmeniz faydalı olacaktır.

NOT: QUOTED_IDENTIFIER özelliği varsayılan olarak ON durumundadır.

EK Bilgi: QUOTED_IDENTIFIER  özelliği ile çift tırnak kullanarak SQL Server için rezerve edilmiş kelimeleri kullanmamıza imkan sağlıyor. QUOTED_IDENTIFIER  özelliği ON / OFF farketmeksizin rezerve edilmiş kelimeleri kullanmak isterseniz “[ ]” kullanabilirsiniz.


CREATE TABLE [TABLE]
(
[int] int,
[datetime] datetime
)

INSERT INTO [TABLE] VALUES (1,GETDATE())

SELECT * FROM [TABLE]

create_table

Faydası olması dileğiyle.

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

SQL SERVER’de Veritabanının Var Olup Olmadığını Sorgulamak – 3 Yöntem

SQL-Server-2012

Bazı durumlarda SQL SERVER‘da kullanmak istediğiniz veritabanını var olup olmadığını sorgulama ihtiyacı duyabilirsiniz. Ben yazılım geliştirdiğim dönemlerde uygulama tarafında SQL SERVER‘da uygulamanın kullanmakta olduğu veritabanının olup olmadığını sorgulayıp koşula göre eğer veritabanı yoksa oluşturup varsa güncelleme scriptlerimi çalıştırıyordum. Bunun gibi birçok durumda SQL SERVER üzerinden bir veritabanının var olup olmadığını sorgulama ihtiyacınız doğabilir.
Araştırmalarım sonucu veritabanının SQL SERVER tarafında var olup olmadığını sorgulamak için üç farklı yöntem buldum. Sırası ile bu yöntemleri sizlerle paylaşıyorum.
Sizlerde kullandığınız farklı bir yöntem varsa yorup panelinden bizlerle paylaşabilirsiniz.

1.Yöntem DB_ID() Fonksiyon Kullanımı
Benimde kullandığım DB_ID() fonksiyonu kullanımı kolay ve akılda kalıcı olduğu için tavsiye ederim.


IF DB_ID('AdventureWorks2014') IS NOT NULL
BEGIN
PRINT 'DB Mevcut'
END
ELSE
BEGIN
PRINT 'DB Bulunamadı'
END

db_exists

db_not_exists

2.Yöntem sys.databases View Kullanımı
Bu yöntemde MASTER veritabanında bulunan Sistem View’leri altında sys.databases view’ini sorgulayarak veritabanının var olup olmadığı bilgisine ulaşabiliriz.


IF EXISTS(SELECT * FROM master.sys.databases WHERE name='AdventureWorks2014')
BEGIN
PRINT 'DB Mevcut'
END
ELSE
BEGIN
PRINT 'DB Bulunamadı'
END

sys_databases

3.Yöntem sys.sysdatabases Tablosu Kullanımı
Bu yöntemde de aynı 2. yöntemde olduğu gibi sorgulama yaparak veritabanının var olup olmadığını tespit edeceğiz. 2. yöntemde Master veritabanında bulunun sistem view’ini kullandık, bu yöntemde de yine Master veritabanında olan sistem tablosunu kullanıyoruz.


IF EXISTS(SELECT * FROM master.sys.sysdatabases WHERE name='AdventureWorks2016')
BEGIN
PRINT 'DB Mevcut'
END
ELSE
BEGIN
PRINT 'DB Bulunamadı'
END

master_sysdatabases

master_sysdatabases_not_exists

Yararlı olması dileklerimle.

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page

Okudum: Zengin Baba Yoksul Baba

IMG_20151221_131850

IMG_20151221_131850Sayfa Sayısı: 260
Baskı Yılı: 2015
Dili: Türkçe
Yayınevi: Alfa Yayıncılık

 

Zengin Baba, Yoksul Baba’yı okuduktan sonra Zengin olmak için yüksek bir gelire sahip olmanız gerektiği saplantısı yerle bir olacak. Evinizin bir aktif varlık olduğuna inancınız sarsılacak, Çocuklarınıza para kazanmanın yollarını öğretmek için okuldaki sisteme güvenemeyeceğinizi göreceksiniz,Aktif ve pasif varlıkları yeniden tanımlayacaksınız,Çocuklarınızın gelecekte finansal başarı sağlamaları için parayla ilgili onlara öğretmeniz gereken her şeyi öğreneceksiniz.Robert Kiyasaki insanlara insanlara milyoner olmayı öğretir.Ona milyoner öğretmen denmesinin nedeni bu.”İnsanların maddi sıkıntılar içinde boğuşmasının neden, okulda geçirdikleri onca yıl boyunca para konusunda hiçbir şey öğrenmemeleri. Sonuçta para için çalışmayı öğrenirler,ama parayı kendileri için çalıştırmasını hiç bilmezler.”


Robert T.Kiyosaki ‘nin yazmış olduğu Zengin Baba Yoksul Baba kitabını bir solukta okuduğumu itiraf etmeliyim. Çevremde de herkese tavsiye etmiş olduğum kitap, içi dolu örnekler ile bakış açınızı, düşüncelerinizi değiştirecek. İster kendi işinizi kurmak isteyenlerden olun, ister maaşlı bir işte çalışanlardan olun ama kesinlikle bu kitabı kütüphanenize kazandırıp okuyun. En kısa zamanda Robert T.Kiyosaki ‘nin diğer kitaplarını da temin edip okuyacağım.

 

Sosyal medyada paylaş...Share on FacebookShare on LinkedInShare on Google+Pin on PinterestShare on TumblrTweet about this on TwitterEmail this to someonePrint this page