Volkan Atasever

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve daha bir çok yazılarım...

Veritabanında tablolar arası ilişkiyi nasıl bulabilirim?

clock Ekim 21, 2009 04:11 by author Volkan Atasever

Database Yöneticileri ve SQL Server geliştiricileri genellikle bu ilişkileri bulmak için hızlı bir script'e gereksinim duyar. Normal yollardan incelemek gerçekten bazen imkansıza yakın bazen ise uzun zamanlar alan bir işkenceye dönüşmektedir. Aşağıda SQL Server NewsGroup'larda rastladaığım bir scripte yer vermek istiyorum. Oldukça kullanışlı bir script. Yeni başlayanların ve hatta piyasada deneyimli olanların dahi uzun kağıtlarda bu bağlantıları çözmeye çalıştığına şahit olduğum için faydalı olacağına eminim. AdventureWorks veritabanına ait bir örnek çıktı da aşağıda verilmiştir. Ana tabloyu ve bunun alt tabloları ile beraber foreign keylerin dökümünüde vermektedir.

 

Select

 

object_name(rkeyid) Parent_Table,

 

object_name(fkeyid) Child_Table,

 

object_name(constid) FKey_Name,

 

c1.name FKey_Col,

 

c2.name Ref_KeyCol

 

From

 

sys.sysforeignkeys s

 

Inner join sys.syscolumns c1

 

on ( s.fkeyid = c1.id And s.fkey = c1.colid )

 

Inner join syscolumns c2

 

on ( s.rkeyid = c2.id And s.rkey = c2.colid )

 

Order by Parent_Table,Child_Table

 

 

Script'in AdventureWorks örnek database'in den alınan çıktısı:

 



Connection strings for SQL Server 2008

clock Haziran 3, 2009 05:13 by author Volkan Atasever

.NET Framework Data Provider for SQL Server 

 

 

 

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 ile bağlantı - Yeni Başlayanlar için

clock Mayıs 31, 2009 02:15 by author Volkan Atasever

Çoğunlukla projelerinde kullanmak için ve database bağlantısında sıkıntı yaşayan arkadaşların sorularına binayen koyduğum bir iki örnek.

 

//          Birinci örnek 

            string str = "Server=(local);DataBase=databaseismi;Integrated Security=SSPI";

          

 string rfi;           

 SqlDataReader rdr = null;            

 SqlConnection conn = new SqlConnection(str);           

 SqlCommand cmd = new SqlCommand("select cümleciğin", conn);           

 cmd.CommandType = CommandType.Text;           

 conn.Open();           

 rdr = cmd.ExecuteReader();            

 while (rdr.Read())           

 {               

             rfi = Convert.ToInt32(rdr[0]);           

 }           

 rdr.Close();           

 conn.Close();

  

//ikinci örnek         

            

 SqlCommand InsertCurrencyCommand = new SqlCommand();           

 conn = new SqlConnection(con);           

 InsertCurrencyCommand.CommandText = "UPDATE blablabla";           

 InsertCurrencyCommand.Connection = conn;           

 conn.Open();

 InsertCurrencyCommand.ExecuteNonQuery ();

 conn.Close();



SQL Server 2008 ile Database'den mail göndermek

clock Mayıs 13, 2009 23:22 by author Volkan Atasever

 

 

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 Injection !

clock Mayıs 8, 2009 06:30 by author Volkan Atasever

 

SQL injection nedir ve naıl yapılır diyenlere güzel bir örnek vermek istiyorum hem açıklayıcı hem de ne olduğunu daha iyi kavramanıza olanak sağlamakta;

DECLARE @password VARCHAR (20);
DECLARE @input    VARCHAR (20);
DECLARE @ExecStr  VARCHAR (1000);

SELECT @password = 'gizlibirsifre';

--  'OR''=' girmek
SELECT @input = '''OR''''=''';

SELECT @ExecStr = 'IF ''' + @password + ''' LIKE ''' + @input + ''' PRINT ''Password Accepted''';

EXEC (@ExecStr);
GO



Volkan Atasever Kimdir ?

E-Mail: volkan(et)volkanatasever.com

Kurucu&Genel Müdür/S4G
Bilgisayar Mühendisi
Eğitmen ve Danışman
Teknoloji Yazarı

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve bir çok kategoride yazılarım...

     

Yazılım Kitaplarım

   

Şiir Kitaplarım

Ulusal Yayınlar ve Programlar

 

Sosyal Ağlarım

 

 

 

 

Retro Bilgisayar Dergimiz

Türkçe Retro Bilgisayar dergimiz haziran 2016'da ilk sayısını çıkardı.  Sizde katkıda bulunmak isterseniz bana mail atmanız yeterli. Dergimiz PDF formatında ve tamamen ücretsizdir. Software4Galaxy imtiyaz sahibidir. S4G sitesinden veya facebook sayfasından dergilere ulaşabilirsiniz.

Üye Olduğum Dernek ve Organizasyonlar

 

Yasal Bilgi

Sitedeki yazıları,kodlar ve diğer materyaller Volkan Atasever'e aittir. Yazarı ve siteyi kaynak göstererek yazıları paylaşabilirsiniz.  Copyright(c)2004-2019

Sign In

Yazılım