07 Şub 2008 SQL Server 2008 Katmai'ye İlk Bakış Kategori: Yazılım Etiketler: SQL ServerSQL Server 2008 3 Yorum Bugün katıldıgım sitebuilder seminerinde konu "Katmai" yani SQL Server 2008 idi. Katmai ile birlikte bir çok yenilik bizleri bekliyor. Bunlardan en önemlisi SQL 2000'den SQL 2005'e geçerken yasadıgımız sıkıntıları SQL 2008'e geçiste yasamayacagız. Bunun dısında Datetime, Time, Filestream gibi yeni veri tipleri geliyor. File stream veri tipi için önemli bir nokta var. Sadece Windows üzerinde NTFS disk üzerinde çalısabiliyor. FileStream veri tipi için de bir kaç noktaya deginmek istiyorum. Burada word, excel, mp3, pdf gibi dosyaları saklıyabiliyoruz. Bunun için SQL Server file system üzerinde sadece kendi erisebilecegi bir alan açıyor ve dosyaları burada saklıyor. Eger ki filestream veritipini kullanıyorsak Database Mirroring'i kullanamayacagız. Resource Governor ile kullanıcı ve connection bazlı olarak sistem kaynakları sınırlanabiliyor. Örnegin X kullanıcısı Ram'in %10'unu CPU'nun %20'ni kullansın gibi.Backup Compression ile database ve tablo bazlı sıkıstırma yapabiliyor olacagız. Burada da dikkat edilmesi gereken önemli bir husus var. Sıkıstırma islemi yapılırken yada restore edilirken performans yükü getirebilir. LINQ ile mükkemmel bir uyum ile çalısıyor. Intelligence ile visual stuidaki gibi kod yazmak çok kolay hale getirilmis. Ayrıca region'lar da koyabiliyoruz.SQL 2000 de olan ama SQL 2005 de olmayan 1000 kayıt ile tabloyu aç özelligi SQL 2008 ile tekrar karsımıza çıktı. VirtualEarth ile tam olarak uyumludur ve yeni 2 veri tipi daha karsımıza çıkıyor. Geography ve Geometry isimli veri tipleri kullanıyor olacagız. MERGE isimli yeni komutumuz ile Insert ve Update islemini duruma göre kendisi yapabilecek.Data Profiling ile hatalı girilmis verileri kolayca bulup temizleyebilcegiz. Her ne kadar kullanmasam da Reporting Servislerde Tablo ve Matrix Raporlama sitili birlestirilip Tablix isimli yeni bir raporlarma sitili olusturulmus.Simdilik bu kadar :) SQL Server 2008 ile ilgili makalelerim ile tekrar karsınız da olacagım :)
04 Mar 2007 VISTA'da Visual Studio ve SQL Server 2005 Kategori: Yazılım Etiketler: SQL ServerSQL Server 2005Windows 12 Yorum Bu haftasonu bilgisayarlarıma(ev ve sirket) VISTA kurdum. Özellikle SQL Server'i kurmak için bayagı bir ugrastım. Bu süreçte yasadıgım tecrübeleri sizinle de paylasmak istedim. Visual Studio: Ilk olarak Frontpage Extension'ı kurmalıyız. Yoksa hata veriyor :) Daha sonra Visual Studio 2005 SP1 yüklememiz gerekiyor. SQL Server 2005: VISTA normal de SQL Serveri 2005'i desteklemiyor ama bunu çözmek için; Administrator Hesabını aktif edip onunla login olalım; UAC(User Access Contorl')ü kapatalım. Run komutuna MSConfig yazalım ve Disable UAC seçip Launch'a tıklayalım. SQL Service Pack 2 Yükleyelim Tüm bunları yaptıktan sonra sorunsuz olarak Visual Studio 2005 ve SQL Server 2005'i çalıstırabiliriz.
04 Mar 2007 ASP.NET İle Stored Procedure Kullanımı – 2 Kategori: ASP.NET Etiketler: ASP.NETSQL ServerADO.NET 2 Yorum Merhaba arkadaşlar, bu makalemizde ASP.NET İle SQL Server üzerinde Insert, Update ve Delete işlemleri yapan Stored Procedureleri oluşturup, oluşturduğumuz store procedurleri ASP.NET Projemizde kullanacağız…Bir önceki makalemizde Bize datayı listeleyen Stored Procedure olusturup bunu ASP.NET içinde kullanmıstık. Bu makalemizde ise Ekleme, Çıkarma ve Güncelleme Stored Proc. Ekleyecek ve bunu asp.net sayfalarında kullanacagız. Insert: Tablumuza Kayıt ekliyoruz. Not: Person.Contact Tablosuna kayıt eklemek için Allov null alanları seçili olmayan fieldları seçelim. SP'yi düzgün yazsak bile çalısmayacaktır. Create Proc InsertPerson @FirstName varchar(20), @LastName varchar (20) as Insert Into Person.Contact (FirstName,LastName) values (@FirstName, @LastName) Sp'mizi Test edelim.. InsertPerson 'sem','göksu' // Bakalım Eklemismi ? Simdi bu islemi ASP.NET tarafında da yapalım. Olusturmus oldugumuz projeye yeni bir sayfa ekleyelim ve sayfamız üzerine 2 textbox ve 1 button ekleyelim. Button'un Click eventine asagıdaki kodları yazalım; protected void Button1_Click(object sender, EventArgs e) { try { Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); Cmd = new SqlCommand(); Cmd.CommandType = CommandType.StoredProcedure; Cmd.CommandText = "InsertPerson"; Cmd.Parameters.AddWithValue("@FirstName", TextBox1.Text); Cmd.Parameters.AddWithValue("@LastName", TextBox2.Text); Cmd.Connection = Cnn; if (Cnn.State == ConnectionState.Closed) Cnn.Open(); int result = Cmd.ExecuteNonQuery(); Response.Write(result.ToString() + " Kayıt Eklendi..."); } catch (Exception ex) { Response.Write(ex.Message); } } Insert islemimizi tamamladık simdi Update Islemine geçebiliriz. Update: Varolan bir kaydı güncelliyoruz. Create Proc UpdatePerson @ExFirstname varchar(20), @NewFirstname varchar(20) as Update Person.Contact Set FirstName = @NewFirstname where FirstName=@ExFirstname Test edelim; UpdatePerson 'Crystal','Penguen' (22 row(s) affected) > 22 tane Firstname'i Crystal olan kayıt person ile degistirildi. Simdi Asp.net tarafını yazalım; Yeni Bir sayfa ekleyelim ve sayfamıza 2 textbox ve 1 button girelim. 1. textbox'a güncellenecek olan Firstname'i ve 2.textbox'ada yeni degeri girecegiz. Buton ile de islemi gerçeklestirecegiz. Button'un click eventine asagıdaki kodları yazalım; protected void Button1_Click(object sender, EventArgs e) { try { Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); Cmd = new SqlCommand(); Cmd.CommandType = CommandType.StoredProcedure; Cmd.CommandText = "UpdatePerson"; Cmd.Parameters.AddWithValue("@ExFirstname", TextBox1.Text); Cmd.Parameters.AddWithValue("@NewFirstname", TextBox2.Text); Cmd.Connection = Cnn; if (Cnn.State == ConnectionState.Closed) Cnn.Open(); int result = Cmd.ExecuteNonQuery(); Response.Write(result.ToString() + " Kayıt güncellendi..."); } catch (Exception ex) { Response.Write(ex.Message); } } Hemen test edelim; Sp'yi test ederken Firstname'i Crystal olan kayıtları penguen ile degistirmistim. Simdi yeniden eski degeri ile update etmis oldum. 22 adet kaydın güncellendigini görüyoruz. Delete: Tablomuzdan kayıt siliyoruz. Stored Proc. Olusturalım. Not: Eger Sizde benim kullandıgım gibi Person.Contact tablosunu kullanacaksanız tablo Üzerindeki Foreign keyleri kaldırın. Yoksa kayıtları silemeyeceksiniz. create proc DeletePerson @Firstname varchar(20) as Delete from Person.Contact where FirstName = @Firstname SP'yi test edelim. DeletePerson 'Gustavo' (2 row(s) affected) > Gustavo adın da 2 kaydı sildi.. Simdi son olarak da bunun asp.net tarafını yapalım. Yeni bir sayfa ekleyelim ve sayfamıza 1 textbox ve 1 button ekleyelim. Daha sonra butonun click eventine asagıdaki kodları yazalım; protected void Button1_Click(object sender, EventArgs e) { try { Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); Cmd = new SqlCommand(); Cmd.CommandType = CommandType.StoredProcedure; Cmd.CommandText = "DeletePerson"; Cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text); Cmd.Connection = Cnn; if (Cnn.State == ConnectionState.Closed) Cnn.Open(); int result = Cmd.ExecuteNonQuery(); Response.Write(result.ToString() + " Kayıt silindi..."); } catch (Exception ex) { Response.Write(ex.Message); } } Testimizi yapalım; Firstname'i "Sem" olan 5 kayıt vardı ve biz bunu stored procedurumuzü çalıstırarak sildik.. Bu makalenin de sonuna geldik, Baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Sem GÖKSUMCP | MCAD.NET | MCTS Örnek Kodlar için mail adresimi kullanabilirsiniz semgoksu@semgoksu.com Kaynaklar http://msdn.com
04 Mar 2007 ASP.NET İle Stored Procedure Kullanımı – 1 Kategori: ASP.NET Etiketler: ASP.NETSQL Server 2005SQL Server 0 Yorum Merhaba arkadaşlar, bu makalemizde ASP.NET İle SQL Server üzerinde Stored Procedure oluşturup, oluşturduğumuz stored procedurü ASP.NET Projemizde kullanacağız…Stored Procedure Nedir?Ilk olarak kısaca Stored Procedürden bahsedeyim; Stored Procedures SQL Server üzerinde tutulan T-SQL ifadeleridir. Belli bir görevi yerine getirebilmek amacıyla yapılandırılırlar. SQL Server üzerinde derlenirler. Belirledigimiz sartlara göre, program içinden çagrılarak kullanılırlar. T-SQL deyimleriyle yazılan Store Procedures sadece ilk kez çalıstırıldıklarında derlenirler. Daha sonraki çalıstırma islemlerinde derlenmezler. Bu sayede çalısmalarımızda hız kazanmıs oluruz. Stored Procedürlerin bir baska artısı da çok güvenlidir. ÖrnekCreate Proc LastTenPerson as select top 10 ContactID, FirstName, LastName from Person.Contact order by ContactID desc Bu Stored procedurü çalıstıralım; exec LastTenPerson > bize geri dönen sonuç; Bize son 10 kaydı geri döndürdü. Simdi isterseniz bu olusturdugumuz Stored Procedurü, ASP.NET Projesinde kullanalım; lk olarak bir web projesi açalım; Projemizi olusturduktan sonra sayfamıza bir adet grid ekleyelim; Evet simdi kaydımızı görüntüleyecek olan kodları yazalım ilk olarak System.Data ve System.Data.SqlClient namespacelerini sayfamıza ekleyelim. using System.Data; using System.Data.SqlClient; Daha sonra sayfamızda kullanacagımız degiskenleri tanımlayalım; SqlConnection Cnn; SqlCommand Cmd; SqlDataAdapter Da; DataSet Ds; Simdi Kaydımızı listeleyecek olan voidi yazalım(Isterseniz function olarak yada class içerisinde kullanabilirsiniz). private void GetLastTenPerson() { Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes");//DB Baglantısı Cmd = new SqlCommand(); Cmd.CommandType = CommandType.StoredProcedure;//Command Tipi Cmd.CommandText = "LastTenPerson";//SP Adı Cmd.Connection = Cnn;//Commandin kullanacagı Connection if (Cnn.State == ConnectionState.Closed) Cnn.Open(); Da = new SqlDataAdapter(Cmd); Ds = new DataSet(); Da.Fill(Ds,"table"); GridView1.DataSource = Ds.Tables[0]; GridView1.DataBind(); } En son olarak bunu Formun Load'da çagıralım; protected void Page_Load(object sender, EventArgs e) { GetLastTenPerson(); } Simdi Projemizi çalıstıralım; Son 10 kaydımızı basarı ile listeledik; Simdi Stored Proceduremizi biraz daha genisletelim ve Bir kriter ekleyelim. Örnegin Firstname'ni biz dısarıdan girelim ve girdigimiz Firstname'e göre kayıtlar listelensin. Bunun için Stored Procedure içerisine dısarıdan bir parametre almalıyız. Biz buna input parametre diyoruz. Stored Proceduremizin düzenlenmis hali; Alter Proc LastTenPerson //SP'mizi Alter ettik @FirstName varchar(20)//Input Parameter as select top 10 ContactID, FirstName, LastName from Person.Contact where FirstName=@FirstName order by ContactID desc exec LastTenPerson 'Crystal' Sonucu görelim; Firstname'i sadece Crystal olanlar geldi; Simdi bunu ASP.NET tarafında da yapalım; Bunun için projemize bir adet buton ve bir adet textbox ekleyelim. Sayfamızdaki kodları Command out yapalım yada silelim çünkü SP degistigi için çalıstıgında hata verecektir. Button1'e tıklayalım; protected void Button1_Click(object sender, EventArgs e) { Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); Cmd = new SqlCommand(); Cmd.CommandType = CommandType.StoredProcedure; Cmd.CommandText = "LastTenPerson"; Cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text);// Dısarıdan Store Procedure parametre ekliyoruz.. Cmd.Connection = Cnn; if (Cnn.State == ConnectionState.Closed) Cnn.Open(); Da = new SqlDataAdapter(Cmd); Ds = new DataSet(); Da.Fill(Ds, "table"); GridView1.DataSource = Ds.Tables[0]; GridView1.DataBind(); } Simdi projemizi tekrar çalıstıralım ve sonucu görelim. Yukarıda da görüldügü gibi Firstname'i sadece 'Crystal' olan kayıtlar listelenmektedir. Bu makalenin de sonuna geldik, bir sonraki makale de Insert, Update ve Delete islemlerini inceleyecegiz. Baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Sem GÖKSU MCP | MCAD.NET | MCTS Örnek Kodlar için mail adresimi kullanabilirsiniz semgoksu@semgoksu.com Kaynaklar http://msdn.com
21 Ara 2006 SQL Server IDENTITY Değerini Bulmak Kategori: Yazılım Etiketler: SQL Server 3 Yorum INSERT islemi esnasında tablonuza ekleme yaparken o andaki IDENTITY özelligine sahip alanınızın degerini asagıdaki gibi bulabilirsiniz: INSERT INTO Tablo_Adi (Alan_Adlari) VALUES (Eklenecek_Degerler) SELECT @@IDENTITY AS 'Identity' IDENT_CURRENT('Tablo_Adi') : Belirli bir tabloda herhangi bir oturum yada geçerlilik alanında en son Identity degerini döndürür. Örnek: SELECT IDENT_CURRENT('Personel') @@IDENTITY : Herhangi bir tabloda o anki bir oturum yada tüm geçerlilik alanlarında en son Identity degerini döndürür. Örnek: SELECT @@IDENTITY SCOPE_IDENTITY() : Herhangi bir tabloda o anki oturum yada o anki geçerlilik alanında en son Identity degerini döndürür. Örnek: SELECT SCOPE_IDENTITY()