Yesterday I was developing a simple form using a SqlDataSource to INSERT or UPDATE when saving the form. The form consisted of a few controls and a button. In the case of a new item, on clicking the save button I am executing SqlDataSource1.Insert(). For an existing item, I’m using an “ID” parameter on the query string which in turn is used by the UPDATE command. So I need the ID of the row I’ve just inserted to allow the user to update the form. I should mention my table has a column called “ID” of type int which is specified as the auto-incrementing identity column. I put together the form in less than 30 minutes and then spent twice that time trying to find the solution you are reading now. I was sorely tempted to ditch the DataSource as this is straightforward when you’re executing your SQL commands directly in the code-behind. But I was curious and persevered until I found the answer: Firstly, let me describe how to set up the DataSource to do the insert. The InsertCommandType is “Text”. For the InsertQuery click the … button to open the Command and Parameter dialog. Use the query builder, if you like, to create your insert statement. After the insert statement append “SET @Identity = @@Identity;” so our insert command looks something like this: INSERT INTO TestTable (TestCol) VALUES (@TestValue); SET @Identity = @@Identity; The statement above has 2 parameters. One is TestValue we’re setting in to TestCol. The other is Identity which will be the ID of the column we insert. Click Add Parameter and type “TestValue”, Parameter source is control, and ControlID is a textbox. Add another parameter called “Identity”. This time click Show Advanced Properties, set Direction to “Output” and Type to “int” (leaving Parameter source as “None”). Now the trick is catching the DataSource at the right time so that our output parameter will have a value. Don’t mistake the DataSource.InputParameters as the place to look as this merely describes the parameters we’ve configured above. To actually see the parameters after execution you need to catch the OnInsertedevent. Here we have SqlDataSourceStatusEventArgs which contains the command and its parameters after the command has executed. protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e) { //Read the value of the @Identity OUTPUT parameter string sID = e.Command.Parameters["@Identity"].Value.ToString(); //Display new ID Label1.Text = sID; } So with the ID known I can now redirect the user to "page.aspx?ID=" + sID such that they may update the form. Alıntıdır...
SqlDataSource: Getting @@Identity after Insert
14 Temmuz 2011Gönderen Aslı Nurkan Tarikulu zaman: 13:47 0 yorum
Etiketler: ADO.NET, ASP.NET-AJAX, SQL
FETCH (Transact-SQL) SQL Server 2008
25 Mart 2011NEXT
- Returns the result row immediately following the current row and increments the current row to the row returned. If FETCH NEXT is the first fetch against a cursor, it returns the first row in the result set. NEXT is the default cursor fetch option.
- PRIOR
- Returns the result row immediately preceding the current row, and decrements the current row to the row returned. If FETCH PRIOR is the first fetch against a cursor, no row is returned and the cursor is left positioned before the first row.
- FIRST
- Returns the first row in the cursor and makes it the current row.
- LAST
- Returns the last row in the cursor and makes it the current row.
- ABSOLUTE { n| @nvar}
- If n or @nvar is positive, returns the row n rows from the front of the cursor and makes the returned row the new current row. If n or @nvar is negative, returns the row n rows before the end of the cursor and makes the returned row the new current row. If n or @nvar is 0, no rows are returned. n must be an integer constant and @nvar must be smallint, tinyint, orint.
- RELATIVE { n| @nvar}
- If n or @nvar is positive, returns the row n rows beyond the current row and makes the returned row the new current row. If n or @nvar is negative, returns the row n rows prior to the current row and makes the returned row the new current row. If n or @nvar is 0, returns the current row. If FETCH RELATIVE is specified with n or @nvar set to negative numbers or 0 on the first fetch done against a cursor, no rows are returned. n must be an integer constant and @nvar must be smallint, tinyint, orint.
- GLOBAL
- Specifies that cursor_name refers to a global cursor.
- cursor_name
- Is the name of the open cursor from which the fetch should be made. If both a global and a local cursor exist with cursor_name as their name, cursor_name to the global cursor if GLOBAL is specified and to the local cursor if GLOBAL is not specified.
- @ cursor_variable_name
- Is the name of a cursor variable referencing the open cursor from which the fetch should be made.
- INTO @variable_name[ ,...n]
- Allows data from the columns of a fetch to be placed into local variables. Each variable in the list, from left to right, is associated with the corresponding column in the cursor result set. The data type of each variable must either match or be a supported implicit conversion of the data type of the corresponding result set column. The number of variables must match the number of columns in the cursor select list.
When the Transact-SQL DECLARE cursor extensions are used, these rules apply:
- If either FORWARD_ONLY or FAST_FORWARD is specified, NEXT is the only FETCH option supported.
- If DYNAMIC, FORWARD_ONLY or FAST_FORWARD are not specified, and one of KEYSET, STATIC, or SCROLL are specified, all FETCH options are supported.
- DYNAMIC SCROLL cursors support all the FETCH options except ABSOLUTE.
A.Using FETCH in a simple cursor
USE AdventureWorks GO DECLARE contact_cursor CURSOR FOR SELECT LastName FROM Person.Contact WHERE LastName LIKE 'B%' ORDER BY LastName OPEN contact_cursor -- Perform the first fetch. FETCH NEXT FROM contact_cursor -- Check @@FETCH_STATUS to see if there are any more rows to fetch. WHILE @@FETCH_STATUS = 0 BEGIN -- This is executed as long as the previous fetch succeeds. FETCH NEXT FROM contact_cursor END CLOSE contact_cursor DEALLOCATE contact_cursor GO
B.Using FETCH to store values in variables
USE AdventureWorks GO -- Declare the variables to store the values returned by FETCH. DECLARE @LastName varchar(50), @FirstName varchar(50) DECLARE contact_cursor CURSOR FOR SELECT LastName, FirstName FROM Person.Contact WHERE LastName LIKE 'B%' ORDER BY LastName, FirstName OPEN contact_cursor -- Perform the first fetch and store the values in variables. -- Note: The variables are in the same order as the columns -- in the SELECT statement. FETCH NEXT FROM contact_cursor INTO @LastName, @FirstName -- Check @@FETCH_STATUS to see if there are any more rows to fetch. WHILE @@FETCH_STATUS = 0 BEGIN -- Concatenate and display the current values in the variables. PRINT 'Contact Name: ' + @FirstName + ' ' + @LastName -- This is executed as long as the previous fetch succeeds. FETCH NEXT FROM contact_cursor INTO @LastName, @FirstName END CLOSE contact_cursor DEALLOCATE contact_cursor GO
C.Declaring a SCROLL cursor and using the other FETCH options
USE AdventureWorks GO -- Execute the SELECT statement alone to show the -- full result set that is used by the cursor. SELECT LastName, FirstName FROM Person.Contact ORDER BY LastName, FirstName -- Declare the cursor. DECLARE contact_cursor SCROLL CURSOR FOR SELECT LastName, FirstName FROM Person.Contact ORDER BY LastName, FirstName OPEN contact_cursor -- Fetch the last row in the cursor. FETCH LAST FROM contact_cursor -- Fetch the row immediately prior to the current row in the cursor. FETCH PRIOR FROM contact_cursor -- Fetch the second row in the cursor. FETCH ABSOLUTE 2 FROM contact_cursor -- Fetch the row that is three rows after the current row. FETCH RELATIVE 3 FROM contact_cursor -- Fetch the row that is two rows prior to the current row. FETCH RELATIVE -2 FROM contact_cursor CLOSE contact_cursor DEALLOCATE contact_cursor GO
Gönderen Aslı zaman: 12:37 0 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
SQL SERVER’DA VERİLERİ SAYFALAMAK
by Halil İbrahim ARAÇ 27. Eylül 2009 21:57

| select ROW_NUMBER() OVER(ORDER BY SozID) AS RowNumber,* from Sozler |

| select ROW_NUMBER() OVER(ORDER BY SozID desc) AS RowNumber,* from Sozler |

| CREATE proc [dbo].[VERIGETIR] ( @bas int, @son int ) as begin with kayitseti as ( select ROW_NUMBER() OVER(ORDER BY SozID) AS 'RowNumber',* from Sozler ) select * from kayitseti where RowNumber between @bas and @son end |
| exec VERIGETIR 3,8 |

| ALTER proc [dbo].[VERIGETIR] ( @bas int, @son int ) as begin select * from(SELECT ROW_NUMBER() OVER(ORDER BY SozID) AS RowNumber,* FROM Sozler) as kayitseti where RowNumber between @bas and @son end |
Gönderen Aslı zaman: 12:32 0 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
SQL Server 2008 de Otomatik BackUp için Job Oluşturma (Schedule)
15 Nisan 2010SQL Server üzerinde bulunan Job (Schedule) mantığıyla bir çok işi otomatik olarak SQL Server a yaptırmak mümkün. Bu işlemlerden biride otomatik yedek aldırma. Örneğin bir job tasarlayıp her akşam gece 12.00 da database veya databaselerin yedeğini aldırabiliriz.
Örneğin, SQL Server 2008 üzerinde AdventureWorks databasenin otomatik yedeğini almak için bir job tasarlayalım.
Management Studio >> SQL Server Agent >> Jobs kısmına gelip sağ tık ile New job a geçelim.
General kısmında Name ve istediğiniz bir category i seçtikten sonra Steps kısmına geçiniz.
Steps kısmında bu job için uygulanacak adımlar tanımlanmaktadır. Yani burda birden fazla database in yedeklenmesini farklı adımlar olarak tanımlayabiliriz. Biz bu örneğimiz için sadece tek adım yani AdventureWorks ün yedeklenmesini tanımlayacağız.
Bunun için New butonuna basalım.
Resimde görüldüğü gibi alanları dolduralım. Command kısmında yazan yazı BackUp alma işlemini gerçekleştirecek T-SQL komutudur.
1 | BACKUP DATABASE [AdventureWorks] |
2 | TO DISK = N'c:\\AdventureWorks.bak' |
Gerekli alanların tamamını resimdeki gibi doldurduktan sonra OK e basıp arka ekranda Schedules kısmına gelelim.
Schedules bölümü job un hangi otomatik süreyle işleneceğinin belirleneceği bölümdür. Resimde de görmüş olduğunuz üzere günlük,haftalık,aylık istediğimiz gibi ayarlama yapabilmekteyiz. Biz bu örneğimizde sonucu hızlıca alabilmek açısından dakikada 1 seçeneğini ayarlıyoruz.
Resimde görüldüğü gibi alanları doldurduktan sonra OK e basıp arka ekranda Notifications kısmına geçelim.
Notifications kısmı, job görevini tamamladıktan sonra ilgili kişilere bilgi vermelerin ayarlandığı bölümdür. Ben bu örnek için işlem tamamlandığımda kendimi mail attırıyorum. Bu arada SQL Server 2008 de Mail Gönderme işlemi ile alakalı yazdığım yazıyı okumadıysanız okumanızı tavsiye ederim. Buradan erişebilirsiniz.
Notification larıda ayarladıktan sonra OK e basıyoruz. Job görevini almış durumda.:)
Bu arada ek bir bilgi vermek istiyorum. Bu jobların çalışabilmesi için SQL Server Agent in çalışır durumda olması gerekiyor. Bu bilgide aklınızda bulunsun.
Şimdi 3-4 dk kadar bekleyelim. Bu bekleme sırasında 3-4 defa BackUp işlemi gerçekleşecek ve mailler de mail kutumuza düşecektir.
Evet yeteri kadar bekledik. Mailimizi kontrol ettiğimizde BackUp Complete maillerinin gelmiş olduğunu görüyoruz.
Birde management studio üzerinde ki job un history sine bakalım. Bunun için Management Studio >> SQL Server Agent >> Jobs >> JobumuzunAdi kısmından sağ tık ile View History kısmını açalım.
Bu ekranda, oluşturduğumuz job un bütün tamamlanmış step history sine bakabilirsiniz.
Aklınıza takılan bir şey olursa yorum kısmından sorabilirsiniz.
İyi çalışmalar
Turgay Sahtiyan
...alıntıdır...
Gönderen Aslı zaman: 12:06 0 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
CASE SENSITIVE VERİTABANINDA ARAMA
31 Aralık 2009SELECT ad, soyadFROM b_KisiBilgileriWHERE (UPPER(soyad) LIKE N'KENAR')
SELECT ad, soyadFROM b_KisiBilgileriWHERE (lower(soyad) LIKE N'kenar')
Database diagram support objects cannot be installed...
07 Aralık 2009Basit Trigger Örnekleri
31 Temmuz 2009-- Kullanıcının tablo üzerinde güncelleme yaptığında
-- değişiklik tarihi kolonunun otomatik olarak
-- güncelleme yapıldığı tarihi alınmasının sağlanması
-- için yazılan update trigger örneği
CREATE TRIGGER trigger_Guncellendi
ON Kisiler
for UPDATE
as
declare @id int
select @id = ziyaretID from deleted -- güncelleme için kayıt önce deleted (silinenler)
-- tablosuna gönderilir ardından da kayıt insert edilir
UPDATE Kisiler
SET degisiklikTarihi = getdate() --güncelleme yapıldığı tarihi db ye eklemiş olduk
WHERE ziyaretID=@id
--Kullanıcının birden fazla kayıt silmesini engellemek için yazılan bir delete trigger örneği
CREATE TRIGGER trigger_Silindi --Trigger adı
ON Kisiler --İlgili Tablo
for DELETE --Oluşturulacak trigger türü
as
declare @sayi int
select @sayi = count(*) from deleted --Silme işlemi için deleted (Silinmişler)
--tablosuna gönderilen kayıt sayısı
if @sayi>1
begin
rollback transaction
end
Gönderen Aslı zaman: 13:11 4 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
Basit Store Prosedure Örnekleri
16 Şubat 2008Arkadaşlar bu yazıda size Basit Store Prosedure Örnekleri göstereceğim. Örnek tablomuz aşağıdaki resimdeki gibidir. 
create proc [dbo].[sp_masalar_listele]
as
select
*
from tbl_Masalar
create proc [dbo].[sp_masa_byid]
(
@id int
)
as
select MasaID,MasaNo,MasaDurum,MasaNotu
from A.tbl_Masalar(NOLOCK)
WHERE A.MasaID=@id
create proc [dbo].[sp_masa_sil]
(
@masaID int
)
as
delete from tbl_Masalar
where MasaID=@masaID
create proc [dbo].[sp_masa_ekle]
(
@masaID int output,
@masaNo int,
@masaDurum int,
@masaNotu nvarchar(50)
)
as
insert into tbl_Masalar
values(@masaNo,@masaDurum,@masaNotu)
set @masaID=@@identity
create proc [dbo].[sp_masa_guncelle]
(
@masaID int output,
@masaNo int,
@masaDurum int,
@masaNotu nvarchar(50)
)
as
update tbl_Masalar
set
MasaNo=@masaId,
MasaDurum=@masaDurum,
MasaNotu=@masaNotu
where MasaID=@masaID
İyi Çalışmalar...
Gönderen Aslı zaman: 01:53 2 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
DataList de QueryString ile Alfabetik Sayfalama
18 Aralık 2007
Bu makalemizde DataList kontrolünde alfabetik sayfalama yapacağız. Gridview da wizardlarla verileri çektiğimiz zaman bize sayfalama özelliğinide sağlıyor fakat datalistte verileri wizardlarla bile çeksek bize sayfalama özelliğini kendisi vermiyor. Bazen verileri göstermek için datalist kontrolünü kullanmamız gerekebilir, ve bu durumda bir sayfada ya 1000 tane kaydı bir anda göstereceğiz ki bu hiç tavsiye edilmez yada alfabetik veya numeric olarak sayfalamak için kodlarımızı kendimiz yazacağız.
Biz bu makalemizde alfabetik sayfalama yapacağız. Bunun için alfabetik linklerimizi oluşturacağız ve linke tıklandığında seçilen harfle başlayan kayıtları getirebilecek metodumuzu yazacağız.
İlk olarak DataListin içini doldurmak için metodumuzu yazıyoruz.
Kayıtlarımızın datalist kontrolünde görünmesi için html kodlarımızı da yazıyoruz.
Seçilen harfle başlayan kayıtların getirilmesi için çağrılacak metod.
Datalist in footer template kısmına harfleri seçebilmek için alfabetik linklerimizi oluşturuyoruz.
Link olarak hyperlink kontrolünü kullanacağız, ve hangi harfi seçerse o harfi yine aynı sayfaya querystring le gönderiyoruz.
Sayfamız ilk çalıştırıldığında bütün kayıtları listeliyoruz.
Eğer linke tıklanılıp çağrılmışsa zaten seçilen harfi querystringle gönderip metotta parametre olarak alıyoruz.
Şimdi herhangi bir harfi seçelim.

