Bu hatayı almanızdaki muhtemelen sebep insert sql cümlesinde girmiş olduğunuz veri , sizin veritabanında tanımlamış olduğunuzdan daha büyüktür.
Bu sorunu çözmek için ya alandaki veri boyutunu büyütün yada kullanıcının giriş yaptığı ekranda kısıtlamaya gidin. Çünkü çalışma anında sıkıntı yaratabilecek bir hata .
Örnek olarak Nvarchar(50) olarak tanımlamışsanız alanı. Ve buraya 51 karakterlik veri giriyorsanız , bu hatayı alırsınız.
Kolay gelsin.
Sql server veritabanı kullanan herkesin başına muhakkak gelen bir olaydır, log dosyalarının bozulması . Bu gibi bir durumda log dosyamız olmadan mdf dosyamızı başka bir veritabanına attach etmek sorun olur. Bunun için aşşağıdaki yöntemleri izleyebiliriz.
1.Mdf dosyamızla aynı isimde bir veritabanı yaratıyorız.
2.Sql serverımızı durdurup oluşan mdf dosyasının yerine kendi mdf dosyamızı koyuyoruz.
3.Sql serverımızı başlatıyoruz.
4. Aşşağıdaki scriptleri çalıştırıyoruz
Read the rest of this entry »
Tüm gece sıfır uykudan sonra yazılan bir yazıyı okuyorsunuz şuanda , herşeyden önce uyarmak istiyorum sizi .
Sabaha kadar kod yazdıktan sonra birazda düz yazı yazma ihtiyacı hissettiğim için yazmaya başladım bu yazıyı . Store procedure ( Saklı yordam ) nedir , nasıl kullanılır onu özetlemeye çalışacağım.
Saklı yordamlar istemci tarafında değil server tarafında veritabanı tarafından işletilen komutlardır.
Bu nedenle istemci programların hafıza kullanımı ve hızı açısından faydalıdırlar. Şimdi şöyleki , bir web projesi yazıyorsunuz ve kodlarınız çok güvenli olmayan bir hostingte tutulacak , sizden başkalarıda kodlara erişebilme ihtimalleri var. Bu gibi bir durumda güvenlik amacıyla bile kullanabilirsiniz. Tüm veritabanı işlemlerinizi saklı yordamlar yardımıyla yaparak istemci tarafından sadece saklı yordamlara verilen parametrelerle çalıştırmaya yetkili bir kullanıcıyla bağlanıp yaptırırsanız , veritabanı güvenliği açısından gayet faydalı olacaktır.
kodlarınıza erişen birisi bile sadece o saklı yordamları çalıştırabilen bir kullanıcı adına sahip olacaktır.
Şimdi saklı yordamlar nasıl kullanılır ona bir bakalım. Ben örneğini Sqlserver 2005 veritabanında hazırladım.
Yeni bir saklı yordam aşşağıdaki örnek koddaki gibi oluşturulabilir.
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[SP_MUSTERI_SEC] @MAIL nvarchar(50) , @SIFRE NVARCHAR(50) AS BEGIN SET NOCOUNT ON; SELECT *FROM MUSTERI WHERE SIFRE=@SIFRE AND EMAIL_ADRESI=@MAIL END } }
CREATE PROCEDURE den sonra oluşturacağımız saklı yordamın adını belirtiyoruz . Ve hemen aşşağısına
dışarıdan alacağımız yada dışarıya göndereceğimiz parametrelerimizi tanımlıyoruz.
Sonrada sql cümlemizi yazarak veritabanında işlemimizi gerçekleştiriyoruz.
Şimdi de istemci tarafında c# kodlarıya bu saklı yordamdan nasıl veri alacağımıza bir bakalım.
SqlCommand _cmd = new SqlCommand("SP_MUSTERI_SEC", _main.cnn); _cmd.CommandType = CommandType.StoredProcedure; _cmd.Parameters.AddWithValue("@MAIL", txt_email.Text.ToString()); _cmd.Parameters.AddWithValue("@SIFRE", txt_sifre.Text.ToLower().ToString()); if (_main.cnn.State == ConnectionState.Closed) { _main.cnn.Open(); } SqlDataReader _dr = _cmd.ExecuteReader();
Dikkat ettiyseniz “_cmd.CommandType = CommandType.StoredProcedure;” satırında commandımızın tipinin stored procedure olduğunu belirttik ve sonrada verilerimizi sqldatareader a aktardık.