Beykent Üniversitesi; SQL Server 2008 ve Veri Yönetimi Seminerim

Beykent Üniversitesinde 15.Aralık.2009 tarhinde SQL Server 2008 ve Veri Yönetimi isimli bir seminer verdim. Seminer oldukça keyifliydi. İki bölümde geçen seminerde süpriz bir Mobile Development konulu anlatımda yaptım. İlk bölümde önemli veritabanı kavramları üstünde dururken ikinci bölümde SQL Server 2008 ile gelen yenilikleri canlı demo göstresi şeklinde genç üniversite öğrencisi arkadaşlarımla paylaştım. INETA'nın desteğiyle USB Stick, Microsoft kartvizitlikler gibi ufak hediyelerde günün hatırası olarak öğrenci arkadaşlarıma vermiş oldum.  

Özelleştirilmiş DataBase Rolü tanımlamak ve izinleri yönetmek

Normal021falsefalsefalseTRX-NONEX-NONE/* Style Definitions */table.MsoNormalTable{mso-style-name:"Table Normal";mso-tstyle-rowband-size:0;mso-tstyle-colband-size:0;mso-style-noshow:yes;mso-style-priority:99;mso-style-qformat:yes;mso-style-parent:"";mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-para-margin-top:0cm;mso-para-margin-right:0cm;mso-para-margin-bottom:10.0pt;mso-para-margin-left:0cm;line-height:115%;mso-pagination:widow-orphan;font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;} Özelleştirilmiş veri tabanı rolleri sayesinde kullanıclara istediğimiz gibi özelleştirebildiğimiz rolleri atamamızı sağlar bu sayede özel bir rol tanımlayıp istediğimiz sayıda kullanıcıya bu rolleri atayabiliriz. Bunları yapmak bize hız ve veritabanımızı da daha kolay yönetmemizi sağlamaktadır. Aşağıda yeni bir rol tanımlayıp bu role kendi seçimimiz olan rolleri verip kullanıcımıza da bu rolleri atamktayız. Scriptte kullandığım sp_addrolemember prosedürü sql server'a ait bir prosedür olup bu rolleri kullanıcının rolü haline getirmemizi sağlamaktadır.   Bu adımda AdventureWorks database'i üstünde rol yaratmaktayız; USEAdventureWorks GO CREATE ROLE [TestRol_1] AUTHORIZATION[dbo] Go   Burada tanımladığımız rol'e izinlerimizi veriyoruz. USE AdventureWorks GO GRANT ALTER,EXECUTE, SELECT,INSERT,UPDATE,DELETE ON SCHEMA ::dbo TO TestRol_1 Go   USEAdventureWorks GO GRANT BACKUP DATABASE,BACKUP LOG To [TestRol_1] Go   SQL Server'ın ken içinde barındırdığı sp_addrolemember prosedürü ile rolümüze kullanıcı eklemekteyiz. USEAdventureWorks GO EXEC sp_addrolememberN'TestRol_1', N'USER_ISMI' GO   Bu adımda rolünü tanımladığımız kullanıcı için Windows Login hakkı vermekteyiz varsayılan veritabanı olaraksa AdventureWork veritabanını kullanmaktayız. USEAdventureWorks GO CREATE LOGIN [DenemeDomain\USER_ISMI] FROM WINDOWS WITH DEFAULT_DATABASE=AdventureWorks GO   Bu adımda veri tabanı için kullanıcımızı tanımlamaktayız. USEAdventureWorks GO CREATE USER [USER_ISMI] FORLOGIN [DenemeDomain\USER_ISMI] GO   Kaynak: Namwar Rizvi

Connection strings for SQL Server 2008