Böylelikle bir makalemizin daha sonuna geldik. Bir başka makalemizde görüşmek dileğiyle.
Alıntıdır - Yazar: Veysi Sala
Gönderen Aslı zaman: 23:42 4 yorum
Etiketler: ADO.NET, ASP.NET-AJAX, Örnekli-Resimli Anlatım, SQL
SQL Injection - Injection Flaws
Injection Flaws
Dinamik SQL sorgularının kullanıldığı sistemlerde oluşabilecek bir açıktır.
Bir kullanıcı adı parola sınaması yapılan SQL cümleciğinde kullanılabilir.
Select MemberID
From Member
Where Username = '" + txtUsername.Text + "' and Password = '" + txtPassword.Text + "'"
Şeklinde bir SQL cümlesinin kullanıldığı bir sistemde aşağıdaki ifadeleri girelim
txtUsername.Text : ' or 1=1 --
txtPassword.Text : 123
ifadesi aşağıdaki SQL cümlesinin çalıştırılmasını sağlar
Select MemberID
From Member
Where Username = ' ' or 1=1 -- ' and Password = '" + txtPassword.Text + "'"
-- ifadesi SQL Server için yorum satırı anlamına geldi için çalıştırılmaz.
Where ifadesini inceleyelim :
Username = ' ' false döner, 1 = 1 ise true. Or karşılaştırmasında ise False or True’nun sonucu true’dur. Dolayısıyla doğru kullanıcı adı parola girilmese dahi geriye tüm kayıtlar döner ve saldırgan ilk kaydın yetkisi ile içeriye giriş yapmış olur.
Saldırgan “SQL Injection” yöntemi ile veritabanı hakkında daha detaylı bilgi edinebilir. SQL Server üzerinde System Administrator hesabı açabilir, Tüm Tabloların listesini ve bu tabolardaki bilgilere ulaşabilir. Hatta web uygulaması sa yetkisine sahip bir kullanıcı ile çalıştırılıyorsa xp_cmdshell ‘format C:’ ile sisteme format bile atabilir.
Dinamik SQL sorgularındaki bu içeri sızmaları engellemenin yolu parametre kullanmaktır.
Bunu SqlCommand nesnesine SqlParameter tipinde parametre ekleyerek yapabiliriz.
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "[ ConnectionString ]";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = " Select MemberID"
+ " From Member"
+ " Where Username = @username and Password = @password";
cmd.Parameters.AddWithValue("@username",txtUsername.Text);
cmd.Parameters.AddWithValue ("@password",txtPassword.Text);
conn.Open();
int MembetID = Convert.ToInst32(cmd.ExecuteScalar());
conn.Close();
Bu şekilde kullandığımız dinamik SQL sorgularında Injection yönetimini bertaraf etmiş oluruz.
Kaynaklar
http://www.owasp.org/index.php/Top_10_2007-A2
http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf
http://www.mutasyon.net/makaleoku.asp?id=728
Gönderen Aslı zaman: 21:29 3 yorum
Etiketler: ASP.NET-AJAX, Örnekli-Resimli Anlatım, SQL
Veritabanı Yönetim Sistemi ve SQL Komutları
30 Kasım 2007Veritabanı Yönetim Sistemi ve SQL Komutları
Veritabanı Yönetim Sistemi ,aşağıdaki işlemlerden sorumludur;
• Bir veritabamndaki veriler arasında ilişkiler kurmak
• Verileri hatasız bir şekilde saklamak ve veriler arasında tanımlanan ilişkileri bozmamak
• Bir sistem hatası durumunda tüm verileri kurtarabilmek
Bu DERSTE temel Sql komutları ile veritabanını sorgulayarak veri alma, sıralama, çift kayıtları eleme, sonuçların formatlarıni değiştirme işlemlerinin nasıl yapıldığını yazmak istedim. sql hakkında fikir sahibi olanlar bu başlığı geçebilirler.
Sql ifadelerinin kullanımı :
Select ifadesini kullanmadan önce hangi veritabanı ve tablolar ile işlem yapacağımızı bilmeliyiz. Verilerle işlem yapmadan önce bazı komutlarla bu verilerin çekilmesi gerekmektedir. Bu komutlara sql ifadesi diyoruz. Select ifadesi ile seçmek istediğiniz kolon ve satırları belirtebilirsiniz.Select ifadesi veritabanından bilgi çekmek için kullanılır. Select ifadesi ile istediğiniz kolan ve satırları belirtebilirsiniz.
• Select ifadesi istenen satırları bir liste şeklinde verir.
• WHERE ifadesini kullanarak sorgunuzu fîltreleyebilir ve sadece sizin kriterlerinize uygun satırların sorgu sonucu olarak gelmesini sağlayabilirsiniz. Bu kriterler lojik ifadeler, karşılaştırmalar olabilir.
• FROM ifadesi bu verilerin alınacağı tablo isimlerini belirtmemizi sağlar.
“select *from ogrenciler”
deyimi ile öğrenciler tablosundaki veriler getirilir.
Insert : Veritabanına Yeni bir Kayıt eklemek için kullanılır.
“insert into ogrenciler(adi,Nosu) values (‘emrah’ ,’030202007’)”
Şeklindeki bir ifade, isimler tablomuzun “adi” ve “Nosu” alanlarına yeni değerleri ekler.
Update : Veritabanındaki kayıtları güncellemek için kullanılır.Hangi kayıtların güncelleneceği,yine,bir koşul veya koşullarla belirtilebilir.
“update ogrenciler set adi=’Emrah’ where Soyadi=’Aslan’ ”
Şeklindeki bir ifade,soyadi “Aslan”olan kayıtların ad verisinin “Emrah” olarak değiştirir.
Delete : Adından da anlaşılacağı gibi tablodan kayıt silmek için kullanılan bir ifadedir.
“delete from ogrenciler Where Soyadi=’Aslan’ ”
İfadesi “soyadi” değerleri “Aslan” olan tüm kayıtlari siler.
Her Ne Kadar “WHERE” koşulu opsiyonel gözüküyorsa da, pratikte mutlaka kullanılması gerekir.
VERİ SÜZME
Zaman zaman ihtiyacınız olan verileri fıltrelemek isteyebilirsiniz. Verilerinizi Where ifadesinden sonra kullanacağınız bazı koşullar ile fütreleyebilirrsiniz. Bu koşullar şunlardır;
* Karşılaştırma operatörleri =, >, <, >=, <=, <>
* String karşılaştırmalar LIKE ve NOT LIKE
* Lojık operatörler AND, OR
* Lojik operatörler (Negatif) NOT
* Değer aralıkları BETWEEN ve NOT BETWEEN
* Değer listeleri IN ve NOT DM
* Bilinmeyen değerler IS NULL ve IS NOT NULL
Karşılaştırma operatörlerinin kullanımı:
Karşılaştırma operatörleri ile tablodaki bir veri ile belirlenmiş bir veri veya hesaplanmış veri karşılaştınlabilir. Fakat karşılaştırmak istediğiniz alan ve verinin tipleri aynı olmalıdır. Sayısal bir ifadeyi tarih ifadesi ile karşılaştıramazsınız. Burada kullanılan operatörler;
= Eşittir
> Büyüktür
< Küçüktür
>= Büyük veya eşittir
<= Küçük veya eşittir
Lojik operatörler :
Birden fazla kriterleri bir arada kullanmamıza yardımcı olurlar. AND operatörü kullandığımız takdirde verdiğimiz tüm koşullara uyan kayıtlar gelir. OR operatörü kullandığımız takdirde verdiğimiz koşullardan birine uyanlar gelir. NOT kullandığımızda ise NOT dan sonraki koşulu sağlamayan kayıtlar gelir. Birden fazla koşul kullandığımız durumlarda parantezi koşullan gruplamak için kullanabiliriz. Böylece daha okunaklı olur ve gruplama işlemini yapabiliriz.
Değer aralıkları:
BETWEEN ifadesini Where ile beraber kullanarak belli bir değer aralığmdaki kayıtlan getirebiliriz. Between ifadesi ile belirlenen aralık dışında kalan verileri almak için NOT BETWEEN kullanabiliriz. Between ifadesinde verilen aralığın bir bitiş noktası olmadır. Between ile verilen aralık (10 and 20) aslında AND ifadesi kullanılmı ve büyük eşittir, küçük eşittirden oluşan bir koşuldur. Bunu kısaca between ifadesi ile yapmaktayız.
Örneğin (KOD BETWEEN 10 AND 20) aslında ((KOD>=10) AND (KOD<=20)) demektir.
Bilinmeyen Değerler :
Veri girişi sırasında tablodaki kolona veri girilmemiş olabilir ve default veri de atanmamış olabilir. Bu durumda bu kolondaki değer NULL'dur. Null değer 0 (nümerik) veya boşluk (string) ile aynı şey değildir. Bir alana değer girilmemiş kayıtları listelemek isin IS NULL ifadesini kullanabiliriz. Null ifadesini diğer koşullar ile kullanamayız. Yani >Null diye bir şey diyemeyiz. Kolonlar Null değer içerebilir tanımını tablo yaratırken yapabiliriz.
SQL Server 2005 - A Developer's Guide
14 Ekim 2007Full Backup Alma (Resimli Anlatım)
30 Temmuz 2007Yedeğini almak istediğiniz veri tabaının üzerine sağ tıklayarak açılan menüden Tasksı ordan da Backup seçeneğine tıklıyorsunuz. (Resim-01)
Daha sonra açılan pencereden yedekleme ayarlarını yapıyorsunuz. Biz bu örneğimizde Full backup alacağız, o yüzden backup type kısmından full ü seçeçeğiz. Destination kısmında veritabanımızı yedekleyeceğimiz yeri seçiyoruz. Listeye default olarak bir adres gelecek, eğer kayıt yapacağınız yer orası değil ise o uzantıyı seçtikten sonra remove ile kaldırıyorsunuz. Add butonuna basarak da yeni bir adres seçiyorsunuz.(Resim-02)
OK butonuna tıkladıktan sonra Select Backup Destination penceresinde yeni klasör adresinin göründüğünü göreceksiniz.(Resim-05)
Eğer backup başarılı ise onay esajı ile karşılaşacaksınız. (Resin-07)
Resim-08 Gönderen Aslı zaman: 20:38 0 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
Yedekleme Methodları ve Dikkat Edilmesi gerekenler
29 Temmuz 2007SQL Server, farklı bir çok yedekleme methodu sunmuştur.
A- Full Database Backup Yapma
Eğer veritabanı read-only ise, full database backups veri kaybını önlemek için yeterli olabilir. Full database backups alındığı zaman SQL Server:
1- Aktiviteleri yedekler.
2- Transaction log’daki onaylanmamış
transactionları yedekler.
Örnek: Aşağıdaki örnek; mantıksal ismi nwndbac olan permanent backup files’ı yaratır ve full database backups’ı icra eder.
USE master
EXEC sp_addumpdevice ‘disk’, ‘nwndbac’, ‘C:\MyBackupdir\Nwndbac.bak’
BACKUP DATABASE northwind TO nwndbac
Örnek: Aşağıdaki örnek; nwndbac dosyasına full database backups’ı yapar ve dosya üzerinde bulunan önceki yedeklerin üzerine yazar.
BACKUP DATABASE northwind TO nwndbac WITH INIT
Örnek: Aşağıdaki örnek; temporary backup disk file yaratır ve bu dosyaya full database backup işler.
BACKUP DATABASE northwind TO
DISK = ‘D:\Temp\Mytempbackup.bak’
B- Differantial Backup Yapma
Değişmiş veritabanının yedeğini açmak için gerekli olan zamanı, minimize etmek için differantial backup yapılmalı. Bu full database backup yapılmışsa kullanılabilir. Differantial backup’ta SQL Server:
1- Son full database backup’tan beri değiştirilen veritabanı veritabanı
bölümlerini yedekler.
2- Differantial backup sırasında yer tutan aktiviteyi yedekler.
Differantial backup yapılırken aşağıdaki adımlar göz önüne alınmalı:
1- Son full database backup’tan beri belirli bir row farklı zamanlarda değiştirilmişse, Differantial backup row’un sadece son değerini içerir. Bu, row hakkındaki tüm değişiklikleri içeren transaction log’dan farklıdır.
2- Yedekleme zamanı minimize edilebilir; çünkü yedek setleri, full backups’dakilerden daha küçüktür ve transaction log’ların işlenme zorunluluğu yoktur.
Syntax BACKUP DATABASE {database_name @database_name_var}
TO
[WITH
[[,]DIFFERENTIAL]
]
Örnek: Aşağıdaki örnek; temporary backup file üzerinde differantial backup yaratır.
BACKUP DATABASE northwind TO
DISK='D:\Mydata\Mydiffbackup.bak'
WITH DIFFERENTIAL
C- Transaction Log Yedeği Yapma
Veritabanı değişikliklerini kaydetmek için transaction loglar yedeklenir. Transaction loglar, full database backup yapılırken yedeklenirler:
1- En azından bir kere full database backup yapmadıkça, transaction log’un yedeği alınmaz.
2- Uygun veritabanı yedeği olmadan transaction loglar’ın yedekleri açılamaz.
Gönderen Aslı zaman: 00:43 0 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
SQL Örnekleri
25 Temmuz 2007Daha önce açıklamış olduğum sql ifadelerinin her biri ile ilgili örnek yazmayı düşünüyordum. Yazmadan evvel şöyle bir gezindim internette ve çok güzel bir web sayfasına rastladım. Her bir ifade ile ilgili örnekler yapmış arkadaşlar. istifadenize sunuyorum.
http://www.metu.edu.tr/~e137346/sql.htm
Gönderen Aslı zaman: 19:15 3 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
Trigger (Tetikleyici)
23 Temmuz 2007- Trigger nedir?
Bir tablo üzerinde belirli bir olaya bağlı olarak tetiklenip çalışan SQL kodlarıdır. Diğer bir değişle trigger tetikleyicidir,veritabanında kayıt eklerken,silerken ve değiştirirken arkda tarafata kendi kendine calışan sql cümleleridir. - Triggerlar neden kullanılır?
Genel amacı veri bütünlüğünü korumaktır. Bunun için yapılacak herhangi bir değişiklikte izin verilmemiş işlemler veya gerçekleşmesi durumunda veri bütünlüğünde bozulmalara yol açacak işlemlerde veri bütünlüğünün korunmasına yardımcı olurlar. - Hangi olaylar trigerları tetikler?
Tablo üzerindeki triggerları tetikleyen olaylar insert, update, delete olaylarıdır. - Triggerlar nerde kullanılır?
Bir tablo üzerinde bu olayların öncesinde ve sonrasında tetiklenecek istenildiği kadar trigger yazılabilir. Fakat genel eğilim ve kullanım her bir olay için tek bir trigger kullanmak şeklindedir. Örneğin stok hareketleri sonucunda stok miktarlarının azalması veya artması işlemlerinin, veya tahakkuk ve tahsilatlar sonucu cari hesapların etkilenmesi işlemlerinin triggerlar aracılığı ile yapılmaları tipik bir trigger kullanım yeridir. - Triggerların çeşitleri nelerdir?
Tablo üzerindeki triggerları tetikleyen olaylar insert, update, delete olaylarıdır. Bu olaylara istinaden 3 ana tip triggerdan bahsedilir. Bunlar insert triggerı, update triggerı, delete triggerı şeklindedir.
Stored Procedure (Saklı Yordam) Örneği
22 Temmuz 2007- Input parametrelerini kabul ederek ve birçok değerin geri dönmesini sağlar.
- Database içindeki işlemleri yapmak için programlama deyimleri içerir.
Stored procedure'lar genellikle rutin hale gelmiş işleri kolayca yapmak için geliştirilirler. SQL deyimleriyle yazılan stored procedure'lar sadece ilk kez çalıştırıldıklarında derlenirler. Daha sonraki çalıştırma işlemlerinde derlenmezler ve böylece hızlı bir biçimde çalışma sağlanmış olur.
Bir sql ifadesi stored procedure olarak saklanabilir. Örneğin "select * from Kisiler" bir stored procedure olarak saklanabilir. Ancak daha çok parametre alan Stored Procedure'ler kullanılır.
Stored Procedure Tanımlama:
Çalıştırılması:

