| Veri türleri, 
				numara, resim, tarih gibi bir sütunda veya bir değişkende depolanabilen türdeki 
				bilgiyi belirtirler. SQL Server 28 "sistem tanımlı" veri türünü tanır. Bu veri 
				türleri haricinde, belirli ihtiyaçları karşılayabilmeniz için kullanıcı tanımlı 
				veri türlerini T-SQL ve .NET ile yaratabilirsiniz. 
 Sistem tanımlı veri türleri kategorileri:
 * Karakter Dizilimi (Character strings)
 * Unicode karakter dizilimi (Unicode character strings)
 * Tarih ve saat (Date and time)
 * Tahmini sayısal (Approximate numeric)
 * Kesin sayısal (Exact numeric)
 * Tamsayılar (Integer numbers)
 * Parasal (Monetary)
 * Çift değişkenli (Binary)
 * Özel (Special)
 
 Bazı durumlarda, bir veri türünü T-SQL kodda ilişkilendirmek için farklı 
				tanımlayıcılar/tanıtıcılar kullanabilirsiniz. Örneğin; Char veri türü Karakter 
				olarak, varchar ise karakter çeşitliliği olarak ele alınabilir. Bu eş anlamlı 
				sözcüklerin bazıları ANSI SQL-92 standart gereksinimlerine dayanmaktadır.
			
	
	Karakter Dizilimleri
 Karakter veri türleri karakter 
		dizilimlerini içerir. Dört farklı karakter türü, uzunlukları ve depolama 
		özellikleri açısından çeşitlilik gösterirler.
 * char
 * varchar
 * varchar(max)
 * text
 Char veri türü, sabit boyuttaki dizilimleri depolamak için kullanılır. Daha 
		önce belirtildiği gibi, bu veri türünün maksimum uzunluğu/boyutu 8,000 
		karakterdir ki bu, eski versiyonlardaki 255 karakter limiti bağlamında kayda 
		değer bir artıştır. Bir değişken veya bir tablo sütunu nominal boyutundan daha 
		kısa boyuttaki bir dizilimle atanmışsa, bu değişken belirli alan uzunluklarını 
		doldurmak için ardındaki boşluklarla tıkanmıştır.
 Varchar veri türü 8,000 karakter uzunluğa kadar olan çeşitli boyutlarda 
		dizilimleri depolar. Uzunluğu nominal boyuttan az olan karakter değeri bir 
		sütuna veya bir değişkene atandığında SQL Server peşinden boşluklar eklemek 
		yerine onu olduğu gibi kaydeder. Varchar veri türleri dizilimin uzunluğunu 
		kaydetmek için 2 ilave byte kaplar/tutar.
 
 text veri türü büyük miktarlardaki datayı depolamak için 
		kullanılır. Tek bir alan 2GB (231 - 1 byte) bilgiye kadar depolayabilir. Sadece 
		16 byte pointer tabloda depolanır. Bu nedenle ilave işlem, metin sütunlarının 
		kullanımıyla ilişkilendirilir. Metin değerleri işlemi için bazı özel 
		fonksiyonlar bulunmaktadır.
 
 Not
 text veri türlerini kullanmaktan kaçının çünkü Microsoft, SQL 
			Serverın gelecek versiyonlarında bunu kaldırmayı planlamaktadır. Onun yerine 
			yeni varchar (max) veri türü kullanılmalıdır.
 Varchar (max), varchar veri türü gibi görünür ve işler ancak dahili yapı ve 
			işlevselliği daha çok metin veri türü gibidir.
 Aynı zamanda 2 GBa kadar olan geniş dizilimleri depolamak için tasarlanmıştır. 
			Dizilim, kaydın geri kalanıyla veri sayfasında değil özel veri sayfalarında 
			depolanır. Bunun en büyük avantajı varchar ile çalışan çoğu dizilim operasyon 
			fonksiyonunun aynı zamanda varchar (max) ile de çalışmasıdır; bununla birlikte 
			ilave işlevsellik için birkaç yeni fonksiyon bulunmaktadır. Aşağıdaki komut 
			farklı karakter dizilimi veri türlerini kullanan dört alanlı bir tablo yaratır:
 
			Karakter sabitleri 
			kotalarla Transact-SQLden geri kalanından sınırlandırılır. Örneğin; aşağıdaki 
			ifade contact bilgisi girer:
				| Create
									tableContacts(ContactId
									char(8),
								
							
					Name 
      varchar(50),
					Note
								text,
					Resume
								varchar(max)) |  
			
				Unicode Karakter Dizilimleri
					| insert into Contacts (Contactld, 
      Name, 
      Note, Resume)
						values
									(
									CO-92- 
81
									,
									Tom 
      Jones
									,
									
										[email protected]
									,
									N/a
									) |  Microsoft Sql Server 2005 non-ASCII karakter 
			setleri kullanan Unicode datayı depolamak için dört karakter veri türüne 
			sahiptir. Bunlar char, varchar, varchar (max) ve metin veri türlerine 
			eşdeğerdir ve aşağıdaki gibi adlandırılırlar:
 * nchar
 * nvarchar
 * nvarchar(max)
 * ntext
 Bu yeni veri türleri ile eski veri türleri arasındaki fark; yeni veri 
			türlerinin karakter başına 2 byte kaplayan Unicode karakterlerini 
			tutabilmeleridir. Bu nedenle, depolayabildikleri maksimum dizilim uzunluğu, 
			eski veri türlerindekinin yarısıdır. (4,000 for nchar and nvarchar).
 Aşağıdaki ifade önceki örnekteki ile aynı tabloyu yaratır ancak Unicode veri 
			türlerini kullanır.
 
 
			Unicode karakter 
			sabitleri aynı zamanda kotalarla sınırlandırılır ancak ön ek olarak N konulur.
				| Create table Contacts_2(ContactId nchar(8),
					Name nvarchar(50),
					Note
								ntext,
					Resume
								nvarchar(max)) go
 |  
			Bu N öneki biraz 
			garip gözükebilir ancak buna alışacaksınız. Microsoft belgeleme, Unicode 
			sabitleri örnekleriyle doludur. Bir süre önce Microsoftun neden N i ön ek 
			olarak kullandığını keşfettim. "National" (Ulusal) kelimesini temsil 
			etmektedir. Ayrıca bu veri türleri için kabul edilebilir diğer alternatif 
			tanımlayıcılar;
				| insert into Contacts_2 (Contactld, 
      Name, 
      Note, Resume)values (NCO-92-
81, NTom 
      Jones, N[email protected], NN/a} |  * National char
 * National char varying
 * National char varying (max)
 * National text
 
 Not
 Belirgin olarak, N önekini sabitlerde kullanmaktan kaçınmanız sorun 
				değildir. SQL Server dizilimleri otomatik olarak Unicode eşdeğerine çevirir. 
				Tabii ki Unicode sütunları ve değişkenleriyle uğraşırken N eklemek daha iyidir 
				ancak eklememek de büyük bir sorun yaratmaz. Sadece CPU kendiliğinden 
				gerçekleştirilecek bu çevirme işlemi için ekstra devre yapmak durumunda 
				kalacaktır.
 Bununla birlikte N eklememenin probleme dönüşeceği durumlar da bulunmaktadır. 
				Dizilim sabitiniz sorgu ölçütlerin parçasıysa bu durumda N önekinin varlığı 
				sorgulamanın uygulanışını belirgin ölçüde etkileyecektir. Eğer sütun 
				non-Unicode olarak tanımlanmış ve ölçüt N ön ekiyle belirtilmişse SQL Server 
				tablonun her sırasını Unicode sabitiyle karşılaştırmak için değiştirecektir. 
				Sonuç olarak sorgulama, indexi kullanmak yerine tablo taraması yapacaktır.
 
 Tarih Ve Saat Veri Türleri
 SQL Server tarih ve saati depolamak için iki T-SQL veri 
			türünü destekler:
 * datetime
 * smalldatetime
 
 Bu iki veri türü arasındaki fark kapladıkları alandır; datetime 8 byte, 
			smalldatetime sadece 4 byte kullanır. Aralarındaki diğer farklar ise depolanan 
			tarihin doğruluğu/kesinliği ve kullanılabilecek tarihlerin genişliğidir. 
			Smalldatetimeın doğruluğu bir dakikadır ve 1 Ocak 1900den 6 Haziran 2079a 
			kadar olan zamanı kapsar ki bu da yeterinden fazladır. Datetimeın doğruluğu 
			3.33 milisaniyedir ve 1 Ocak 1753ten 31 Aralık 9999a kadar olan süreyi 
			kapsar.
 Tarih ve saat sabitleri, karakter diziliminde olduğu gibi Transact-SQLde kota 
			sınırlamalarıyla yazılır:
 
			Not
				| update 
      Contacts_2 Set DateOfBirth = 2/21/1965 10:03 AM where ContactId = CO-92-