.NET Framework Data Provider for SQL Server    Normal 0 21 false false false TR X-NONE X-NONE     /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} Standart Güvenlik Data Source=Sunucu_Adresi;Initial Catalog=DataBase_İsmi;User Id=Kullanıcı_ismi;Password=Şifre; Birden fazla SQL Server insatance'ı bulunun yani bir serverda birden fazla SQL Server Database Engine kurulu olan yerde Sunucu_Adresi kısmında Sunucu_Adresi\instanceİsmi şeklinde kullanın   Eğer SQL Server 2008 Express kullanıyorsanız Sunucuisminden sonra Sunucuismi\SQLEXPRESS şeklinde DATA Source'u belirtmeyi unutmayın.    Standart Güvenlik ve alternaf yazım  Bu Connection String'de bir önceki ile aynı etkiyi yapmaktadır. Birden fazla anahtar kelime olduğu için çeşitli şekillerde gösterilebilmektedir. Server=Sunucu_Adresi;Database=DataBase_İsmi;User ID=Kullanıcı_İsmi;Password=Şifre;Trusted_Connection=False;     Güvenli (Trusted) Bağlantı Data Source=Sunucu_İsmi;Initial Catalog=DataBase_İsmi;Integrated Security=SSPI;     Güvenli (Trusted) Bağlantı ve alternaf yazım  Bu Connection String'de bir önceki ile aynı etkiyi yapmaktadır. Birden fazla anahtar kelime olduğu için çeşitli şekillerde gösterilebilmektedir.  Server=Sunucu_İsmi;Database=DataBase_İsmi;Trusted_Connection=True;     SQL Server instance’ına bağlanmak Yukarıda belirtildiği gibi bir sunucuda birden fazla SQL Server DatabaseEngin yani insatance kurulumu varsa aşağıdaki gibi connection string’i düzenlemeniz gerekmektedir Server=Sunucuismi\Instance_ismi;Database=DataBase_ismi;Trusted_Connection=True;     Windows CE kullanan aygıtlar için Trusted Bağlantı  SSPI veya Trusted bağlantı kullanmanız gerekmektedir. Bunun için  aşağıdaki cümleciği kullanın Data Source=Sunucu_Adresi;Initial Catalog=DataBase_İsmi;Integrated Security=SSPI;User ID=Domainİsmi\Kullanıcıİsmi;Password=Şifre; Bu cümlecik sadece CE aygıtları üstünde çalışacaktır.   IP adresi bağlantı yolu ile Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=DataBase_İsmi;User ID=Kullanıcı_İsmi;Password=Şifre; DBMSSOCN=TCP/IP. SQL Server’ın varsayılan bağlantı portu 1433’dür Data source bu portu kullanır.   MARS (multiple active result sets) Kullanımı Server=Sunucu_Adresi;Database=DataBase_İsmi;Trusted_Connection=True; MultipleActiveResultSets=true; Yerel SQL Server Express bağlantısınıda database’i ekleyerek bağlantı kurmak Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf;Database=DataBase_İsmi; Trusted_Connection=Yes; Niçin database parametrelerine ihtiyacımız var ? Eğer bu isimde bir database mevcutsa, bu database’i SQL Server tekrar attach etmeyecek.   Database dosyasını attach etmek ve bunu ihtiva eden lokasyonu SQL Server Express kurulumuna göstermek Server=.\SQLExpress;AttachDbFilename=|DataDirectory|databasedosyaismi.mdf; Database=DataBase_İsmi;Trusted_Connection=Yes; Niçin database parametrelerine ihtiyacımız var ? Eğer bu isimde bir database mevcutsa, bu database’i SQL Server tekrar attach etmeyecek.   Database mirroring yaparken kullanacağımız SQL Server bağlantı string’i Data Source=Sunucu_Adresi;Failover Partner=MirrorServer_Adesi;Initial Catalog=DataBase_İsmi;Integrated Security=True;   Asenkron işlemlerde SQL Server bağlantısının asenkron isteklere cevap verebilmesi için aşağıdaki string’i kullanmalısınız.  Server=Sunucu_Adresi;Database=DataBase_İsmi;Integrated Security=True;Asynchronous Processing=True;   