veya
Gönderen Aslı zaman: 22:42 0 yorum
Etiketler: Örnekli-Resimli Anlatım, SQL
Stored Procedure (Saklı Yordam)
- Stored Procedure nedir?
Bir tabloya bağlı olmaksızın veritabanı içinde tanımlanan belirli bir işi yapmaya yönelik kodlardır. Başka bir değişle "Derlenmiş sql cümlecikleridir".
Bunlar birer veritabanı nesnesi oldukları için, doğrudan veritabanı yöneticisi olan programda (örneğin Sql Server) yer alırlar. Veritabanınızı nereye taşırsanız orda yer alırlar.
- Stored Procedure ne işe yarar?
Çalıştırmak istediğimiz sql cümleciklerini bir Saklı Yordam içine yerleştirerek, bunun bir veritabanı nesnesi haline gelmesini ve çalışıtırıldığında doğrudan, veritabanı yöneticisini üzerinde barındıran sunucu makinede işlemesini sağlarız.
- Stored Procedure faydaları nelerdir?
- İstemci makinelerdeki iş yükünü azaltır ve performansı
arttırır (yazıldığı zaman aynı zamanda compile edildikleri için query optimizer tarafından optimize edilmiş en hızlı şekilde çalışır). - Sql cümleleri, Saklı Yordam’ lardan çok daha yavaş sonuç
döndürür - Çok katlı mimariyi uygulamak isteğimiz projelerde faydalıdır.
- Networkü (Ağ Trafiğini) azaltır.
- Açık Sql cümleciklerine nazaran daha güvenlidir
- Programlama deyimlerini içerebilirler. if, next, set vs.. programlama dillerindekine benzer özellikler sunar. Gelen parametrelere göre sorgu yapılıp sonucun dönmesi sağlanabilir.
Bu linkte 'Stored Procedure'ler ile ilgi Burak Selim Şenyurt'a ait çok güzel bir makale, örneği incemelinizi tavsiye ederim
http://www.csharpnedir.com/makalegoster.asp?MId=208