81 |  SQL Server bir çok değişik tarih ve saat formatını desteklemektedir.
				Convert
				fonksiyonu tarih ve saat fonksiyonlarının formatını kontrol eden bir parametre 
				kabul eder.
 
 Eğer bir sabitte zaman belirtilmemişse SQL Server otomatik varsayılan değer 
				olarak geceyarısı 00:00ı atar. SQL Serverın saati bu veri türlerinin bir 
				parçası olarak kaydettiğini aklınızda bulundurmalısınız. Bu nedenle özel tek 
				bir günde doğmuş kontaktlarınızı seçmek isterseniz aşağıdaki gibi bir şey 
				kullanmamalısınız:
 
			Bu ifade, o günün 
			geceyarısına ayarlanmış DateOfBirthlü kayıtları seçip alacaktır. Alanda 
			değerleri kaydeden diğer uygulamalar da aynı hatayı yapsaydı bu kabul 
			edilebilir bir çözüm olabilirdi. Aşağıdaki daha uygun bir çözümdür:
				| select
								* 
							from 
      Contacts_2 where DateOfBirth = 2/21/1965 |  
			Tam Sayılar
				| select
										* 
									from Contacts_2 where DateOfBirth 
      >= 2/21/1965 and 
      DateOfBirth =< 2/22/1965 |  SQL Server 1-, 2-, 4-, and 8-byte tamsayıları destekler. Bit veri türü 
			mantıksal doğru ve yanlış değerleri temsil eden 1 ve 0 depolamak için 
			kullanılır. Aşağıdaki tablo tamsayı veri türlerini, depolama boyutlarını ve 
			değerlerin aralığını listeler:
 
		int veri türleriyle ilgili en 
			güzel şey küçük alanda oldukça fazla sayı depolayabilmesidir. Bu nedenle sık 
			sık anahtar değerler (key values) için kullanılırlar. Ana anahtarın veri türü 
			int ise tablo dört milyara kadar kayıt depolayabilir ki miktar herhangi bir 
			amaç için oldukça yeterlidir. Bu nedenle tablonuzun boyutundan emin değilseniz 
			ana anahtar olarak int kullanın.
			| Data Type | Storage Size | Minimum | Maximum |  
			| int | 4 bytes | -2, 147, 483, 648 (-2G) | s2, 147, 483, 647(26?1) |  
			| smallint | 2 bytes | -32768 (-32Ks) | 32767 (32K-1) |  
			| tinyint | 1 bytes | 0 | 255(28-1) |  
			| bigint | 8 bytes | -9,223,372,036,854,775,808 (-263) | 9,223,372,036,854,775,807 (263-1) |  
			| bit | 1 bit | 0 | 1 |  
 Not
 Depolama (warehousing) sistemleri giderek büyüyor ve aynı zamanda iki 
				milyardan fazla tamsayı kullanabilen dağıtımı yapılmış database 
				uygulamaları/yürütmeleri de bulunmaktadır. Bu durumlarda ana anahtar olarak 
				bigint kullanabilirsiniz.
 
 Tamsayı sabitleri sınırlayıcıya gereksinim duymaz:
 
			Tahmini / Yaklaşık Sayılar
				| update 
      Inventory Set StatusId = 3, Operational = 0 Where InventoryId = 3432 |  Ondalık sayılar genellikle tek veya 
		çift kesinlik (single and double precision) olarak da bilinen real ve 
		float  veri türlerinde depolanır. Fazla yer kaplamamaları ve geniş 
		aralıkta sayıları tutabilmeleri avantajdır. Tek sorun şudur ki; kati/kesin 
		değillerdir. Yaklaşık olarak orijinal ondalık sayıya eşdeğer yaklaşık/tahmini 
		ama kesin olamayan sayının çift değişkenli temsilini depolarlar.
 
 Kesinlik/Doğruluk (Precision) numaradaki önemli/karakteristik basamak/hanelerin 
		sayısı ve Scale ondalık noktanın sağa doğru uzanan basamak/hanelerin sayısıdır. 
		Örneğin; 123456.789 sayısının 9 doğruluğu ve 3 scalei vardır. Gerçek sayıların 
		basamakları 7ye kadardır ve float sayıların precisionı 15 basamağa kadardır. 
		Bu nedenle, Dünya ve Ay arasındaki mesafeyi ölçerken birkaç metrenin 
		önemsenmeyeceği bilim ve mühendislik için idealdirler. Fakat şirket bütçesinin 
		son kuruşuna kadar kesin olması gereken finansal endüstri için yeterli 
		değillerdir.
 
 Matematikte 234,000,000,000 sayısını kaydetmek için 234xl09 ve Transact-SQLde 
		234E9 kullanabilirsiniz. Bu, Scientific Notation (Bilimsel İşaretleme) olarak 
		bilinir. Eden sonraki sayı exponent (kuvvet), Eden önceki sayı mantissa 
		(logaritmanın ondalık kısmı) olarak adlandırılır. Bu işaretleme küçük sabitleri 
		depolamak için de kullanılır. Matematikte 0.000000000234, 0.234x109 olarak 
		yazılabilir ve Transact-SQLde 0.234E-9 olarak yazılabilir.
 SQL Server bu sayıları depolamak için IEEE 754 standartını kullanır. Float veya 
		gerçek bir değişken ve sütun bir sayıya atandığı zaman SQL Server önce ondalık 
		sayıyı onun çift değişkenli temsiline çevirir. Bu çevirme işlemi , bu 
		değerlerin ondalık versiyona eşitliğinde kesin değil yaklaşık olmasına 
		sebeptir. Bu nedenle Yaklaşık Sayılar (approximate numbers) olarak anılırlar. 
		Bu yüzden bu tarz iki sayı arasındaki dengeye güvenmemelisiniz. Kullanımlarını 
		Where clauses to < and > operatörlerinde sınırlandırmalı ve = 
		operatörünün kullanımından kaçınmalısınız.
 Exact Numbers
 Ondalık veya sayısal veri türleri sayıları depolarken 
				yaklaşıklık/tahmini kullanmazlar. Ne yazık ki gerçek ve float veri türlerine 
				göre daha fazla yer/alan gerektirirler. Ondalık bir sütun veya değişken 
				tanımlandığında/belirtildiğinde basamağını ve doğruluğunu (scale and precision) 
				belirtmelisiniz.
 SQL Server maximum 38 doğruluktaki sayıları depolayabilir. Basamak (scale) 
				doğruluktan daha az ya da onunla eşit olabilir.
 Aşağıdaki örnekte ağırlık ve yükseklik sütunlarının precisionı 5, scalei 
				2dir. Sütunlar ondalık noktadan sonra 2 basamağa kadar ve ondalık noktadan 
				önce 3 basamağa kadar olabilir.
 
 
			Ondalık sabitlerin de sınırlamaya gereksinimi yoktur:
				| Create table Patient (PatientId int,
					FullName
								varchar(BO),
					Weight
								decimal(5,2),
					Height
								decimal(5,2),
					ADP
								smallint,
					BDZ
								tinyint)
					go |  
			Parasal Veri Türleri
				| insert into Patient (Patientld, 
      FullName, Weight, Height, 
      ADP, BDZ)
					values (834021, Tom Jones, 
      89.5, 188.5, 450, 11) |  Money and smallmoney veri türleri 
		ondalık sayıların precionları ve küçük boyuttaki gerçek sayılar arasındaki 
		uzlaşma/orta yoldur. Smallmoney 4 byte kaplar ve int sayılar gibi aynı dahili 
		yapıyı kullanır. Veri ondalık noktadan sonra dört basamağa kadar olabilir. Bu 
		nedenle --214,768.3648 ile 214,768.3647 aralığındaki sayıları smallmoney veri 
		türünde depolayabilirsiniz. The Money veri türü bilgiyi yerleştirme için the 
		bigint veri türüyle aynı yapıyı kullanır. Depolama için 8 byte kullanır, o 
		yüzden değerleri -922,337,203,685,477.5808 ile +922,337,203,685,477.5807 
		arasında olmalıdır.
 Parasal sabitler den önce $ veya diğer 18 para sembolünden biri gelebilir (SQL 
		Server Books OnLineda listelenmişlerdir):
 
			Binary Veri Türleri
				| update 
      Inventory_2
					Set Rent = $0,
					LeaseCost
								=
								$119.95 
						
					Where InventoryId = 3432 |  Binary veri tipleri bitlerin diziliminin yerleştirilmesi için kullanılır. SQL 
				Server dört temel çift değişkenli veri tipini, karakter veri türü ile benzer 
				nitelikleri desteklemektedir:
 * binary
 * varbinary
 * varbinary(max)
 * image
 
 Binary and varbinary veri türleri 8,000 byte bilgi ve resim, varbinary (max) 2 
				GB veri depolayabilir. Aşağıdaki iki çift değişkenli tablo örneği 
				bulunmaktadır:
 
			Çift değişkenli sabitler olarak 
			yazılır bit diziliminin onaltılık simgeleriyle yazılır ve ön ek olarak Ox 
			(sıfır ve x) kullanılır:
				| CREATE TABLE MyTable (
					
					Id
								int,
					BinData
								varbinary(8000),
					Diagram
								varbinary(max))
					go |  
			SQL Server 2005in yeni ve özgün 
			bir özelliği de bir dosyayı okumayı ve onu varbinary (max) sütuna rowset olarak 
			yüklemeyi sağlayan yeni BULK OLE DB ile çalışan OPENROWSET() fonksiyonudur.
				| Update 
      MyTable
					Set BinData = Ox82A7210B
					where Id = 121131 |  
			Özel Veri Türleri
	
				
					timestamp : T
				imestamp veri türü tarih ya da saat bilgilerini yerleştirmek için değil, daha 
				çok kaydın versiyon numarası olarak işleyen çift değişkenli değerler için 
				tasarlanmıştır. Değer, kayıt her güncellendiğinde güncellenir ve değer 
				databasede tektir. Optimistik kilitleme uygulaması için kullanılır. Tabloda 
				sadece bir alan timestamp değer olarak tanımlanabilir. 8 byte kaplar.
				| UPDATE dbo.MyTable
					SET Diagram = (SELECT *
					FROM
								OPENROWSET
								(
								BULK
								C:\My Pictures\desktop.bmp
								,
							
					SINGLE_BLOB)
								AS
								a
								}
					where Id = 121131 |  
 uniqueidentifier :
					Uniqueidentifier veri tipi 16 byte çift değişkenli değer 
				depolar. Bu değerler genellikle globally unique identifiers (GUIDs) olarak 
				anılırlar. Sistem yeni bir GUIDs değer oluşturduğunda aynı değerin ne aynı 
				bilgisayarda ne de dünyadaki herhangi başka bir bilgisayarda tekrar 
				üretilemeyeceği garantidir. GUIDs network kartının kimlik numarasını ve 
				bilgisayarın saatinden elde edilen eşsiz bir numara kullanarak oluşturulur. 
				Network kartlarının yapımcıları network kartı kimlik numarasının gelecek 100 
				yılda tekrarlanmayacağını garanti ederler.
 Uniqueidentifier sabiti genellikle aşağıdaki gibi sunulur;
 * Character string {}
 * Binary constant Oxaf16a66f7f8b31d3b41d30c04fc96f46
 Yine de bu tarz değerleri çok nadir gireceksiniz. Transact-SQLde GUIDs, NEWID 
				fonksiyonu kullanarak oluşturulmalıdır. Aynı zamanda bir client uygulamanın 
				GUID değer üretmek için kullanabileceği Win32 API fonksiyonu bulunmaktadır.
 uniqueidentifier değerler web uygulamaları ve dağıtılmış database sistemleri 
				için sık sık kullanılır. Web uygulamalarında, tasarımcılar kayıt databasee 
				gönderilmeden önce eşi olmayan bir tanıtıcı/kimlik oluşturmak için 
				uniqueidentifier veri tipini kullanabilirler. Distributed sistemlerde ise bu 
				veri türü eşi olmayan tanıtıcı/kimliklere hizmet eder.
 Xml : 
			Xml veri türü SQL Server 2005in en temel yeni özelliğidir. Xmlin girişinden 
			önce kullanıcılar XML dökümanları dizilimler ya da çift değişkenli datalar 
			oalarak depoluyordu. Bu yeni veri türü, SQL Serverın XML sütununa 
			yerleştirilen XML dökümanını ayrıştırmasına ve kullanıcının sütunla 
			bağladığı/birleştirdiği şema ile uyumlu olduğunu doğrulamasına izin 
			vermektedir.
 Aynı zamanda kullanıcının XQuery dilinde xml sütundaki dataya karşı sorgulama 
			yapması için de faydalıdır. (örneğin, belirgin özellik/sembol ve elementlerde 
			belli özel değerleri olan XML dökümanlar içeren dizileri bulmak için). Xml 
			sütunları, özelliklerini ve elementlerini indexleyebilmek çok heyecan verici, 
			böylece makine tablo ve sütun taramaları yapmak zorunda değil.
 
 Bununla birlikte, ilave özelliklerden başka, xml veri türü varchar (max) veri 
			türüne dayanmaktadır ve bu yüzden 2 GB limiti vardır. Aşağıdaki örnekte xml 
			sütunlu bir table yaratılmaktadır:
 
			Kotaları XML sabitleri 
			etrafındaki sınırlayıcılar olarak kullanmalısınız:
				| Create table dbo.Eq2(
					EqId
								int,
					EqCompList
								xml) |  
			sql_variant :
				sql_variant veri tipi Visual Basicteki veri türü değişkeni ile aynı 
				düşünceye dayanmaktadır. Tek bir değişken, sütun veya parametrenin farklı veri 
				türlerine değer yerleştirmesine izin vermek için tasarlanmıştır.
				| INSERT INTO dbo.Eq2(Eqld, EqCompList}
					VALUES(123,<CompList><CZ101/><AZ401/><BZ407/x/CompList>} |  Değişken objeler iki değer kaydederler:
 * Gerçek değer (the actual value)
 * Değişkeni tanımlayan metadata (The metadata describing the variant): base 
				veri type, maximum size, scale, precision, and collation
 Aşağıdaki ifade farklı türlerde değerler yerleştiren bir lookup table 
				oluşturmaktadır:
 
			SQL Server 2000den önce, farklı 
			veri türlerinin lookup değerlerini yerleştirmek için bir alandan fazlasına 
			gereksinim vardı
				| Create table Lookup(
					LookupGroupId
								tinyint,
					LookupId
								smallint,
					LookupValue
								sql_variant)
					Go |  Aşağıda bir sütuna değerlerin farklı türlerini nasıl yerleştireceğiniz 
			canlandırılıyor:
 
			Bir 
				
					sql_variant objesi 
			aşağıdakiler haricindeki diğer herhangi bir datayı depolayabilir:
				| Insert Lookup (LookupGroupId, Lookupld, 
      LookupValue)
					Values (2, 34, VAR)
					Insert Lookup (LookupGroupId, Lookupld, 
      LookupValue)
					Values (3, 22, 2000)
					Insert Lookup (LookupGroupId, Lookupld, 
      LookupValue)
					Values (4, 16, 1/12/2000)
					Insert Lookup (LookupGroupId, Lookupld, 
      LookupValue)
					Values (4, 11, $50000) |  * text
 * ntext
 * image
 * varchar(max)
 * nvarchar (max)
 * varbinary (max)
 * timestamp
 * sql_variant
 * any user-defined veri types
 
 Ancak kullanımlarında daha ciddi kısıtlamalar bulunmaktadır:
 * sql_variant columns 8,016 byte ile sınırlıdır.
 Sql değişken sütunları eğer anahtardaki datanın toplam uzunluğu 900 bytetan 
			kısa ise indexlerde ve unique anahtarlarda kullanılabilir. Bununla birlikte bu, 
			sql_variant veri tipinin sınırlaması değildir. Indexler toplamda 900 bytetan 
			büyük olan sütunlar üzerine dayandırılamaz.
 * sql_variant columns kimlik mülkiyetine sahip olamazlar.
 * sql_variant columns hesaplanmış sütunların parçası olamazlar.
 * sql_variant objectsten diğer veri tipi objelerine değer atarken veri 
			türlerini convert etmek için fonksiyonları kullanmalısınız.
 * sql_variant değerleri karşılaştırmasının karmaşık kuralları vardır ve 
			errorlere eğilimlidirler.
 * OLE DB Provider for SQL Server 7.0 kullanan client uygulamalar ile veya SQL 
			Server ODBC Driver from SQL Server 7.0 ile giriş yapıldığında sql_variant 
			değerleri otomatik olarak nvarchara (4000) çevrilir. SQL Server sadece ilk 
			4,000 karakteri raporlayacaktır.
 * SQL Server ODBC Driver from SQL Server 6.5 veya önceki versiyonları ile 
			DB-Library kullanan client uygulamalar ile giriş yapıldığında sql_variant 
			değerleri otomatik olarak nvarchara (255) çevrilir. Eğer depolanan değerler 
			255 karakterden uzunsa SQL Server sadece ilk 255 karakteri raporlayacaktır.
 * Sql_variant sütunlar Like doğrulamada desteklenmez.
 * sql_variant sütunlar full metin indexleri desteklemez.
 * sql_variant objects, depolanan değerler dizili veta numeric olsa bile + 
			operator kullanarak sıralanamaz. Uygun çözüm sıralamadan önce değerleri 
			dönüştürmektir.
 * Bazı fonksiyonlar -Avg(), Identity(), IsNumeric(), Power(), Radians(), 
			Round(), Sign(), StDev(), StDevP(), Sum(), Var(), VarP() - sql_variant 
			parametrelerini desteklemez.
 
 Not
 sql_variant veri türünü kullanırken oldukça dikkatli olmalısınız. 
				Kullanımı ciddi performans ve tasarım uygulamaları içermektedir.
 
 table : table veri türü 
				sonraki süreçlerde recordset yerleştirmek için kullanılır. Bazı açılardan bu 
				veri türü geçici tablo (temporary table) ile benzerdir. Bu veri türünü sütun 
				tanımlamak için kullanamazsınız. Sadece fonksiyonun değerini geri döndürmek 
				için local değişken olarak kullanılabilir. 
	
	Cursore Veri Türü
 Bu, imleçe dair referanslar içeren özel bir veri türüdür. İmleçler 
				kayıtlar üzerinde operasyona izin veren yapılar programlıyor. Bu türden bir 
				sütun tanımlamak mümkün değildir. Bu sadece değişkenler ve depolanmış prosedür 
				output değerler için kullanılabilir.
 
 Transact-SQL Kullanıcı Tanımlı Veri Türleri
 Veritabanında klasik veri tipleri 
			tanımlayabilirsiniz. Geleneksel kullanıcı tanımlı veri türleri Transact-SQL de 
			tanımlanır.
 SQL Server 2005te kullanıcı tanımlı veri türlerini .NET te tanımlamak da 
			mümkündür. Bu yeni türler sistem tanımlı veri türüne dayanır ve sadece 
			tanımlandıkları databaseden erişilebilirler. Onları Enterprise Managerdan veya 
			sistem tanımlı procedure
			sp_addtype
			kullanarak tanımlayabilirsiniz:
 
			İlk parametre yeni veri türünün adıdır; 
			ikinci parametre dayandığı sistem tanımlı veri türüdür; ve üçüncü parametre 
			yeni veri türünün nullabilitysini tanımlar. Komut gerçekleştirildiğinde server 
			mevcut databasein sys.systype sistem görüntüsüne türü ekler.
				| Exec sp_addtype Phone, varchar(20), NOT NULL
					Exec sp_addtype typPostalCode, varchar(V), NULL |  Yeni türler timestamp haricindeki herhangi bir sistem tanımlı türe 
			dayandırılabilir.
 
 Not
 Kullanıcı tanımlı veri türlerinin büyüleyici bir özelliği ; database 
				içinden tek bir adımla değiştirebilmenizdir. Örneğin; 19,6 ondalık sayısının 
				sizin parasal değerleriniz için yeterince büyük olmadığına karar verdiniz, bunu 
				2 8,13 ondalık sayısıyla değiştirebilirsiniz. Veri tipini ilk değiştiren 
				scripti çalıştırıp ardından onu referans gösteren tüm database objectlerini 
				yeniden yaratabilirsiniz. Bu özellik databasein gelişim aşaması boyunca 
				oldukça faydalıdır. Ne yazık ki bir database halihazırda üretim aşamasındaysa, 
				tablolar veri içerir ve bu özellik çok daha karmaşık hale gelir.
 
 Microsoft SQL Server tasarımcıları serverla birlikte özel bir veri türü dahil 
				ettiler: sysname. Transact-SQL tanıtıcılarının (identifier) 
				uzunluğunun kontrolü için kullanılır. Server default moda çalıştığında bu türün 
				uzunluğu 128 karaktere ayarlanır. Uyumluluk seviyesi 65 veya 60a 
				ayarlandığında uzunluk 30 karaktere çekilir/kısaltılır. Bunu Transact-SQL 
				tanıtıcıları içerecek sütun ve değişkenleri tanımlayacağınız zaman 
				kullanmalısınız.
 
 
 Kaynak Microsoft SQL Server 2005 Stored Procedure Programming in T-SQL & 
				.NET, Third Edition by Dejan Junderi
 
 
                Makale:SQL Server 2005 Veri Tipleri ADO.NET ve SQL İsmail Yurtsever
 |