<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C# kitabı</title>
	<atom:link href="http://www.ahmetkaymaz.com/wp-seo-link-holder_akaymaz.php/feed/?404;http://www.ahmetkaymaz.com:80/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ahmetkaymaz.com</link>
	<description>SQL Server, C#, VB.NET, ASP.NET, AJAX ile ilgili örnek kitap ve ipuçları</description>
	<lastBuildDate>Mon, 26 Apr 2010 16:50:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>VB.NET Kitabı Yayınlandı</title>
		<link>http://www.ahmetkaymaz.com/2009/09/09/vbnet-kitabi-yayinlandi/</link>
		<comments>http://www.ahmetkaymaz.com/2009/09/09/vbnet-kitabi-yayinlandi/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 07:51:35 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[Kitaplarım]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=272</guid>
		<description><![CDATA[

VB.NET Programlama Dili


Cilt 1. Programlama İlkeleri



Bölüm 1.    .NET Framework Temel Kavramları
Bölüm 2.    VB.NET Programlama Diline Giriş
Bölüm 3.    Veri Türleri ve Değişkenler
Bölüm 4.    Operatörler
Bölüm 5.   Kontrol Deyimleri
Bölüm 6.    Diziler
Bölüm 7.    Nesne Yönelimli Programlama
Bölüm 8.   [...]]]></description>
			<content:encoded><![CDATA[<table class="gritable" width="100%" align="center">
<tr>
<th>VB.NET Programlama Dili</th>
</tr>
<tr>
<th>Cilt 1. Programlama İlkeleri</th>
</tr>
<tr>
<td>
Bölüm 1.    .NET Framework Temel Kavramları<br />
Bölüm 2.    VB.NET Programlama Diline Giriş<br />
Bölüm 3.    Veri Türleri ve Değişkenler<br />
Bölüm 4.    Operatörler<br />
Bölüm 5.   Kontrol Deyimleri<br />
Bölüm 6.    Diziler<br />
Bölüm 7.    Nesne Yönelimli Programlama<br />
Bölüm 8.    Statik Üyeler &#038; Harici Sınıflar<br />
Bölüm 9.    OOP&#8217;nin Temel İlkeleri<br />
Bölüm 10.        Yapı, Numaralandırma ve Öznitelik<br />
Bölüm 11.        Aykırı Durum Yönetimi<br />
Bölüm 12.        NET&#8217;te Koleksiyon Nesneleri<br />
Bölüm 13.        Delegeler ve Olaylar<br />
Bölüm 14.        .NET&#8217;te Giriş/Çıkış Kullanımı<br />
Bölüm 15.        Sözce/String Türü ve Karakter Biçimlendirme İşlemleri<br />
Bölüm 16.        Operatörlerin Yeniden Yüklenmesi<br />
Bölüm 17.        Yansıma (Reflection)<br />
Bölüm 18.        Emniyetsiz Kod ve İşaretçiler<br />
Bölüm 19.  Çok Parçacıklı (Multithreading) Programlama<br />
Bölüm 20.   Bütünleştirilmiş Kod (Assembly) Türleri ve Kullanımı<br />
Bölüm 21. Windows Form Uygulamaları (GUI)<br />
Ek A:  UML Diyagramları</p>
<p><a href="http://www.hepsiburada.com/productDetails.aspx?CategoryId=211651&#038;productId=kfnpapatya7853" target="_blank">hepsiburada.com</a><br />
<a href="http://www.kitapyurdu.com/kitap/default.asp?id=460193" target="_blank">kitapyurdu.com</a><br />
<a href="http://www.ahmetkaymaz.com/go.php?http://www.idefix.com/kitap/vb-net-programlama-dili-ahmet-kaymaz/tanim.asp?sid=DA5L5LC6ZB0PK8IB1PEM" target="_blank">ideefixe.com</a>
</td>
</tr>
<tr>
<th>Cilt 2.  İleri Düzey Programlama</th>
</tr>
<tr>
<td>
Bölüm 22.      ADO.NET Mimarisi<br />
Bölüm 23.      ADO.NET Bağlantılı Sınıflar<br />
Bölüm 24.      ADO.NET Bağlantısız Sınıflar<br />
Bölüm 25.      DataSet Nesne Türleri<br />
Bölüm 26.      DataAdapter Kullanımı<br />
Bölüm 27.     İleri ADO.NET Konuları<br />
Bölüm 28.      XML Nedir?<br />
Bölüm 29.      .NET Framework&#8217;te XML Programlama<br />
Bölüm 30.     VB.NET 9.0 Yenilikleri<br />
Bölüm 31.      LINQ Sorgulama Yöntemi<br />
Bölüm 32.     SQL ve XML için LINQ Kullanımı<br />
Ek A:   .NET Framework Mimarisi ve Bileşenleri
</td>
</tr>
<tr>
<th><a href="http://www.ahmetkaymaz.com/go.php?VBNet_Programlama_Dili_Yazilim_Tasarimi_Kitap.html" target="_blank">Kitapların detaylı İÇİNDEKİLER bölümü için tıklayınız.</a></th>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2009/09/09/vbnet-kitabi-yayinlandi/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>C# Kitabının &#8220;İleri Düzey Programlama&#8221; Cildi Yayınlandı</title>
		<link>http://www.ahmetkaymaz.com/2009/02/10/c-kitabinin-ileri-duzey-programlama-cildi-yayinlandi/</link>
		<comments>http://www.ahmetkaymaz.com/2009/02/10/c-kitabinin-ileri-duzey-programlama-cildi-yayinlandi/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 08:08:24 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[Kitaplarım]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=262</guid>
		<description><![CDATA[

C# Programlama Dili ve Yazılım Tasarımı


Cilt 1. Programlama İlkeleri



Bölüm 1.    .NET Framework Temel Kavramları
Bölüm 2.    C# Programlama Diline Giriş
Bölüm 3.    Veri Türleri ve Değişkenler
Bölüm 4.    Operatörler
Bölüm 5.   Kontrol Deyimleri
Bölüm 6.    Diziler
Bölüm 7.    Nesne Yönelimli Programlama
Bölüm [...]]]></description>
			<content:encoded><![CDATA[<table class="gritable" width="100%" align="center">
<tr>
<th>C# Programlama Dili ve Yazılım Tasarımı</th>
</tr>
<tr>
<th>Cilt 1. Programlama İlkeleri</th>
</tr>
<tr>
<td>
Bölüm 1.    .NET Framework Temel Kavramları<br />
Bölüm 2.    C# Programlama Diline Giriş<br />
Bölüm 3.    Veri Türleri ve Değişkenler<br />
Bölüm 4.    Operatörler<br />
Bölüm 5.   Kontrol Deyimleri<br />
Bölüm 6.    Diziler<br />
Bölüm 7.    Nesne Yönelimli Programlama<br />
Bölüm 8.    Statik Üyeler &#038; Harici Sınıflar<br />
Bölüm 9.    OOP&#8217;nin Temel İlkeleri<br />
Bölüm 10.        Yapı, Numaralandırma ve Öznitelik<br />
Bölüm 11.        Aykırı Durum Yönetimi<br />
Bölüm 12.        NET&#8217;te Koleksiyon Nesneleri<br />
Bölüm 13.        Delegeler ve Olaylar<br />
Bölüm 14.        .NET&#8217;te Giriş/Çıkış Kullanımı<br />
Bölüm 15.        Sözce/String Türü ve Karakter Biçimlendirme İşlemleri<br />
Bölüm 16.        Operatörlerin Yeniden Yüklenmesi<br />
Bölüm 17.        Yansıma (Reflection)<br />
Bölüm 18.        Emniyetsiz Kod ve İşaretçiler<br />
Bölüm 19.  Çok Parçacıklı (Multithreading) Programlama<br />
Bölüm 20.   Bütünleştirilmiş Kod (Assembly) Türleri ve Kullanımı<br />
Bölüm 21. Windows Form Uygulamaları (GUI)<br />
Ek A:  UML Diyagramları</p>
<p><a href="http://www.hepsiburada.com/c-programlama-dili-ve-yazilim-tasarimi-cilt-1/productDetails.aspx?categoryid=211651&#038;productid=kfnpapatya010" target="_blank">hepsiburada.com</a><br />
<a href="http://www.ahmetkaymaz.com/go.php?http://www.kitapyurdu.com/kitap/default.asp?id=441573" target="_blank">kitapyurdu.com</a><br />
<a href="http://www.ahmetkaymaz.com/go.php?http://www.ideefixe.com/kitap/tanim.asp?sid=EFYSZHYZHP6PO61R0NN7" target="_blank">ideefixe.com</a>
</td>
</tr>
<tr>
<th>Cilt 2.  İleri Düzey Programlama</th>
</tr>
<tr>
<td>
Bölüm 22.      ADO.NET Mimarisi<br />
Bölüm 23.      ADO.NET Bağlantılı Sınıflar<br />
Bölüm 24.      ADO.NET Bağlantısız Sınıflar<br />
Bölüm 25.      DataSet Nesne Türleri<br />
Bölüm 26.      DataAdapter Kullanımı<br />
Bölüm 27.     İleri ADO.NET Konuları<br />
Bölüm 28.      XML Nedir?<br />
Bölüm 29.      .NET Framework&#8217;te XML Programlama<br />
Bölüm 30.     C# 3.0 Yenilikleri<br />
Bölüm 31.      LINQ Sorgulama Yöntemi<br />
Bölüm 32.     SQL ve XML için LINQ Kullanımı<br />
Ek A:   .NET Framework Mimarisi ve Bileşenleri</p>
<p><a href="http://www.ahmetkaymaz.com/go.php?http://www.kitapyurdu.com/kitap/default.asp?id=447508" target="_blank">kitapyurdu.com</a><br />
<a href="http://www.ahmetkaymaz.com/go.php?http://www.ideefixe.com/kitap/tanim.asp?sid=U7C8L52P1P2PXJMUMMEY" target="_blank">ideefixe.com</a><br />
<a href="http://www.hepsiburada.com/c-programlama-dili-ve-yazilim-tasarimi-cilt-2/productDetails.aspx?categoryid=211651&#038;productid=kfnpapatya97976" target="_blank">hepsiburada.com</a>
</td>
</tr>
<tr>
<th><a href="http://www.ahmetkaymaz.com/go.php?CSharp_Programlama_Dili_Yazilim_Tasarimi_Kitap.html" target="_blank">Kitapların detaylı İÇİNDEKİLER bölümü için tıklayınız.</a></th>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2009/02/10/c-kitabinin-ileri-duzey-programlama-cildi-yayinlandi/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>CETURK &#8220;Microsoft Teknolojileri Etkinliği&#8221;</title>
		<link>http://www.ahmetkaymaz.com/2009/02/09/ceturk-microsoft-teknolojileri-etkinligi/</link>
		<comments>http://www.ahmetkaymaz.com/2009/02/09/ceturk-microsoft-teknolojileri-etkinligi/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 15:38:01 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[C#, VB.NET, ASP.NET]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=258</guid>
		<description><![CDATA[CETURK, 7 Şubat Cumartesi günü Microsoft Türkiye İstanbul Ofisi&#8216;nde benim de Ado.Net 3.5 / Ado.Net Entity Framework konusuyla konuşmacı olarak katıldığım Microsoft Teknolojileri Etkinliği&#8216;ni düzenledi. Benim açımdan iş ve sosyal hayat olarak yoğun bir haftaya denk gelmesi, hediye olarak verdiğimiz kitapları yetiştirmek için ciddi bir zaman harcamış olmam ve bunun sonucunda kendi sunum saatine yetişemememden [...]]]></description>
			<content:encoded><![CDATA[<p>CETURK, <b>7 Şubat Cumartesi</b> günü </b>Microsoft Türkiye İstanbul Ofisi</b>&#8216;nde benim de <b>Ado.Net 3.5 / Ado.Net Entity Framework</b> konusuyla konuşmacı olarak katıldığım <b>Microsoft Teknolojileri Etkinliği</b>&#8216;ni düzenledi. Benim açımdan iş ve sosyal hayat olarak yoğun bir haftaya denk gelmesi, hediye olarak verdiğimiz kitapları yetiştirmek için ciddi bir zaman harcamış olmam ve bunun sonucunda kendi sunum saatine yetişemememden dolayı etkin bir performans sergileyememiş olsam da benim için faydalı oldu. Konu katılımcı profiliyle ne kadar uyuştu veya onların ne kadar ilgisini çekti bilemiyorum ancak birkaç arkadaşın bu konularda ürün çıkaracak kadar çalışıyor olmaları beni daha da cesaretlendirdi. Tüm katılımcılara ve etkinliği düzenleyen CETURK ekibine de teşekkür ederim. Oturumumla ilgili sunumu aşağıda bulabilirsiniz.</p>
<div style="width:425px;text-align:left" id="__ss_1028230">
<object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=ahmetkaymazceturketkinlik7subatyazilimsurecleri-1234639149714544-3&#038;stripped_title=ahmet-kaymaz-ceturk-etkinlik-7-subat-yazilim-surecleri" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=ahmetkaymazceturketkinlik7subatyazilimsurecleri-1234639149714544-3&#038;stripped_title=ahmet-kaymaz-ceturk-etkinlik-7-subat-yazilim-surecleri" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p><i>Etkinlikle ilgili detayları <a href="http://www.ahmetkaymaz.com/go.php?http://www.ceturk.com/etkinlikkayit.asp?id=63" target="_blank">http://www.ceturk.com/etkinlikkayit.asp?id=63</a> adresinde bulabilirsiniz.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2009/02/09/ceturk-microsoft-teknolojileri-etkinligi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;C# Programlama Dili ve Yazılım Tasarımı&#8221; Kitabı</title>
		<link>http://www.ahmetkaymaz.com/2009/01/16/c-programlama-dili-ve-yazilim-tasarimi-kitabi/</link>
		<comments>http://www.ahmetkaymaz.com/2009/01/16/c-programlama-dili-ve-yazilim-tasarimi-kitabi/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 14:56:14 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[Kitaplarım]]></category>
		<category><![CDATA[C# Kitap]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=247</guid>
		<description><![CDATA[Bu kitap, yeni nesil yazılım geliştirme platformu olan .NET teknolojisinin mimarisini ve tam anlamıyla nesne yönelimli bir dil olan &#8220;C# programlama&#8221; dilini öğretmeyi amaçlamaktadır. Bununla beraber yazılım geliştirme süreçinde karşılaşılan güçlüklerin nasıl aşılacağını ve sağlam bir yazılım tasarımının nasıl oluşturulacağını ele almaktadır.
Kitap, nitelikli konu seçimiyle, sade ve düzgün Türkçe kullanımıyla, her bölümün sonunda verdiği özet [...]]]></description>
			<content:encoded><![CDATA[<p>Bu kitap, yeni nesil yazılım geliştirme platformu olan .NET teknolojisinin mimarisini ve tam anlamıyla nesne yönelimli bir dil olan &#8220;C# programlama&#8221; dilini öğretmeyi amaçlamaktadır. Bununla beraber yazılım geliştirme süreçinde karşılaşılan güçlüklerin nasıl aşılacağını ve sağlam bir yazılım tasarımının nasıl oluşturulacağını ele almaktadır.</p>
<p>Kitap, nitelikli konu seçimiyle, sade ve düzgün Türkçe kullanımıyla, her bölümün sonunda verdiği özet ve sorularla, gerçek projelerden alınmış örneklerle, yeni gelişmeleri de içeriyor olmasıyla gerek yeni öğrenen gerekse deneyimli uygulama geliştiriciler için vazgeçilmez bir başvuru kaynağı niteliğindedir.</p>
<p>Ayrıca konuları yüzeysel değil bir mühendis yaklaşımıyla ayrıntılı ele alması bakımından üniversitelerin Bilgisayar Mühendisliği, Matematik-Bilgisayar, Yönetim Bilişim Sistemleri, Endüstri Mühendisliği, Yazılım Mühendisliği gibi mühendislik ve sosyal bilimlerde dört yıllık lisans ve meslek yüksek okulu öğrencileri için de yararlı bir ders kitabı olma özelliğindedir.</p>
<p><b><font size="1" color="#800000">Cilt 1. Programlama İlkeleri</font></b><br />
<b><font size="1" color="#800000">Cilt 2. İleri Düzey Programlama</font></b></p>
<p><b><font size="2" color="#800000">Kitabı satın almak için aşağıdaki linkleri kullanabilirsiniz.</font></b><br />
<a href="http://www.hepsiburada.com/c-programlama-dili-ve-yazilim-tasarimi-cilt-1/productDetails.aspx?categoryid=211651&#038;productid=kfnpapatya010" target="_blank">hepsiburada.com</a><br />
<a href="http://www.ahmetkaymaz.com/go.php?http://www.kitapyurdu.com/kitap/default.asp?id=441573" target="_blank">kitapyurdu.com</a><br />
<a href="http://www.ahmetkaymaz.com/go.php?http://www.ideefixe.com/kitap/tanim.asp?sid=EFYSZHYZHP6PO61R0NN7" target="_blank">ideefixe.com</a></p>
<p><a href="http://www.ahmetkaymaz.com/go.php?CSharp_Programlama_Dili_Yazilim_Tasarimi_Kitap.html">İÇİNDEKİLER Bölümü İçin Tıklayınız.</a></p>
<p><span id="more-247"></span></p>
<p><b><u>Önsöz</u></b></p>
<p>.NET  Framework hakkındaki en son güncel bilgileri içeren bu kitabın Microsoft yazılım platformunu öğrenmek isteyen yazılımcılara ve sektöre girmek üzere hazırlanan öğrenci arkadaşlarımıza yol gösterici olacağını düşünüyorum.</p>
<p>Türkçe teknik içerik yazılım sektöründe önemli bir eksiklik olarak durmaktadır. Bu çalışmanın  da böylesi önemli bir açığı da kapatacağına inanıyoruz. Kitabın içeriğinin sadece teorik bilgi ile sınırlı kalmaması ve yazarın profesyonel hayattaki deneyimlerini de okuyucu ile paylaşıyor olması zengin içeriğine daha da fazla değer katmaktadır.</p>
<p>Bu kitapla Ahmet KAYMAZ&#8217;ın sektörümüze önemli bir katkı sağladığını düşünüyor ve kendisini böylesi ayrıntılı ve titiz çalışması dolayısı ile kutluyorum. </p>
<p>Mehmet EMRE<br />
Microsoft Türkiye</p>
<p><img src="http://www.ahmetkaymaz.com/wp-content/uploads/CSharp_Programlama_Dili_Yazilim_Tasarimi_Cilt1_2.jpg" align="left"></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2009/01/16/c-programlama-dili-ve-yazilim-tasarimi-kitabi/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>C#, VB.NET, ASP.NET Kitap Serisi</title>
		<link>http://www.ahmetkaymaz.com/2009/01/15/c-vbnet-aspnet-kitap-tavsiye/</link>
		<comments>http://www.ahmetkaymaz.com/2009/01/15/c-vbnet-aspnet-kitap-tavsiye/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 14:32:39 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[Kitaplarım]]></category>
		<category><![CDATA[ASP.NET kitabı]]></category>
		<category><![CDATA[C# kitabı]]></category>
		<category><![CDATA[VB.NET kitabı]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=245</guid>
		<description><![CDATA[Bir taraftan Türkçe bilgisayar kitaplarının pek tutulmaması var olan kitapların dilinin olgunlaşmaması,
bir taraftan bilginin kıymetini kaybetmesini bir taraftan da önemli bir çalışma yapılırsa takdir edileceği ve bu meslekteki insanlara faydalı olacağını düşünerek,
bazen coşup umutlanarak,
bazen heyecanını kaybedip umutsuz düşerek,
bazen idealist davranıp bazen hızlanarak,
bazen yorularak,
bazen sorgulayıp yeni şeyler öğrenerek,
bazen yanlış bildiğini düzelterek
ama en önemlisi kalemin ve yazının [...]]]></description>
			<content:encoded><![CDATA[<p>Bir taraftan Türkçe bilgisayar kitaplarının pek tutulmaması var olan kitapların dilinin olgunlaşmaması,<br />
bir taraftan bilginin kıymetini kaybetmesini bir taraftan da önemli bir çalışma yapılırsa takdir edileceği ve bu meslekteki insanlara faydalı olacağını düşünerek,<br />
bazen coşup umutlanarak,<br />
bazen heyecanını kaybedip umutsuz düşerek,<br />
bazen idealist davranıp bazen hızlanarak,<br />
bazen yorularak,<br />
bazen sorgulayıp yeni şeyler öğrenerek,<br />
bazen yanlış bildiğini düzelterek<br />
ama en önemlisi kalemin ve yazının hakkını vererek gerçekten en iyi olması için çalışarak 3-4 yıldır yazılım tasarımı konusunda bir kitap serisi üzerinde çalışıyorum. </p>
<p>Bu seri, Microsoft teknolojilerini kullanan bir yazılım mühendisi için hem başlangıç hem de ileri düzey sürecinde referans teşkil etmeliydi. Özellikle Bilgisayar Mühendisliği, Bilgisayar Programcılığı ve ilgili diğer bölümler için akademik bir kaynak olmalıydı. Bu amaçla serinin Windows, Web ve veri tabanı konulu kitaplardan oluşmasını hayal ediyordum. Projeyi kafamda ve kağıtta olgunlaştırıp yazmaya başladım. </p>
<p>Öncelikle haftasonu verdiğim eğitim notlarımı, okuldayken hocalardan öğrendiğim notları, profesyonel iş hayatında karşılaştığım sorun ve ipuçları gün yüzüne çıkardım. Ardından kitapların muhtemel içeriğini belirledim. İlk başta aynı kitapta hem C# dilinin hem de VB.NET dilinin olduğu &#8220;İki dil birden&#8221; formatında yazmaya başladım ancak bunun pek kullanışlı olmayacağını düşünerek  ikisini birbirinden bağımsız yazmaya karar verdim. 2005&#8242;in başlarında ilk cümleyi yazmaya başladım. Her bir satırı yazdıkça yazarlara olan saygım daha da artıyordu. Bilmenin yapabilmek olmadığını, anlatabilmek olmadığını özellikle yazmanın bilmenin çok ötesinde birşey olduğunu anladım. Araya sosyal ve iş hayatının yoğunluğunun girmesiyle proje uzadıkça uzadı. Çok kısa sürede bilgisayar kitaplarının yazıldığı, popüler bir tüketim alışkanlığının kazandırıldığı ve Microsoft ile teknoloji gelişimi anlamında yarışmanın mümkün olmadığı bir dönemde bu kadar gecikmek birkaç kez projeden soğumama neden oldu. Etrafımdaki değerli dostlarım aracılığıyla ancak tüm seriyi 2008&#8242;in yazında bitirebildim.  İlk başta C#, VB.NET, ASP.NET ve SQL Server kitaplarından oluşması düşünülen bu seri SQL Server olmadan tamamlandı. Kitapların iyi birer kaynak olması gerekiyordu bunun için de zaman yetmiyordu. Bu yüzden SQL Server&#8217;e hiç başlamamaya karar verdik. SQL Server, sırf kitap olsun diye yazılacak bir platform olmadığı için yazılacaksa gerçekten hakkı verilerek yazılmalı. Bunun da önemli bir zaman alacağı kanısındayım. Önümüzdeki yıllarda SQL Server&#8217;in özellikle DBA&#8217;ler için bir yönetim kitabı çıkarmayı düşünüyorum.</p>
<p>İyi ve faydalı kitaplar olması için iyi bir yayın danışmanı ve iyi bir yayıneviyle çalışmak gerekiyordu. Bunun için bu sektörde birçok kişiye hocalık yapmış olan ve &#8220;İşte C&#8221; kitabıyla birçok kişinin C dilini öğrendiği <b>Dr. Rifat Çölkesen</b> beyefendiyle çalıştık ve yayınevi olarak ta akademik &#8211; bilimsel &#8211; üniversite ders kitapları basan <a href="http://www.ahmetkaymaz.com/go.php?http://www.papatya.gen.tr" target="_blank">Papatya Yayınclık Eğitim A.Ş.</a> tercih edildi. Kitaptaki teknik anlatımın doğruluğu için başta TurkoCRM&#8217;in yaratıcılarından Murat Öngüdü olmak üzere birçok Bilgisayar Mühendisi ile çalışıldı. Bu kişilerin özellikle piyasada çalışıyor olmalarına dikkat edildi. Çünkü kitapların teoriyle birlikte bilgilerin gerçek hayatta hangi projelerde nasıl kullanılacağını örneklendirilmesi amaçlandı. Teknik öneriler için Prof. Dr. Esat HAMZAOĞLU ve kitaplarda yalın bir Türkçe&#8217;nin kullanılması için Necdet AVCI ve Batuhan AVCI önemli katkılarda bulundu. Sayfa düzeni ve kapak tasarımı için Olcay Kara&#8217;yı da unutmamak lazım. Bu kitapların bu kişilerin katkısıyla daha da iyi olduğu kanısındayım. Hepsine şükranlarımı sunuyorum. Bundan sonrası okuyucunun takdirine bırakılmıştır.</p>
<p>Yazılım mühendisi/uzmanı olmak isteyenler veya daha da uzmanlaşmak için düşündüğümüz serinin kitapları şunlardır;</p>
<p><a href="http://www.ahmetkaymaz.com/2009/01/16/c-programlama-dili-ve-yazilim-tasarimi-kitabi/">C# Programlama Dili ve Yazılım Tasarımı (2 Cilt)</a><br />
VB.NET Programlama Dili ve Yazılım Tasarımı (2 Cilt) &#8211; <i>Baskıda</i><br />
ASP.NET ile Web Uygulamaları Geliştirme (C# ve VB.NET uyarlamalı) &#8211; <i>Baskıda</i></p>
<p>Serinin ilk kitabı olarak C# dilini seçtik. Kitabın 2 cilt olarak çıkarılmasının hem okunabilirliği hem de konu bütünlüğü açısından daha iyi bir çözüm olacağına karar verildi. Çalışmalarının bitmesiyle birlikte C# kitabının ilk cildi 2008-Kasım ayında piyasaya sürüldü. &#8220;Geç olsun, kötü olmasın&#8221; diyerek bu kitabı da namluya sürdük.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2009/01/15/c-vbnet-aspnet-kitap-tavsiye/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>SQL Server Replication &#8211; Yeni Tablo Ekleme</title>
		<link>http://www.ahmetkaymaz.com/2009/01/02/sql-server-replication-yeni-tablo-ekleme/</link>
		<comments>http://www.ahmetkaymaz.com/2009/01/02/sql-server-replication-yeni-tablo-ekleme/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 14:33:22 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[C#, VB.NET, ASP.NET]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=280</guid>
		<description><![CDATA[Merkez ve şubeler arasında transactional replication yapılmaktadır. Bu replikasyon aracılığıyla birçok tablo şubelerden merkeze aktarılmaktadır. Fakat sonraki günlerde ihtiyaç doğrultusunda replike edilen dataya yeni bir nesne(article) daha ekleme ihtiyacı doğdu. Mevcut publication içerisine yeni bir article eklediğimizde varsayılan olarak senkronizasyonu yeniden sağlamak lazım yani başından bu yan tüm tabloların bulunduğu yeni bir snapshot oluşturup bunu [...]]]></description>
			<content:encoded><![CDATA[<p>Merkez ve şubeler arasında transactional replication yapılmaktadır. Bu replikasyon aracılığıyla birçok tablo şubelerden merkeze aktarılmaktadır. Fakat sonraki günlerde ihtiyaç doğrultusunda replike edilen dataya yeni bir nesne(article) daha ekleme ihtiyacı doğdu. Mevcut publication içerisine yeni bir article eklediğimizde varsayılan olarak senkronizasyonu yeniden sağlamak lazım yani başından bu yan tüm tabloların bulunduğu yeni bir snapshot oluşturup bunu şube(-lere) yansıtmak lazım.<span id="more-280"></span><br />
Fakat her eklemede tüm snapshot&#8217;un yeniden alınması istenilen bir durum değildir. Hangi nesneler replikasyona dahil edildiyse sadece onlara ait snapshot&#8217;un oluşturulması daha doğru olacaktır. Bu sayfada bu işlemin nasıl yapılacağını örneklendireceğiz. Sehir isimli tabloyı MerkezData isimli publication&#8217;a dahil etmek için <b>sp_addarticle</b> prosedürü kullanılır.</p>
<pre name="code" class="sql">EXEC sp_addarticle @publication='MerkezData', @article='Sehir',@source_table='Sehir'
</pre>
<p>Bu komutu çalıştırdığımızda aşağıdaki gibi bir hata mesajıyla karşılaşırız.<br />
<font color='red'>Msg 20607, Level 16, State 1, Procedure sp_MSreinit_article, Line 99<br />
Cannot make the change because a snapshot is already generated. Set @force_invalidate_snapshot to 1 to force the change and invalidate the existing snapshot.</font></p>
<p>Bu mesajın sebebi hali hazırda bir snapshot oluşturulmuş olmasıdır. Yeni tablo eklemekle birlikte mevcut snapshot&#8217;u kullanamayacağımız için <b>@force_invalidate_snapshot=1</b> seçeneğini kullanarak yeni geçerli bir snapshot&#8217;un oluşturulmasını sağlamalıyız. Kodu aşağıdaki gibi düzenlediğimizde yayına Sehir tablosu eklenmiş olacak ve abonelere yansıtılmak üzere yeni bir snapshot oluşturulmuş olacaktır.</p>
<pre name="code" class="sql">EXEC sp_addarticle @publication='MerkezData', @article='Sehir',@source_table='Sehir',@force_invalidate_snapshot=1</pre>
<p>Bu işlemden sonra Snapshot Agent servisi yeniden başlatıldığı zaman hem daha önceki tabloların hem de Sehir tablosunun şema ve data scriptleri oluşturulur ve aboneye gönderilir. Oysa bizim istediğimiz durum sadece &#8220;Sehir&#8221; tablosunun snapshot&#8217;unu almasıdır. Bu amaçla kontrol etmemiz gereken yer mevcut publication&#8217;ın <b>immediate_sync</b> ve <b>allow_anonymous</b> özellikleridir. sp_helppublication prosedürünü kullanarak mevcut publication hakkında bilgi alınabilir.</p>
<p><b>EXEC sp_helppublication &#8216;MerkezData&#8217;</b></p>
<p>Bu komutun sonucunda immediate_sync özelliğinin 1 olduğu yani enabled olduğu görülür.Bu özelliğin aktif olması her yeni tablo eklendiğinde tüm publication için snapshot alınmasını sağlar. Bu özellik genellikle anonymous subscription&#8217;a izin vermek için kullanılır. Bu tür aboneler CreatePublication aracını kullanarak mevcut yayına abone olurlar. Bu iki özelliği aşağıdaki gibi false moduna çekelim.</p>
<pre name="code" class="sql">EXEC sp_changepublication
	@publication = 'MerkezData',
	@property = N'allow_anonymous',
	@value = 'false'
GO
EXEC sp_changepublication
	@publication = 'MerkezData',
	@property = N'immediate_sync',
	@value = 'false'
GO</pre>
<p>Şimdi Sehir tablosunu yayına alıp ilgili aboneyle ilişkilendirelim.</p>
<pre name="code" class="sql">EXEC sp_addarticle
	@publication='MerkezData',
	@article='Sehir',
	@source_table='Sehir'
GO
EXEC sp_addsubscription
	@publication = 'MerkezData',
	@article = 'Sehir',
	@subscriber = 'DW',
	@destination_db = 'XXX'</pre>
<p><b>sp_addsubscription</b> yordamına alternatif olarak <b>sp_refreshsubscriptions</b> yordamı kullanılabilir.</p>
<pre name="code" class="sql">EXEC sp_refreshsubscriptions @publication = N'MerkezData'</pre>
<p><b>sp_refreshsubscriptions</b> yordamı tanımlı tüm subscriber&#8217;lar için eklenmiş yeni tablolara subscription ekler. Yani tüm abonelere bu yeni tabloya abone eder.</p>
<p>Bu işlemden sonra Snapshot Agent servisi yeniden başlatıldığı zaman sadece Sehir tablosunun snapshot&#8217;u oluşturulur ve abonelere yansıtılır.</p>
<p>Aynı şekilde Sehir tablosunu Replikasyonda çıkarmak için aşağıdaki prosedürler kullanılır;</p>
<pre name="code" class="sql">EXEC sp_dropsubscription
	@publication = N'MerkezData',
	@article = N'Sehir',
	@subscriber = N'DW'
GO
EXEC sp_droparticle
	@publication='MerkezData',
	@article='Sehir'</pre>
<p>Yayınlanan yayınların abonelik durumlarını görmek için <b>sp_helpsubscription</b> yordamı kullanılabilir.</p>
<p>Kaynak : replicationanswers.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2009/01/02/sql-server-replication-yeni-tablo-ekleme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle -&gt; SQL Server (Data Import) Code Page Uyarısı</title>
		<link>http://www.ahmetkaymaz.com/2008/12/31/oracle-sql-server-data-import-code-page-uyarisi/</link>
		<comments>http://www.ahmetkaymaz.com/2008/12/31/oracle-sql-server-data-import-code-page-uyarisi/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 08:42:23 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[SQL Server, Oracle]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=278</guid>
		<description><![CDATA[SQL Server içerisindeki Data Import / Export bölümünü veya SSIS aracını kullanarak Oracle&#8217;dan SQL Server&#8217;e veri aktarma aşamasında kolonlara görmek istediğimizde aşağıdaki uyarıyla karşılaşabiliriz. 
Could not connect source component.
Warning 0&#215;80202066: Source &#8211; VB_PERMISSIONS [1]: Cannot retrieve the column code page info from the OLE DB provider.  If the component supports the &#8220;DefaultCodePage&#8221; property, the [...]]]></description>
			<content:encoded><![CDATA[<p>SQL Server içerisindeki Data Import / Export bölümünü veya SSIS aracını kullanarak Oracle&#8217;dan SQL Server&#8217;e veri aktarma aşamasında kolonlara görmek istediğimizde aşağıdaki uyarıyla karşılaşabiliriz. </p>
<p><font color="red"><i>Could not connect source component.<br />
Warning 0&#215;80202066: Source &#8211; VB_PERMISSIONS [1]: Cannot retrieve the column code page info from the OLE DB provider.  If the component supports the &#8220;DefaultCodePage&#8221; property, the code page from that property will be used.  Change the value of the property if the current string code page values are incorrect.  If the component does not support the property, the code page from the component&#8217;s locale ID will be used.</i></font></p>
<p>Bu mesaj bir hata mesajı olayıp sadece kullanıcıyı doğru karakter setinin kullanılmadığı konusunda uyarmaktadır. Bundan kurtulmanın yolu şudur;<br />
OLE DB Source component&#8217;in bulunduğu Data-Flow içerisine girilir.<br />
OLE DB Source component&#8217;e ait Properties penceresi açtırılır. Bunun için bileşen sağ tıklanarak Properties menüsü kullanılabileceği gibi bir kere tıklanarak F4 tuşu da kullanılabilir.<br />
Properties penceresinde <b>AlwaysUseDefaultCodePage</b> özelliği True olarak set edilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2008/12/31/oracle-sql-server-data-import-code-page-uyarisi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSIS paketi SQL Server Agent job&#8217;da çalışmıyor</title>
		<link>http://www.ahmetkaymaz.com/2008/12/31/ssis-paketi-sql-server-agent-jobda-calismiyor/</link>
		<comments>http://www.ahmetkaymaz.com/2008/12/31/ssis-paketi-sql-server-agent-jobda-calismiyor/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 07:54:20 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[SQL Server, Oracle]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=276</guid>
		<description><![CDATA[VS.NET&#8217;te hazırladığımız Integration Services projesindeki DTSX paketlerini belli periyotlarda çalışması için SQL Server Agent üzerinde Job tanımlarız. Job içerisinde SSIS paketini çağırdığımızda özellikle paket içerisinde tanımlanmış olan veritabanı bağlantısı, dosya işlemleri gibi bazı kaynaklara erişimin gerçekleşmediğine şahit oluruz. Örneğin source veya destination olarak tanımlanmış olan SQL Server sunucularına erişmeye çalışırken aşağıdaki gibi hata mesajları alabiliriz.
[OLE [...]]]></description>
			<content:encoded><![CDATA[<p>VS.NET&#8217;te hazırladığımız Integration Services projesindeki DTSX paketlerini belli periyotlarda çalışması için SQL Server Agent üzerinde Job tanımlarız. Job içerisinde SSIS paketini çağırdığımızda özellikle paket içerisinde tanımlanmış olan veritabanı bağlantısı, dosya işlemleri gibi bazı kaynaklara erişimin gerçekleşmediğine şahit oluruz. <span id="more-276"></span>Örneğin source veya destination olarak tanımlanmış olan SQL Server sunucularına erişmeye çalışırken aşağıdaki gibi hata mesajları alabiliriz.</p>
<p><font color='red'>[OLE DB Source [1]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.  The AcquireConnection method call to the connection manager &#8220;Sunucu Adi&#8221; failed with error code 0xC0202009.  There may be error messages posted before this with more information on why the AcquireConnection method call failed.</font></p>
<p>veya</p>
<p><font color='red'>Failed to decrypt protected XML node &#8220;DTS:Password&#8221; with error 0&#215;8009000B &#8220;Key not valid for use in specified state.&#8221;. You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available.</font></p>
<p>Bu sorunun muhtemel 2 nedeni bulunmaktadır;<br />
1-SSIS paketinin yaratıcısı ile bu paketin SQL Server Agent altında çalıştıran kullanıcı farklıdır.<br />
2-SQL Server Agent kullanıcısının veritabanlarıyla bağlantı kurmaya veya SSIS içerisinde kullanılan diğer kaynaklara erişme yetkisi bulunmamaktadır.</p>
<p>Bu sorunun çözümüne geçmeden önce aşağıdaki bilgiyi vermemiz faydalı olacaktır;<br />
SSIS paketindeki <b>ProtectionLevel</b> özelliği paketteki veritabanı bağlantı şifresi gibi özel bilgilerin yazma ve okuma esnasında şifreleme düzeyini belirtir. Varsayılan <b>EncryptSensitiveWithUserKey</b> değerine sahip olan bu özellik sözkonusu SSIS paketindeki verileri mevcut kullanıcının profil ayarına göre şifreler. Bu durumda sadece aynı profile sahip kullanıcılar bu paketi çalıştırabilir. Eğer farklı kullanıcılar paketi çalıştıracak olursa önemli hassas bilgileri boş olarak değerlendirilir. <b>ProtectionLevel</b> özelliği için kullanılabilecek diğer değerler şunlardır;</p>
<ul>
<li><b>DontSaveSensitive :</b> DTSX dosyası kayıt edildiği zaman içindeki özel bilgilerin dosyaya kayıt edilmesi engellenir. Örneğin veritabanı bağlantısında şifre kullanılmışsa DTSX dosyası içerisinde ilgili alan şu şekilde görünecektir.
<p>	<i>&lt;DTS:Password DTS:Name=&quot;Password&quot; Sensitive=&quot;1&quot;&gt;&lt;/DTS:Password&gt;</i></p>
<li><b>EncryptSensitiveWithUserKey :</b> Bu durumda hassas bilgiler mevcut kullanıcının profile göre şifrelenir. Sözkonusu password alanı bu durumda aşağıdaki gibi yazdırılır.
<p>	<i>&lt;DTS:Password DTS:Name=&quot;Password&quot; Sensitive=&quot;1&quot; Encrypted=&quot;1&quot;&gt;AQAAANCMnd8BFdE&#8230;&#8230;.&lt;/DTS:Password&gt;</i></p>
<li><b>EncryptSensitiveWithPassword :</b> Bu seçenekte paketteki önemli alanlar encrypt ederken bir şifre kullanılır. kullanıcının belirleyeceği şifre Security » PackagePassword bölümüne girilir. DTSX dosyasının çalıştırılması durumunda sözkonusu şifrenin de girilmesi gerekmektedir.
<li><b>EncryptAllWithUserKey, EncryptAllWithPassword :</b> Bu seçeneklerin önceki seçeneklerden tek farkı sadece önemli verileri değil tüm DTSX dosyasını encrypt edilir. Böylece dosya içeriğinin başka bir kullanıcı tarafından görülmesi okunması engellenmiş olur.
<li><b>ServerStorage :</b> SQL Server database rolerini kullanarak paketi korur. Bu seçenek paketin sadece SQL Server  msdb veritabanına kayıt edildiği zaman kullanılabilir. Nitekim bu seçenek aktiften DTSX dosyası dosya sistemine yazılmaz.
</ul>
<p>Şimdi makaledeki sorunu aşmak için kullanılabilecek yöntemlere bakalım;</p>
<p>1 &#8211; <b>SQL Server Agent proxy account</b> kullanımı<br />
SQL Server Agent için bir proxy hesabı oluşturulabilir. Bu hesabın hem job&#8217;ları çalıştırma yetkisi olmalı hem de DTSX dosyalarının sahibi olması gerekmektedir. Bu yöntem aynı makine üzerinde hem SQL Server Agent&#8217;in çalıştırıldığı hem de DTSX dosyalarının oluşturulduğu durumlarda anlamlıdır. Sözkonusu DTSX dosyaları başka bir makineye taşındığı zaman SQL Server Agent kullanıcısı farklı olacağından dolayı sorun yaşanabilir.</p>
<p>2 &#8211; <b>ServerStorage </b> seçeneği<br />
SSIS paketinin ProtectionLevel özelliği ServerStorage olarak set edilir. Bu seçenek paketi doğrudan SQL Server&#8217;da saklar ve SQL Server database rollerinin kullanılmasını sağlar.</p>
<p>3 &#8211; <b>ProtectionLevel = EncryptSensitiveWithPassword </b> değeri<br />
SSIS paketinin koruma düzeyini EncryptSensitiveWithPassword olarak set ederek bir çözüm oluşturabiliriz. SQL Server Agent Job içerisinden bu şifre girilerek SSIS paketi çalıştırılır.</p>
<p>4 &#8211; <b>SSIS Package configuration</b> dosyası oluşturmak<br />
SSIS ile en önemli özelliklerden biri çalışma anınca paket içerisindeki property&#8217;lerin dışarıdan command line üzerinden veya konfigürasyon dosyası üzerinden set edilebiliyor olmasıdır. Konfigürasyon dosyasının içine paketteki hassas bilgilerin değerlerini yazdırılır. SSIS paketinin koruma düzeyinin ProtectionLevel olarak kayıt ettiğimizde tasarım aşamasında hassas bilgiler pakete yazılmayacağı için çalışma anında config dosyasından okuma yapılabilir. </p>
<p>SSIS paketini yapılandırma değerlerini saklamak için XML tabanlı bir konfigürasyon dosyası kullanılabildiği gibi Registry entry, Environment variable veya SQL Server table de kullanılabilir. SSIS konfigürasyonu için &#8220;SSIS » Package Configurations&#8221; menüsünden &#8220;Package Configurations Organizer&#8221; penceresi kullanılır. Bu pencerede Add, Edit, Remove düğmeleri kullanılarak paket içerisindeki nesneler ve onlara ait property&#8217;ler için değerler tanımlanabilir. Örneğin içeride kullanılmış olan veritabanı bağlantı şifreleri bu dosyada tutulabilir.</p>
<p>Bu işlemden sonra DTSX dosyasının içerisine aşağıdaki gibi satır eklenir.</p>
<p>&lt;DTS:Property DTS:Name=&quot;ConfigurationString&quot;&gt;C:\dtsConfig Dosyasinin Yolu&lt;/DTS:Property&gt;</p>
<p>Job veya Command Line üzerinden SSIS paketini çalıştırmak için DTEXEC komutuna aşağıdaki gibi parametre yazılır.</p>
<p>/FILE &#8220;C:\Package1.dtsx&#8221;  /CONFIGFILE &#8220;C:\SSIS_Ayarlar.dtsConfig&#8221; /CHECKPOINTING OFF /REPORTING E</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2008/12/31/ssis-paketi-sql-server-agent-jobda-calismiyor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Olmert&#8217;in insafına kalmadı Gazze</title>
		<link>http://www.ahmetkaymaz.com/2008/12/30/olmertin-insafina-kalmadi-gazze/</link>
		<comments>http://www.ahmetkaymaz.com/2008/12/30/olmertin-insafina-kalmadi-gazze/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 21:10:07 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[Günlük Yaşam]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=231</guid>
		<description><![CDATA[Bizi soracak olursanız biz çok öfkeliyiz..
Kimsin sen Kim?
Adının içinde yanlışlıkla mertlik geçen kan heykeli adam &#8230;
Kimsin sen&#8230;
Seni çekiç suyuyla mı beslediler&#8230;
Asitli diken kundağında mı büyüdün.
Evinizin penceresi hep merhametsizliğe mi baktı küçükken.
Annen saçlarını çamurla mı yıkadı&#8230;
Sınıfta en arka sırada oturup, tahtaya kalaşnikofla mı kalktın..
En sevdiğin hayvan yılan mıydı senin&#8230;
Rezil mi olurdun arkadaşlarına bir kuşu öldürmeyince&#8230;
Defterin köpeklerle [...]]]></description>
			<content:encoded><![CDATA[<p>Bizi soracak olursanız biz çok öfkeliyiz..</p>
<p>Kimsin sen Kim?<br />
Adının içinde yanlışlıkla mertlik geçen kan heykeli adam &#8230;<br />
Kimsin sen&#8230;<br />
Seni çekiç suyuyla mı beslediler&#8230;<br />
Asitli diken kundağında mı büyüdün.<br />
Evinizin penceresi hep merhametsizliğe mi baktı küçükken.<br />
Annen saçlarını çamurla mı yıkadı&#8230;<br />
Sınıfta en arka sırada oturup, tahtaya kalaşnikofla mı kalktın..<br />
En sevdiğin hayvan yılan mıydı senin&#8230;<br />
Rezil mi olurdun arkadaşlarına bir kuşu öldürmeyince&#8230;<br />
Defterin köpeklerle mi kaplıydı.<br />
Seni Rahibe terasalar mı kutsadı&#8230;<br />
<span id="more-231"></span><br />
Kimsin sen Kim?<br />
Saçlarının arasında mıydı bitlenmiş bombalar&#8230;<br />
Vicdansızlık ormanının tanrısız kralı mıydın.<br />
Isırgan otlarını mı dişledi ateş yutan ağzın&#8230;<br />
İnsan olmayacaksan niye giydin bu şehrin ölümünü&#8230;<br />
Düğününde sırtlanlar mı çekti fotograflarını<br />
Eve giderken ekmek yerine kurt mu kaptın mermi fırınlarından&#8230;</p>
<p>Bizi soracak olursanız biz çok öfkeliyiz&#8230;<br />
Olmertin insafına kalmadı Gazze&#8230;<br />
Olmertin insafına tenezzül etmeyen Gazze&#8217;li çocukların ruhuna düğüm düğüm cennet sessizliği diliyoruz&#8230;</p>
<p>Bırakalım Olmertin ikinci adını Allah koysun&#8230;<br />
Allah koysun&#8230;</p>
<p>Bizi soracak olursanız biz Olmertin insan olmadığını düşünmeye devam ediyoruz.. </p>
<p><i>Esra Elönü</i></p>
<p><!--IHH Banner BASLA--><br />
<a href="http://www.ahmetkaymaz.com/go.php?http://www.ihh.org.tr/" target="_blank"><br />
<img src="http://www.ahmetkaymaz.com/wp-content/uploads/Filistine_Yardim.jpg" align="center" border="0"></a><br />
<!--IHH Banner BITIR--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2008/12/30/olmertin-insafina-kalmadi-gazze/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>SQL Server Data Replication İlgili Notlar</title>
		<link>http://www.ahmetkaymaz.com/2008/05/20/sql-server-data-replication-ilgili-notlar/</link>
		<comments>http://www.ahmetkaymaz.com/2008/05/20/sql-server-data-replication-ilgili-notlar/#comments</comments>
		<pubDate>Tue, 20 May 2008 20:18:05 +0000</pubDate>
		<dc:creator>Ahmet Kaymaz</dc:creator>
				<category><![CDATA[SQL Server, Oracle]]></category>

		<guid isPermaLink="false">http://www.ahmetkaymaz.com/?p=275</guid>
		<description><![CDATA[Bu yazıda SQL Server Replication ile ilgili forumlarda veya site üzerinden gelmiş olan sorulara verdiğim yanıtları ve deneyimlerimi paylaşıyor olacağım.
1 &#8211; &#8220;Error 14114: (NULL) is not configured as a distributor&#8221; hatası
Bu hatanın alınmasının nedeni local sunucunun remote server olarak tanımlanmamış olmasıdır. Nitekim select @@servername ifadesi null döndürecektir. Eğer sysservers tablosunda kayıt var ise sp_dropserver &#8216;SunucuAdi&#8217;,'droplogins&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazıda SQL Server Replication ile ilgili forumlarda veya site üzerinden gelmiş olan sorulara verdiğim yanıtları ve deneyimlerimi paylaşıyor olacağım.<span id="more-275"></span></p>
<p><b><font color='#0086ab'>1 &#8211; &#8220;Error 14114: (NULL) is not configured as a distributor&#8221; hatası</font></b></br><br />
Bu hatanın alınmasının nedeni local sunucunun remote server olarak tanımlanmamış olmasıdır. Nitekim <i>select @@servername</i> ifadesi null döndürecektir. Eğer <b>sysservers</b> tablosunda kayıt var ise <i>sp_dropserver &#8216;SunucuAdi&#8217;,'droplogins&#8217;</i>  ifadesi çalıştırılıp ilgili sunucu kaydı silinir. Ardından aşağıdaki gibi yerel sunucu eklenir;</p>
<p><br/><i>sp_addserver &#8216;YerelSunucuAdi&#8217;, &#8216;local&#8217;</i></p>
<p><br/>Daha sonra servis yeniden başlatılır.</p>
<p><br/><b><font color='#0086ab'>2 &#8211; </font></b>Replike edilen bir tabloya yeni bir kolon eklemek veya var olan bir kolonu çıkarmak veya kolonun tipini değiştirdiğimizde o tablonun replike ediliği otomatik abonelerin yeniden initialize edilmesi gerekir. Bu durumda abonedeki tablo drop edilir yeniden create edilip ardından bulk insert yapılır.</p>
<p><br/><b><font color='#0086ab'>3 &#8211; </font></b>Bazı durumlarda distributor tarafındaki UPDATE işlemi Subscriber tarafında DELETE / INSERT olarak uygulanabilir. Bunun nedeni değişen alanın üzerinde unique constraint olmasıdır. Konuyla ilgili olarak aşağıdaki sayfa incelenebilir.<br />
<a href="http://support.microsoft.com/kb/238254" target='_blank'>http://support.microsoft.com/kb/238254</a></p>
<p><br/><b><font color='#0086ab'>4 &#8211; </font></b>Snapshot folder olarak share edilmiş bir alanın verilmemesi veya Subscriber&#8217;ların erişmeyeceği bir alanın verilmesi ancak push subscription&#8217;a destek verir. Network path vermek daha mantıklı olacaktır.Network pathin verilmesi durumunda bu share folderin pull subscription gibi diğer makinelerde çalışan agentler tarafından erişilebiliyor olması gerekir.</p>
<p><br/><b><font color='#0086ab'>5 &#8211; </font></b>Bir aboneyi yaratırken manual mi yoksa otomatik mi Initialize edileceği belirtilir. Eğer manual olarak set edilmiş bir abone ise o anda veya daha sonra kaynak sunucunun o sunucuyu ilklendirilmesi sağlanamaz. Reinitialize etmek için o aboneyi drop edip yeniden create etmek lazım. Eğer otomatik olarak set edilmişse <i>Replication » Publications</i> bölümü altındaki aboneyi sağ tıklayıp <b>Reinitialize</b> menüsünü seçtiğimizde yeniden ilklendirilmiş olur. Eğer manual yöntemini tercih etmişsek replike edilecek tabloları ve replikasyon prosedürelerini aboneler üzerinde oluşturmak lazım. Örneğin üzerinde replikasyon prosedürlerinin yaratılmadığı aboneyi senkronize etmek istediğimizde <font color='red'>Could not find stored procedure &#8217;sp_MSins&#8230;</font>  gibi bir hata alırız. Replikasyon prosedürlerine ait scripti oluşturmak için publish edilmiş olan database üzerinde<br /> sp_scriptpublicationcustomprocs [ @publication = ] &#8216;publication_name&#8217; <br />prosedürü kullanılır. Bu prosedür her tablolar için çalışacak olan INSERT, UPDATE ve DELETE prosedürlerinin içeriğini oluşturur. Üretilen SQL scripti abone üzerinde çalıştırmak yeterli olacaktır. </p>
<p><br/><b><font color='#0086ab'>6 &#8211; </font></b>Manual initialization işleminde dikkat edilmesi gereken en önemli konu kaynak veritabanı üzerinde önceki kayıtlarda yani abonede olmayan kayıtlarda bir değişiklik olursa abonede o kayıt olmadığı için UPDATE / DELETE işlemi hata verecektir. <font color='red'>&#8220;&#8216;The row was not found at the Subscriber when applying the replicated command.&#8217;&#8221;</font>  hata mesajıyla karşılaşılır. Bu kayıt abonede oluşturulmadığı sürece yani bu hata giderilmediği sürece replikasyon o noktada takılıp devam etmeyecektir.<br />
<br/><br />
Eğer replikasyonun yapıldığı sistemler SQL Server ise aboneler üzerinde her tablo için &#8220;sp_MS&#8230;&#8221; ile başlayan INSERT/DELETE/UPDATE procedure&#8217;leri oluşturulur. Bu prosedürlerin aldığı parametreler o tablonun o anda replikasyona dahil edilmiş olan kolonlarına göre oluşturulur. Eğer daha sonradan tabloların şemaları değişirse veya replikasyonda kolon ekleme/çıkarma olursa bu prosedürleri yeniden abonelerde oluşturmak gerekir. Eğer replikasyon heterojen sistemler arasında yapılırsa yani SQL Server &#8211; Oracle arasında yapılırsa o zaman subscriber olan Oracle üzerinde bu prosedürler oluşturulmaz (&#8220;<b>Heterogeneous Database Replication</b>&#8220;). Normal UPDATE, DELETE, INSERT SQL cümleleri gönderilir. Abonelere gönderilecek komutlar <b>MSrepl_commands</b> ve <b>MSrepl_transactions</b>  tablolarında binary formatında tutulur.</p>
<p><br/><b><font color='#0086ab'>7 &#8211; Replikasyon işleminde Distribution hataları atlamak.</font></b><br />
<br/><br />
Replikasyon, Publisher&#8217;da meydana gelen her transaction Distributor&#8217;a gönderilir. O da ilgili Subscriber&#8217;a gönderir. Bu süreçte INSERT / UPDATE / DELETE işlemlerinde birinde hata meydana gelirse o işlem rollback edilir veya sonraki transactionlar işlenmez. Bu şekilde herhangi bir hatanın meydana gelmesi durumunda o hatayı görmemezden gelip sonraki transactionların abonelerde uygulaması için &#8220;Distribution Agent&#8221; için <b>-SkipErrors</b> parametresi kullanılabilir. Bu parametreye o hata veya hataların numaraları girilerek o hataların görmemezlikten gelinmesi sağlanabilir. Bunun için &#8220;<i>Publisher and Distributor Properties</i>&#8221; penceresindeki <b>Distributor</b> sekmesinde <b>Agent Profiles</b> tıklanarak yeni bir profil tanımlanır. Replikasyon agent&#8217;lerin çalıştığı default profile göre hatanın olması durumunda sistem devam etmez. <b>SkipErrors</b> değerinin karşısında mevcut hata numaralarının yazıldığı bir profil yaratılır ve servis yeniden başlatılarak bu profilin devreye girmesi sağlanır. Hata giderildikten sonra yeniden default profile kullanılabilir.</p>
<p><br/><b><font color='#0086ab'>8 &#8211; </font></b>Replikasyonda sadece replikasyona dahil edilmiş kolonlarla ilgili transactionlar abonelere gönderilir. Örneğin AdSoyad ve Sehir kolonlarının bulunduğu kaynak tablosunda sadece AdSoyad kolonu replike ediliyorsa sadece Sehir kolonu update edildiği zaman aboneye herhangi bir update cümlesi gönderilmez aynı şekilde AdSoyad ve Sehir aynı anda update edilirse sadece AdSoyad kolonun update bilgisi aboneye ulaşır. Replikasyonun güzel yanı replikasyona dahil edilmiş kolonlar içerisinden gerçekten update edilmiş olanları abonelere gönderir. Örneğin tabloda Sehir=&#8217;Ankara&#8217; ve AdSoyad=&#8217;Ahmet&#8217; olan kayıt için <br />UPDATE Musteri SET Sehir=&#8217;İstanbul&#8217;,AdSoyad=&#8217;Ahmet&#8217; WHERE MusteriId=1<br /> sorgusunu çalıştırdığımızda abonelere sadece <br />UPDATE Musteri SET Sehir=&#8217;İstanbul&#8217; WHERE MusteriId=1<br /> sorgusu gönderilecektir. Aynı update cümlesini çalıştırdığımızda abonelere herhangi bir güncelleme emri gönderilmeyecektir.</p>
<p><br/><b><font color='#0086ab'>9 &#8211; </font></b>Article&#8217;larda bir değişiklik yapıldığı zaman yani replikasyona yeni bir kolon eklendiği veya var olan bir kolon çıkarıldığı zaman tüm subscription&#8217;lar reinitialize olacak şekilde işaretlenir. Onları yeniden ilklendirmek gerekir. Bu durum automatic initialization destekli subscription&#8217;lar için geçerli. Bu durumda reinitialization işlemi bir sonraki Snapshot Agent ve Distribution Agent&#8217;lerin çalışmasıyla gerçekleşir. Manual initialization destekli olan aboneleri manual olarak ilklendirmek gerekir. </p>
<p><br/><b><font color='#0086ab'>10- Snapshot dosyaları nelerdir </font></b></p>
<p>İlklendirme işlemi için gerekli olan Snapshot dosyaları şunlardır; schema (.sch); data (.bcp); constraint ve index&#8217;ler (.dri); constraint&#8217;ler (.idx); trigger&#8217;ler (.trg):sıkıştırılmış snapshot dosyaları (.cab). Bu ilklendirme dosyaları transactional publication için <b>sp_browsesnapshotfolder</b> prosedürü, merge publication için <b>sp_browsemergesnapshotfolder</b> prosedürü kullanılarak görülebilir. Bu prosedürler publisher üzerinde çalıştırılır.</p>
<p><br/><b><font color='#0086ab'>11 &#8211; </font></b>Replikasyona dahil edilmiş olan bir kolonu kaldırmak istediğimizde &#8220;<font color='red'>ALTER TABLE DROP COLUMN failed because  is currently replicated.</font>&#8221; gibi bir hatayla karşılaşırız. Bunu çözmenin en doğru yolu replikasyonu durdurmak, sözkonusu kolonu replikasyonda çıkarıp ardından DROP etmektir.</p>
<p><br/><b><font color='#0086ab'>12 &#8211; </font></b>&#8220;<font color='red'>SQL Server Enterprise Manager could not configure &#8216;TESTSERVER&#8217; as the Distributor for &#8216;TESTSERVER&#8217;. Error 21112: &#8216;-PollingInterval&#8217; is not a valid parameter for the Log Reader Agent</font>&#8221; hatası sunucunun Turkish collation  kullanıyor olmasından kaynaklanmaktadır. Bu hatayı gidermek için en az SQL Server 2000 Service Pack 1 kurmak lazım. Daha fazla bilgi için aşağıdaki adres incelenebilir.</p>
<p><a href='http://support.microsoft.com/kb/295325'>http://support.microsoft.com/kb/295325</a></p>
<p><br/><b><font color='#0086ab'>13 &#8211; </font></b>&#8220;<font color='red'>Message 20554 Severity 10 &#8220;The agent is suspect. No activity reported within the last 10 minutes.</font>&#8221; hatası replication agent&#8217;in SQL Server Enterprise Manager&#8217;e uzun süre durumunu haberdar edemeyişinden kaynaklanır. Bu hata sistem için sıkıntı yaratmaz. Bu hatayla karşılaşıldığı zaman sözkonusu agenti stop etmeyip servisin o anki işini bitirmesini beklemeliyiz. Agent stop edilirse o andaki işlemler rollback edilerek yeniden başlatılır.</p>
<p><br/><b><font color='#0086ab'>14 &#8211; </font></b>&#8220;<font color='red'>The process is running and is waiting for a response from one of the backend connections</font>&#8221; hatası nedir ?<br />
Bazı durumlarda Log Reader bu veya buna benzer bir mesaj verebilir. Bu bir hata olmayıp sistemin o an için meşgul olduğu karşı abonelerin tam olarak COMMIT edilmeyi beklediğini anlatır. Örneğin msrepl_transaction  tablosunda işlenecek veya işlemin transcationlar fazla olduğu zaman böyle bir uyarı verilir. Veya snapshot data aboneye yansıtıldıktan sonra tablolara ait indexler çalıştırıldığı zaman da bu uyarı verilir. Bunun için sunucunun işlemini beklemekte fayda vardır. Bir süre sonra normale geçecektir. Bu hata mesajını kısa sürede elde etmemek için Agent için daha yüksek timeout değerine sahip bir profil oluşturulabilir.</p>
<p><br/><b><font color='#0086ab'>15 &#8211; </font></b>&#8220;<font color='red'>The system cannot find the file specified&#8230;.</font>&#8221; hatası<br />
Bu hatayı genellikle snapshot agent çalışmaya başlarken hata verir. Bunun sebebi &#8220;C:\Program Files\Microsoft SQL Server\80\COM\&#8221; klasörünün altında replikasyon ile ilgili exe dosyalarının eksik olması olabilir.SP3 yeniden kurulabileceği gibi başka bir makineden ilgili exe ve dll dosyaları da kopyalanabilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkaymaz.com/2008/05/20/sql-server-data-replication-ilgili-notlar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