SQL Server 2008 ile Database'den mail göndermek

    Bu işlemle SQL Server 2008 üstün hazır bir prosedür yardımıyla mail atabileceksiniz. Bu işin güzelliklerinden biride bir sorgu ile  değişken uzunlukta mailleri client erine server üstünden ylladıktan sonra aynı zamanda maillerin  gidip gitmediğini kuyrukta bekleyip beklemediğini görebilmenizdir. Bir tabloda a kolonu false olan kullanıcılara  ‘Sayın’+isim+’ ‘soyisim+’, üyeliğiniz pasif durumdadır.’ Şeklinde mailleri çok az kod satırı parçasıyla yapmanızı sağlamaktadır. Bunun dışında kullanımı hayalgücünüzle sınırlıdır.  Bunun için bolca ekran görüntüsü eklemeyi uygun gördüm.  İlk adımda yapmamız gereken profil oluşturmak ve account yaratmak olacaktır. Bunun için de Configure Database Mail sihirbazını  kullanacağız.  Sihirbaz hesaplar e profilleri yönetmemize sağlar aynı zamanda Database Mail’in genel ayarlarını yapabilirsiniz.   Bu konuyu screenshotlarla anlatmam en mantıklısı olacak yapılan ayarlar ve yollar böylece daha iyi anlaşılacaktır.                           Screenshotlarla gösterildiği gibi ayarları tamamladıktan sonra; Aşağıdaki mail gönderme prosedürünü çalıştırabilirsiniz. EXEC sp_send_dbmail @profile_name='profiismil', @recipients='alıcımailadresi', @subject='konu: Test mesajı', @body='deneme deneme deneme'   Maillerin durumunu görmek için ise aşağıdaki komutları kullanabilirsiniz;Use msdb go SELECT * FROM sysmail_mailitems GO  SELECT * FROM sysmail_log      Kaynak: Pinal Dave

SQL Server 2008 Saat dilimleri

  UTC dediğimiz saat dilimleri lise yıllarından beri öğrendiğimiz ingilterenin saatini temel almaktadır bizim saat dilimi konumumuz +2'dedir. SQL Server 2008 ile bu sorun çözümlenmiş ve bir saat standartı getirilmiş bu sayede saat çevrim problemi ortadan kalkmıştır. SELECT SYSUTCDATETIME() ingiltereyerelsaati,        SYSDATETIMEOFFSET() SISTEMSAATIvefark,        SWITCHOFFSET(SYSDATETIMEOFFSET(), '-02:00') [cevrim-2],        TODATETIMEOFFSET(SYSDATETIMEOFFSET(), '-02:00') [sadeceekyapar-2] Çıktımız:

SQL Server 2008 Cube Subclause

  Tablomuzu aşağıdaki şekilde yaratalım: CREATE TABLE tbl_meslek (       meslek varchar(25),       pozisyon varchar(50),       Departman varchar(40),       maas int ) SQL Server 2008 sorgusu Cube Subclause;  SELECT pozisyon, Departman, avg(maas) OrtalamaMaas from tbl_meslek Group BY       CUBE (pozisyon, Departman) SQL Server 2008 deki neyi kolaylaştırıyor ? SELECT pozisyon Departman, avg(maas) OrtalamaMaas from tbl_meslek GROUPING SETS       (             (pozisyon, Departman),             (pozisyon),             (Departman) ,             ()                )

SQL Server 2008 Çoklu Insert !

SQL Server 2005 ile insert işlemlerini aşağıdaki gibi yapmak zorundaydı;  INSERT dbo.duyuru(baslik) VALUES ('deneme1') INSERT dbo.duyuru(baslik) VALUES ('deneme2')  INSERT dbo.duyuru(baslik) VALUES ('deneme3') INSERT dbo.duyuru(baslik) VALUES ('deneme4') SQL Server 2008 ile çok önemli bir kolaylığımız daha; INSERT dbo.duyuru(baslik) VALUES ('deneme1'),('deneme2'),('deneme3'),('deneme4') VALUES parametremizi aslında bir tablo gibi kullanabilmekteyiz select ile sorgu yazarken tablo yerine values'ları da kullanabiliriz.

SQL Server 2008 Yenilikler I

C ailesinden gelen dillerden  ve C# tanda alışık olduuğunuz birleşik işleçler artık SQL Server 2008 ile beraber Transact SQL'de kullanılabilmekte; DECLARE @price AS MONEY = 10.00; SET @price += 2.00; SELECT @price; += işlemi yerine *= , /=, %= gibi işlemleride yapabilirsiniz. ·         += (plus equals) ·         -=  (minus equals) ·         *=  (multiplication equals) ·         /=  (division equals) ·         %=  (modulo equals)