Bir Veritabanı Yöneticisinin Notları #SQL #Server #DBA
2008-04-01
Operatör Önceliği ile İlgili SQL Sorusunun Cevabı
2008-03-24
Bir Devlet Hastanesi Macerası
- Gitmeden yanınıza en az 124 YTL para alın(Tam teşekküllü heyet raporu için 124 YTL ödemeniz gerekiyor),
- Kimliğiniz ile birlikte elinizde bir vesikalık fotoğrafınız bulunsun,
- Sabah erkenden gidip kuyrukta ön sıralarda yer alın(Maalesef sıra için Q-maticler yok o yüzden sıranızı kaptırmamanız için uzun soluklu bir sıra macerasına hazırlıklı olun)
- Kayıt işlemlerinizi yaptırdığınız gibi röntgen ve tahlil sırasına koşunuz
- Tahliliniz öğleden sonra çıkacağı için Dahiliyede boşu boşuna kuyrukta beklemeyiniz.
- Kapı önünde kuyruğu az olan polikliniği tercih edin.
- Mümkünse bir yada birden çok kişi ile gidip farklı polikliniklerde sıra alın yoksa tek tek tüm doktorları gezip muayene olmak bir kaç gününüzü alabilir.
- Öğleden sonraları muayene yoktur bu yüzden boşu boşuna öğleden sonra beklemeyiniz.
- Çarşamba günleri Bakırköy Devlet hastanesinde heyet yoktur. Çarşamba günleri heyetten rapor almayı boşu boşuna beklemeyin:)
- Göz polikliniğinin kuyruğu her zaman çok olur bunu göz önünde bulundurun:)
- Psikiyatr için boşu boşuna kapıda beklemeyin evraklarınızı içerisdeki sektere verin.
- Genel Cerrahi 10:30 dan önce rapor alacaklara bakmaz boşu boşuna ne doktorun kapısında bekleyin ne de Genel Cerrahi Doktorunu rahatsız edin!
- Evraklarınızı her zaman 12:00 den önce tamamlayın zira 12:00 den sonra evrak teslimi alınmaz direk ertesi güne kalırsınız.
- 12:00 den önce evraklarınızı teslim ettiyseniz aynı günün öğleden sonrasında heyet toplanır ve raporunuzu imzalar.
- Heyet günü 13:30 da burda olun derler. Siz 14:00 den sonra gelin. Çünkü en az yarım saat boyunca boşu boşuna beklersiniz. Askeriyedeki mantık gibi insanları 14:00 de toplamak için herkese 13:30 da muhakkak burda olun denilir.
- Bu bu adımları sağlıklı bir şekilde aştıktan sonra Sağlam raporunuzu alıp hayırlı işlerde kullanırsınız:)
Burdan hastaneler için de bir kaç önerim olacak:
- İ.allah tüm devlet hastanelerine bir an önce online/telefon randevi sistemi gelir. Bahsettiğim hastenede diğer poliklinikler için online ve telefon ile randevu sistemi olmasına rağmen Heyet Raporu için henüz böyle bir güzellik yok maalesef.
- Heyet raporu için adam akıllı online bir sitem kurulur i.allah. Böylelikle sistem herkese hangi sırada hangi doktorda ne zaman sıra geldiğini bildirip tüm bürokratik ve eziyetlik işlemleri bitirmiş olur.
- Bu yapılamıyorsa hastane yönetimi Heyet Kurulunda kayıt işlemleri için bir Q-matic eklerlerde insanların saatlerce sıralarda sürünmelerini engellemiş olurlar. Kuyruklar saatlerce sürebiliyor ve sıranızı kaybetmemek için sıradan ayrılamıyorsunuz. Sıradan ayrılıp geldiğinizde tantanalar olabiliyor.
- Yönetim insanlara sıra numarası veremiyorsa en azından kayıt formuna sıra numarası versinler. Böylelikle insanlar kayıt formundan sıralarını takip ederler.
- Hastane döner sermeyesine bu kadar gelir sağlayan bir kurulun kayıt işlemlerini bir kişinin yapması doğru değil. Hem hizmet memnuniyeti hem de daha fazla gelir elde etmek için en azından 3 tane kayıt görevlisi görevlendirilmeli. Şu anki görevli hem tek başına hem de oldukça ağır iş yapıyor:(
- İşlemlerin nasıl ve hangi sırada yapıldığını web sayfalarında yada bir panoda güzelce izah edebilirler. Böylelikle gelen insanlar her bulduğu görevliye birden çok soru sorup onların da vaktini çalmamış olurlar, boşu boşuna yorulmamış ta olurlar.
Allah kimseyi hastanelere düşürmesin. Şimdilik hoşça kalın sağlıcakla kalın!
2008-03-19
2008-03-18
Tablolardaki Kayıt Sayısını ve Fiziksel Büyüklüğü Bulmak
SET NOCOUNT ON
IF EXISTS(SELECT * FROM TempDb.dbo.SysObjects WHERE NAME = '##Space_Used') DROP TABLE ##Space_Used
CREATE TABLE ##Space_Used (
name nvarchar(128),
rows char(11),
reserved varchar(18),
data varchar(18),
index_size varchar(18),
unused varchar(18)
)
DECLARE @User_Table_Name varchar(200)
DECLARE User_Tables_Cursor CURSOR FOR
SELECT Name
FROM Dbo.SysObjects
WHERE XTYPE = 'U'
OPEN User_Tables_Cursor
FETCH NEXT FROM User_Tables_Cursor INTO @User_Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ##Space_Used
EXEC sp_spaceused @User_Table_Name
FETCH NEXT FROM User_Tables_Cursor INTO @User_Table_Name
END
CLOSE User_Tables_Cursor
DEALLOCATE User_Tables_Cursor
SELECT
TableName=LEFT(Name, 50),
"RowCount"=Rows,
Phys_Size_KB = CONVERT(int, LEFT(Reserved, PATINDEX('% KB', Reserved) - 1))
FROM ##Space_Used
ORDER BY Phys_Size_KB DESC
IF EXISTS(SELECT * FROM TempDb.dbo.SysObjects WHERE NAME = '##Space_Used') DROP TABLE ##Space_Used
Kaynak: SQLServerCentral
2008-03-17
Bir Parti Kapatma Davası Daha!
2008-03-13
Fıkra Faslı
Biraz gittikten sonra polis durdurmuş kendisini, ehliyet ve ruhsatı aldıktan sonra
'Radara yakalandınız ceza kesilmesi için lütfen ekip otosuna buyurun!' demiş...
'Biliyorum hızlıydım!' demiş adam..
'Fakat benden başka bir sürü hızlı giden vardı.. Onları neden durdurmadınız? '
'Hiç balığa gittiniz mi?' diye sormuş polis..
'Uhmm! Evet!' diye cevaplamış adam..
'Siz!' demiş polis, 'Hiç bütün balıkları yakaladınız mı?'
***
Kamyon şoförü otoyolda giderken 'Dikkat alçakköprü!' yazısını görmesiyle köprünün altına sıkışması bir olmuş...
Son derece sinirlenmiş ikaz levhasının daha köprüye gelmeden önce konulmamasına...
Otoyol kapanmış, arkasında kilometrelerce araç birikmiş, haber vermesine rağmen saatler sonra ekip gelmiş, içeriden ağır adımlarla sırıtarak bir polis inmiş, kamyonun yanına gelip ellerini beline koymuş,
'Sıkıştın ha!' demiş..
'Hayır Memur bey!' demiş şoför..
'Bu köprüyü taşıyordum, mazotum bitti..!'
Güzel fıkralar için sevgili dostum Mehmet Döner'e teşekkürler.
2008-03-12
2008 Microsoft Lansmanının Ardından
Lansman vesilesiyle Tekofaks'tan Yazılım Müdürüm Osman Özhancı, Türkiye Finans'tan Metin Karabiber, Bilge Adamdan Mustafa Acungil ve günlüğümün sıkı takipçilerinden Adil Erkan ile ayak üstü sohbet etme fırsatı buldum. Bunun yanında BT Akademi'den Sefer Algan ile Oğuz Yağmur ve Daron Yöndem'i gördüm fakat görüşme için zaman olmadı:( Salonda bir şekilde tanıştığımız bir çok insanı görmek güzeldi. Eminim zaman olsaydı ve dikkatli baksaydım bir o kadar daha tanıdık sima çıkardı. Bu tür lansmanların bir faydası da aynı sektörde benzer alanda uğraşan insanları bir araya getirmesi.
Bir sonraki lansmanlarda görüşmek dileğiyle herkese yenilik dolu günler diliyorum.
2008-03-10
T-SQL Sorusunun Cevabı
12 kişi soruyu doğru cevapladı. 10 kişi "Hata Verir" yanılgısına düştü. Benim ortaya çıkan sonuçtan anladığım; ankete katılanların yarısından çoğunun T-SQL bilgilerini gözden geçirmeleri yada T-SQL eğitimi almaları gerekiyor.
2008-03-06
İstanbul'da Anadolu'dan Avrupa'ya Uzun Bir Yolculuk!
Sabah uykudan geç uyanınca hergün işe gitmek için kullandığım servisi kaçırdım. Anadolu yakasında oturup ta Avrupa yakasında çalışan birisi için servis kaçırmak çok zorlu ve stresli bir yolculuğun uzun bir başlangıcı olabiliyor çoğu zaman. Neyse can havli ile kendimi otobüs durağında buldum. Duraktan Cevizlibağ'a giden halk otobüsüne bindim. Ön tarafta şoför yanında ayakta bir yer bulabildim. Ayakta da olsa bir yer bulmaya sevinmiştim. Çünkü o an gelen otobüste ayakta da olsa yer bulmamak vardı işin içinde.
Yol uzun -bir kıtadan başka bir kıtaya geçmek kolay mı?- ve yolda aşırı trafik olunca insan oturabileceği bir yer arıyor. Yer bulmanın algoritması belliydi. Mümkün oldukça arka taraftaki sıralara göz dikilmeliydi. Bunun için adım adım da olsa ilerlemiydi. Arka tarafa doğru ağır ama muhakkak yer bulağımı ümit edecek kadar emin adımlarla yürüdüm. Aradan yarım saat geçmeden inenler sayesinde oturacak bir yer buldum. Boş yeri bulmam ile annem yaşındaki bir teyzeye yeri vermem bir oldu. -Yer verme konusundaki dusturum belli bir yaşın üzerindkei yaşlılar, hamileler, özürlüler ve oturmaya benden çok ihtiyacı olan insanlara yer vermeye çalışırım. - Bir kaç adım daha arka tarafa doğru ilerledim. Gel zaman git zaman sol tarafta oturan bir beyefendinin inmesiyle onun yerinde kendimi buldum. Oturur oturmaz en ön tarafta biraz önce yer verdiğim yeyzeden baya yaşlı ve ayakta güçlükle durduğunu hissetiğim bir teyze gözüme ilişti. Yer vermek için niyetlensem de maalesef teyze beni görmüyordu. Beni görseydi küçük bir işaretle yer verecektim. Yerimden ayrılıp ön tarafa gidip teyzeye yerime oturur musunuz diye içimden geçirsem de yerimden ayrıldığım gibi yerimin dolacağından emindim. O yüzden sürekli teyzeyi gözleyip beni tarafa baktığı yada beni görebileceği anı bekledim. Bu arada içerisi yeterince havasızdı bu yüzden camı açayım diye düşündüm. Önce yanımdaki bey amcaya sonra da yer verdiğim hanım teyzeye camı açtığım takdirde içeri girecek hava akımından rahatsız olup olmayacaklarını sordum. Her ikisi de camın açılmasını memnuniyetle karşıladılar. Ben de içeriyi biraz olsun havalandırmak için camı açtım. Ve tekrar yaşlı teyzeye baktım. Baktım yavaş yavaş hareketleniyor. Arka tarafa doğru adım atmaya başladı. Bu duruma çok sevindim. Ardından görüş mesefesine gelince buyrun benim yerime oturmaz mısınız diye teklifte bulundum. Yaşlı teyze bu tekliften çok müteşekkir olup şükranlarını sunup Allah razı olsun dedi.
Yol uzun ve bitmiyor. Yolculuk ile ilgili bir şeyler karalayım dedim. Cebimde kalem ve kağıt var fakat ayakta olduğum için yazmam mümkün değildi. Bir yer olsa da şu yolculukla ilgili bir şeyler karalasam diye düşünürken sağ tarafımda bir koltuğun boşladığını gördüm. Oturup bir şeyler karalamaya başladım. beş on dakikalık bir yazı yazmadan sonra hamile bir bayanın otobüse binip benim oturduğum yere yakın bir yerde ayakta durduğunu gördüm. Anında ayağa kalkıp yerimi hamile bayana verdim. Çok geçmeden nihayet tekrar oturup karalamaya kaldığım yerden devam ettim.
Otobüsten inip tramvaya bindim ardından metbüse binip 3-5 dakika sonra Ataköy-Şirinevler durağından indim. Metrobüs gerçekten Avrupa yakası için bulunmaz bir nimet. Keşke Anadolu yakasında da metrobüslerden olsa da ulaşım hem rahatlardı ve daha hızlı olurdu. Büyük şehir belediyesi metrobüs seferlerini başlatmakla Avcılar-Cevizlibağ trafiğini oldukça rahatlatmış. Ataköy-Şirinevler durağından metroya binip 10 dakika içerisinde iş yerime vardım. Toplamda 3 saati bulan bir yolculuk oldu. Kimi anadolu şehirlerinde şehirlerarası yolculuk süresi bu kadar sürmüyor. Gerçi bu şehirlerarası bir yolculuktan çok kıtalar arası bir yolculuk olduğu için daha uzun sürmüş olabilir:) İ.allah kıtalar arası yolculuk ta olsa bu süreler can sıkmayacak bir süre zarfında biter.
Herkese tavsiyem öncelikle iş-okul servislerinizi kaçırmayın. Şahsi araçlarınız yerine toplu taşıma araçlarını tercih edin ki trafik kilitlenmesin, insanlarımız trafik çilesini daha az çeksin.
Bu trafik bir süredir ciddi bir şekilde canımı sıkıyor. Günde ortalama 4 saatim yolda geçiyor. Bazen anadolunun küçük, şirin ve trafiğin olmadığı sakin kentlerine gidesim geliyor. Bu trafik derdinden kurtulmak için ya İstanbul'dan kaçmalıyım yada evime yakın bir yerde iş bulmalıyım. Bakalım zaman ve trafik neyi gösterecek?
Bir sonraki yazı yolculuğunda görüşünceye dek herkese internet dünyasından hayırlı yolculuklar diliyorum.
2008-03-04
SQL Eğitim Konuları Anketi Sonucu
Uluslararası Sertifikalı Yazılım Test Eğitimi(ISTQB)
Eğitimin İçeriği
Yazılım Testinin Temelleri
- Yazılım hataları, hataların sebepleri ve sonuçları
- Test kapsamının oluşturulması
- Test projesinin başarısını etkileyen faktörler
- Testin limitleri
- Testlerin önceliklendirilmesi
- Kalite Risk Analiz Teknikleri - Proje Risk Haritasının Hazırlanması
- Test Senaryolarının (Test case) tasarlanması, yazılması ve dokümantasyonu
- Örnek uygulama seçimi (Oracle Problem)
- Test sonlandırma kriterlerinin belirlenmesi
Yazılım Geliştirme Döngüsünde Testin Yeri
- Test psikolojisi
- Temel test süreçleri
- Farklı yazılım geliştirme süreçlerine testin entegrasyonu (Waterfall, Spiral, RAD, Extreme Programming, V-Model etc.)
- Doğrulama ve onaylama (Verification and Validation)
- Test derinliği (birim, sistem, entegrasyon, kullanıcı kabul testleri)
- Test çeşitleri (fonksiyonel, performans, yapısal, onay testleri)
Test Projesinin Yönetimi
- Roller ve sorumluluklar
- Test takımının organizasyonu
- Test ortamının kurulması (test laboratuarı)
- Test stratejisi ve planının oluşturulması
- Kapsam, test proje planı ve risklerin belirlenmesi
- Test projesi çıktıları (testware)
- Kritik perfomans göstergeleri
- Test ve kalite control
- Hataların önceliklendirilmesi ve raporlanması
Dinamik Testler
- Kara kutu test teknikleri (Black Box Test Techniques)
- Denklik sınıfı test tekniği (Equivalence Class Partitioning)
- Uç nokta test tekniği (Boundary Value Analysis)
- Karar tablosu test tekniği (Decision table testing)
- Sistem durumu test tekniği (State transition testing)
- İş senaryosu test tekniği (Use case testing)
- Beyaz kutu test tekniği (White Box Test Techniques)
- Araştırmacı test tekniği (Exploratory Test Techniques)
Test Otomasyon Araçları
- Test otomasyonunda dikkat edilmesi gereken konular
- Test otomasyon araçları seçim süreci
- Test planlama ve yönetim araçları
- Statik test otomasyon araçları
- Dinamik test otomasyon araçları
Eğitimde Yapılacak Pratik Uygulamalar
- Risk haritasının çıkartılması
- Test planı yazılması
- Test senaryosu (Test Case) yazılması
- Fonksiyonel test
- Performans testi
- Kara kutu test tekniğinin uygulanması
- Beyaz kutu test tekniğinin uygulanması
- Hata girişi ve raporlanması
Microsoft 2008 Sunucu ve Yazılım Platformu Lansmanı
Tarih: 12 Mart 2008 Çarşamba, 09:00 - 18:00
Yer: Lütfi Kırdar Kongre ve Sergi Sarayı
Gündem
09:00 - 10:00 Kayıt
10:00 - 12:45 Windows Server 2008 Visual Studio 2008 SQL Server 2008
Lansmanı
10:00 - 10:40 Hoş Geldiniz: Microsoft Türkiye Genel Müdürü Çağlayan Arkan ve
Platin Sponsorlar
10:40 - 11:00 Dinamik IT - Microsoft MEA Vice President Ali Faramawy
11:00 - 11:50 Uçtan Uca: Windows Server 2008, SQL Server 2008, Visual Studio 2008
11:50 - 12:10 Ara
12:10 - 12:30 Başarı Hikayeleri
12:30 - 12:45 Kahramanlar Sahnede
12:45 - 13:45 Öğle Yemeği
Paralel Sunumlar aynı anda başlayıp farklı salonlarda yapılacaklardır.
Paralel Sunumlar
13:45 - 14:35
• Windows Server 2008 Geleceğin Platformu
• SQL Server 2008 Gelişmiş Veri Platformu
• Visual Studio 2008 Yeni Nesil Yazılım Platformu
• Platin Sponsor Sunumu: Tradesoft
14:35 - 14:50 Ara
14:50 - 15:40
• Windows Server 2008 Sanallaştırma Teknolojileri
• SQL Server 2008 ile Kritik İş Uygulamaları
• Visual Studio 2008 Yeni Nesil Web Uygulamaları
• Platin Sponsor Sunumu: Fujitsu
15:40 - 15:55 Ara
15:55 - 16:45
• Windows Server 2008 Güvenlik Özellikleri ve NAP
• SQL Server 2008 ile İş Zekası
• Visual Studio 2008 Yeni Nesil Akıllı İstemciler
• Platin Sponsor Sunumu: Intel
16:45 - 17:00 Ara
17:00 - 17:50
• Windows 2008 ve Yeni Nesil Web
• SQL Server 2008 ile Dinamik Uygulama Geliştirme
• Visual Studio 2008 Yeni Nesil office uygulamaları
• Platin Sponsor Sunumu: HP
Kayıt olmak için tıklayın.
Not: Etkinliğe gelecek arkadaşlar etkinlik öncesi haberdar ederlerse buluşabiliriz.
2008-03-03
Replikasyonu Silme
- Tüm subscription'ları silin
- Tüm publication'ları silin
- Ardından distributor 'ü silin
Subscription Silme:
USE
GO
EXEC sp_dropsubscription @publication = N'
Publication Silme:
USE
GO
EXEC sp_droppublication @publication = N'
USE master
GO
EXEC sp_replicationdboption @dbname = N'
Distributor Silme:
USE master
GO
EXEC sp_dropdistributor @no_checks = 1
Tüm bunların yanında replikasyon nesnelerinin tümünü aşağıdaki SP ile silebilirsiniz:
sp_removedbreplication '
Not: Yukarıdaki silme işlemlerini Transactional Replikasyona göre yazdım. Diğer replikasyon türleri ve daha ayrıntılı bilgi için SQL Server Books Online kullanabilirsiniz.
Bir Hata Ve Çözümü
Line 91 An error occurred during decryption.
Msg 15185, Level 16, State 1, Procedure sp_addlinkedsrvlogin,
Line 98 There is no remote user 'sa' mapped to local user '(null)' from the remoteserver 'TEST'.
Yukarıdaki hata ile karşılaştığınızda aşağıdaki kod ile sorunu giderebilirsiniz:
ALTER SERVICE MASTER KEY FORCE REGENERATE
(Bu hatayı almışsanız kesin illegal bir işlem yapmışsınızdır: Sorunlu olan bir sistem database i düzgün çalışan bir sistem database ile değiştirmek gibi:) Bu tür durumlarda naçizane önerim tüm işlemlerinizi legal yoldan yapınız!)
2008-03-02
SQL Server 2008 İle Gelen Kolaylıklar
SQL Server 2008'den önceki sürümlerde değişken tanımlarken değişkene bir başlangıç değeri atayamıyorduk. SQL Server 2008 ile birlikte bu eksiklik giderildi. Daha önceleri değişken tanımlamayı ve bu değişkene bir değer atamayı aşağıdaki gibi yapardık:
DECLARE @Sayi1 INT, @Sayi2 INT
SET @Sayi1=34
SET @Sayi2=63
Veyahut SET lemeyi SELECT cümleciği içinde aşağıdaki gibi yapardık:
SELECT @Sayi1=34, @Sayi2=63
SQL Server 2008 ile birlikte değişkeni tanımlarken değişkene ilk değeri de atayabileceğiz:
DECLARE @Sayi1 INT=34, @Sayi2 INT =63
Çoklu Kayıt Ekleme
Bu güzelliğin yanında INSERT cümleciğinde aynı anda birden çok kayıtı tek SQL kodu ile ekleyebileceğiz:
DECLARE @Tablom TABLE(Sayi1 INT, Sayi2 INT)
INSERT INTO @Tablom VALUES(1,2), (2,3), (3,4), (4,5)
SQL Serverın daha önceki sürümlerinde aynı işi yapmak için her kayıt ekleme için ayrı ayrı INSERT cümlecikleri yazmamız gerekirdi.
2008-02-26
T-SQL ile Kullanıcıya Yetki Verme
GRANT VerilecekYetkiler ON NesneAdi TO KullaniciAdi
Örnek : Mehmet kullanıcısına Kullanici tablosunda SELECT yetkisi verelim.
GRANT SELECT ON Kullanici TO Mehmet
Şayet yetkiyi Windows Authentication için verecekseniz domain ve kullanıcı adını iki köşeli parantez arasında yazmalısınız[]:
GRANT SELECT ON Kullanici TO [GUZEL\Mehmet]
Bir kullanıcıya birden çok yetki vereceksiniz yetkileri virgül(,) ile ayrıp dileğiniz kadar yetki çeşidini yazabilirsiniz:
GRANT SELECT, INSERT, DELETE, UPDATE ON Kullanici TO Mehmet
Bir kullanıcıya tüm yetkileri vermek için tek tek yetki isimleri yazmak yerine ALL deyimini kullanabilirsiniz:
GRANT ALL ON Kullanici TO Mehmet
Birden çok kullanıcıya aynı yetkileri vermek istiyorsanız aynı kodları her kullanıcı için tekrar yazmanıza gerek yok; sadece kullanıcılar arasına virgül(,) ekleyip dileğiniz kadar kullanıcıya yetki verebilirsiniz:
GRANT SELECT ON Kullanici TO Mehmet, Ahmet, Mustafa, Seyfettin
Merak edenler için GRANT komutunun söz dizimi:
GRANT
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO
[ WITH GRANT OPTION ]
[ AS
ALL [ PRIVILEGES ] permission [ ( column [ ,...n ] ) ]
Database_user
Database_role
Application_role
Database_user_mapped_to_Windows_User
Database_user_mapped_to_Windows_Group
Database_user_mapped_to_certificate
Database_user_mapped_to_asymmetric_key
Database_user_with_no_login
2008-02-23
SQL Eğitimleri Tamamlandı
- Veritabanı Bilgileri
- MS SQL Server 2005'in Kurulumu
- Temel SQL Konuları
- Replikasyon Teknolojisi ve Uygulama Alanları
2008-02-17
Trigger İle Insert, Update, Delete Yakalama
Trigger içerisinde aşağıdaki T-SQL kod ile bir kaydın Insert, Update, Delete olduğunu yakalayabilirsiniz.
*/
DECLARE @IfDelete VARCHAR (1), @IfInsert VARCHAR (1)
SET @IfDelete =
(CASE WHEN EXISTS(SELECT * FROM inserted) THEN 'O' -- (O)ld record in update
ELSE 'D' -- (D)eleted record
END)
SET @IfInsert =
(CASE WHEN EXISTS(SELECT * FROM deleted) THEN 'N' -- (N)ew record in update
ELSE 'I' -- (I)nserted record
END)
Seneler önce yazılan bu kodun daha optimize edilmiş hali değerli arkadaşım Levent YILDIZ'dan geldi:
if exists (select * from inserted) and exists (select * from deleted)
select @type = 'U'
else if exists (select * from inserted)
select @type = 'I'
else
select @type = 'D'
2008-02-15
SQL Server 2005'te CLR Enable
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO
Aynı şekide CLR yetkisini tekrardan OFF konuma getirmek için aşağıdaki kodu kullanabilirsiniz:
EXEC sp_configure 'clr enabled', 0;
RECONFIGURE WITH OVERRIDE;
GO
Tüm bu değişiklikleri görsel olarak ta Başlat-> Programlar-> MS SQL 2005->Configuration Tools ->SQL Surface Area Configuration adımından da değiştirebilirsiniz(MSSQLServer->Database Engine->CLR Integration).
2008-02-14
Günlük Kardeşliği Anketi
2008-02-13
SQL'de Tarih Sorunlarını Gidermek
Bu sonuca ulaşacak iki farklı SQL çözümüm var:
Çözüm-1:
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS SMALLDATETIME)
Çözüm-2:
SELECT CAST(CAST(GETDATE() AS VARCHAR(12)) AS SMALLDATETIME)
MS SQL Server 2005 karşılaşılan bu vb sorunları MS SQL Server 2008 de çözmüşler. Dileyenler konu ile ilgili yazmış olduğum MS SQL Server 2008 - Yeni Tarih Veri Tipleri'ni okuyabilir.
2008-02-12
Luhn Algoritması
Luhn Algoritması ile ilgili işe yarar T-SQL kodlar:
CREATE FUNCTION dbo.fnIsLuhnValid
(
@Luhn VARCHAR(8000)
)
RETURNS BIT
AS
BEGIN
IF @Luhn LIKE '%[^0-9]%'
RETURN 0
DECLARE @Index SMALLINT,
@Multiplier TINYINT,
@Sum INT,
@Plus TINYINT
SELECT @Index = LEN(@Luhn),
@Multiplier = 1,
@Sum = 0
WHILE @Index >= 1
SELECT @Plus = @Multiplier * CAST(SUBSTRING(@Luhn, @Index, 1) AS TINYINT),
@Multiplier = 3 - @Multiplier,
@Sum = @Sum + @Plus / 10 + @Plus % 10,
@Index = @Index - 1
RETURN CASE WHEN @Sum % 10 = 0 THEN 1 ELSE 0 END
END
CREATE FUNCTION dbo.fnGetLuhn
(
@Luhn VARCHAR(7999)
)
RETURNS VARCHAR(8000)
AS
BEGIN
IF @Luhn LIKE '%[^0-9]%'
RETURN @Luhn
DECLARE @Index SMALLINT,
@Multiplier TINYINT,
@Sum INT,
@Plus TINYINT
SELECT @Index = LEN(@Luhn),
@Multiplier = 2,
@Sum = 0
WHILE @Index >= 1
SELECT @Plus = @Multiplier * CAST(SUBSTRING(@Luhn, @Index, 1) AS TINYINT),
@Multiplier = 3 - @Multiplier,
@Sum = @Sum + @Plus / 10 + @Plus % 10,
@Index = @Index - 1
RETURN @Luhn + CASE WHEN @Sum % 10 = 0 THEN '0' ELSE CAST(10 - @Sum % 10 AS CHAR) END
END
Peter Larsson
Helsingborg, Sweden
Bir Hata ve Birkaç Öneri
The transaction log for database 'ceturkdb' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
Hatalar:
- Hatada database ismi vermek güvenlik nedeniyle sakıncalı
- Database yada programsal hataların üyelere yansıtılması sakıncalı
Öneriler:
- Genel hatalar için error sayfaları düzenlenip kullanıcılara hatayla ilgili genel bilgiler verilebilir. Böylelikle hem hatayı gören kişiler sizi basite almamış olur hem de sisteminiz hakkında hatadan bir şey yakalama imkanı bulmaz.
- SQL Server ile ilgili Auto Shrink yapılabilir yada database boyu kısıtlı ise Transation Log a maximum size verilebilir. Yada tüm bunların yerine gecenin bir saatinde çalışan joblar düzenlenebilir. Bu joblar shrink te yapabilir yada dosya size ı belli bir seviyeye ulaşmışsa e-mail, cep telefonu vb iletişim aracılığıyla yönetici uyarılabilir. Bunu yapmadığınız zaman siz hatayı görene kadar saatler geçebilir sitenizi ziyaret eden ziyaretçiler çoktan sıkılmış ve kaçmış olabilir.
Hatayı bazen dostlar "post" eder, bazen yöneticiyi tanıyan üyeler. Tüm bu ücretsiz kaynaklarınız yoksa bilin ki bu size belli bir "cost" eder. Siz siz olun birileri tarafından hatalarınız için uyarılmayı beklemeyin; hatalarınızdan herkesten önce siz haberdar olun ve hemen müdahale edin. Hatta öyle bir zamanlama ve düzen ile müdahale edin ki kimsenin ruhu duymasın, sesi çıkmasın.
Hatalar hepimizin başına gelebilir fakat hatalardan ders alıp hatanın neresinden dönersek kardır. Siz siz olun hatalardan uzak durun. Hata sizi çok sıkıştırdığında; ha bre size yakınlaşmak istediğinde en fazla onu hata sayfasına yönlendirip hataya haddini bildirin! Hataya haddini bildiremiyorsanız bilin ki hata size haddinizi bildiriyordur.
2008-02-10
CETURK Forum Sorumluları Belirlendi
Merhaba Değerli Arkadaşlar,
Uzun süren bir görüşme trafiğinin ardından nihayet forum sorumlularını belirledim.
Forum Koordinatörlüğü görevini birkaç gün önce bıraktığım bir kısmınızın malumu. Artık malumu olmayanlar da bu vesile ile öğrenmiş oldular. CETURK Forum Koordinatörü iken üzerimde yük olarak duran bu son görevi de yerine getirmek istiyorum. Bu görevde iken
forumlarda beraber çalışmayı düşündüğüm arkadaşlar aşağıdaki gibidir:
Forum Adı | Sorumlu |
ASP | Ali S. KAN |
Genel- Güncel | Aycan AYHAN |
Delphi / Kylix | Bahadır EKİCİ |
Network | Barış İÇEN |
PHP | Bünyamin KOPDUR |
SQL Server | Emre ÇALIŞIR |
Üniversitelerden | Hasan Erdem YANT |
Diğer Programlama Dilleri | Hayriye TANYILDIZ |
Proje Havuzu | Hüseyin Fatih KARAKOÇ |
Diğer .NET Teknolojileri | İbrahim ERSOY |
Windows | Kadir BOZKURTOĞLU |
Visual Basic | Kurtman ÇELİK |
MySQL | Levent MENEKŞE |
Java | Mehmet ÖZCAN |
XML - XHTML | Mehmet Zahir SOLAK |
Pascal | Merve GENCER |
Oyun Programlama | Mesut GÜLER |
Diğer Veritabanları | Mustafa DEMİRBİLEK |
Faydalı Linkler | Mustafa ŞAHİN |
Elektronik / Donanım | Mustafa YAZAR |
Photoshop-PaintshopPro-Fireworks | Mustafa ZENGİN |
VB.NET | Nazmi DUMAN |
HTML/ DHTML CSS Scripts | Nedim ŞAHİN |
Güvenlik - Virüs | Olcay KÜK |
C / C++ | Oya ŞİMŞEK |
CGI / PERL | Ömer GÖK |
3D Modelleme / Animasyon | Özgür AL |
C# | Sadullah KELEŞ |
Yapay Zeka | Sedat GOLGİYAZ |
Veri Madenciliği | Serdar GÖREGEN |
Web Editörleri | Serkan ÖNCE |
Oracle | Tonguç YILMAZ |
Unix / Linux | Tutku DALMAZ |
Flash | Yağmur MERAL |
ASP.NET | Yavuz ÇOŞAR |
Kariyer ve İnsan Kaynakları | Yıldırım ÖZSUBAŞI |
Proje Tanıtımı | Yücel DAĞLAR |
Multimedia | Yüksel Berk YAVUZ |
Algoritma | Zafer YAVUZ |
Şu an Forum Koordinatörlüğünü bıraktığım için bu arkadaşları ilgili forumlara atama yetkisi yeni kurulacak yönetimde olup bu seçtiğim ekibin de yeni yönetimle çalışıp çalışmayacağı kendi şahsi kararlarına bağlıdır.
Sevgi ve saygı ile duyurulur.
2008-02-08
Replikasyon İçin Olması Gereken Role?
Replikasyon(Replication) için kullanılan Agent'larda ise minimum aşağıdaki roller olmalı:
Snapshot Agent: distrubition database, publication database için db_owner olmalı
Log Reader Agent: distrubition database, publication database için db_owner olmalı
Distribution Agent for a push subscription: distrubition database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı. Bunun yanında Subscriber a erişmek için en az db_owner olmalı
Distribution Agent for a pull subscription: subscription database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı.
Merge Agent for a push subscription: distrubition database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı
Merge Agent for a pull subscription: subscription database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı.
Queue Reader Agent : Distrubition, publication ve subscription databaseler için db_owner olmalı
Siber Savaş Provası mı?
İlk başta olayın bir kaza olduğu bildirildi fakat Mısır hükümeti olayın meydana geldiği yerde deniz trafiğinin olmadığını söyledi. Bunun üzerine bölgedeki bir depremin kablolara zarar verdiği iddia edildi fakat geçen hafta kabloların koptuğu bölgelerde herhangi bir deprem kaydedilmedi.
Konu ile ilgili açıklama yapan uzmanlar terör örgütlerinin denizin yüzlerce metre altındaki kablolara sabotaj yapacak donanımlarının olmadığını söylüyor. Savaş karşıtı internet sitelerinde geçen yorumlarda , geçtiğimiz günlerde Pentagon'a ait gizli bir belgede "internetin düşman silahı" olarak görülmesi gerektiği kaydediliyor. ABD yönetiminin olası geniş çaplı bir savaşta internetin bloke edilmesi ile ilgili bir tatbikat yapmış olabileceği dile getiriliyor.
Konuyu Türkiye'de ilk defa Yenişafak gazetesinin Ortadoğu ve Güvenlik Uzmanı İbrahim KARAGÜL Denizlerde neler oluyor? İnternet kabusa dönecek! başlığıyla dile getirdi. Aynı konu dünya basınında geniş yankı buldu.
2008-02-06
CETURK Forum Koordinatörlüğünü Noktalama Zamanı!
Dört kişilik ekip üyelerine; özellikle son bir senedir beraber omuz omuza verdiğimiz, düzenlediği etkinlikleriyle herkesin gönlünde taht kuran İbrahim DEMİR'e sonsuz teşekkürlerimi iletiyorum. Belki beraber bir yıl çalıştık ama benim için dört yıla bedel bir yıldı. Bu arada değerli dostum İbrahim de Etkinlik ve Tanıtım Koordinatörlüğü görevine son noktayı koydu. Kendisine iş hayatında başarılar diliyorum.
Forumlarda 4 sene boyunca toplamda 1541; günde ortalama 1.12 mesaj yazmışım. Bu süre zarfından forumlar dışında da yardımcı olmaya çalıştığım insan sayısını hatırlamıyorum. İ.allah bundan sonra da kendi sitem üzerinden vakit buldukça bildiğim ve ilgilendiğim konularda ihtiyacı olan arkadaşlara yardımcı olmaya devam edeceğim.
Bizler inandığımız için, inandığımız yerde vardık. Belki ailemizden, eşimizden, çoluk çocuğumuzdan zamanı çalıp inandığımız uğurda fedarkarlıklar yaptık. Artık inandığımız yerlerde ülkemizdeki bilişim dünyasına elimizden geldiğince katkı yapmaya çalışacağız. Bizi izlemeye ve bizimle olmaya devam edin.
Beni izleyen, dinleyen, o yada bu şekilde benimle yolları bir yerde keşişen, yardımcı olduğum yada olamadığım, beni seven yada sevmeyen, sayan yada saymayan, manen destek olan herkese sevgi ve saygı ile duyurulur.
2008-02-04
NAND ile Diskler Hızlanıyor!
Diskleri hızlı okuyup/yazmak; diski kullanan tüm işlemlerimize hız getirecektir. Veritabanları açısından baktığımda ise uzun süren I/O sürelerinin kısalmasına vesile olup sorgularımızın daha hızlı bitmesine vesile olacaktır. Hadi bakalım NAND flash bellekleri ne zaman kullanmaya başlayacağız.
2008-02-02
Fibonacci’nin Tavşanları ve Apaçların Yaprakları
SÖYLENTİLERE bakılırsa komşularının gözünde o tam bir Bigolloneé imiş. Bigolloneé, yani mankafa! Ama bugün, aklı başında olan hiç kimse, Leonardo Fibonacci’nin mankafa olduğunu söyleyemez.
Ortaçağın en büyük Matematikçilerinden biri olan Fibonacci, 1170’li yıllarda İtalya’nın Pissa şehrinde doğmuş. Ancak babasının işi nedeniyle, Kuzey Afrika’ya, gitmiş ve Cezayir’de Müslüman Matematikçilerden ders almak gibi bir şans yakalamış. Fibonacci, kendi ülkesinde kullanılan baş belası ve hantal Roma rakamları’nın yanında, yeni öğrendiği Arap rakamlarının pratikliğini derhal kavrayıvermiş. Sonrasında Müslümanların kullandığı 0’lı bu ondalık sistem hakkında pek çok Arapça kitabı da okuma fırsatı bulmuş.
Müslümanlardan öğrendiği bilgileri kendi ülkesine taşımak gayretiyle 1201 yılında, henüz 27 yaşındayken Liber Abaci (Cebir Kitabı) adında bir eser yazmış.
İçinde o zamanın en önemli Aritmetik ve Cebir bilgilerinin bulunduğu bu kitap, ilk zamanlar pek kimsenin dikkatini çekmediyse de, kısa bir zaman sonra, ondalık Arap sayı sistemi, Avrupa’ya bu kitap yoluyla girmiş olmuş.
Ancak, Fibonacci’yi 19. yy. başlarında tekrar meşhur eden ve o tarihlerden bugünlere kadar şöhretine şöhret katan, Batı bilimine yaptığı bu olağanüstü kıyak değildir. (Aslında asıl kıyağı yapanlar, Fibonacci’ye ders veren Müslüman bilim adamları idi.) Bir arkadaşının sorduğu sıradan bir tavşan problemini çözeyim derken, farkına varmadan keşfettiği esrarengiz sayı dizisi oldu.
Bu esrarengiz sayılara geçmeden önce, şu tavşan problemi neymiş ona bir bakalım:
Fibonacci’nin dostlarından biri, günlerden bir gün kendisine gelerek şöyle bir soru sormuş:
“Sevgili Fibo! Diyelim bir çift yavru tavşanım var. Bunlar bir ay sonra yavrulayacak hâle gelse ve bir çift tavşan yavrulasa ve bu yavru çift tavşan da bir ay sonra yavrulayacak kadar büyüse ve onlarda diğerleriyle beraber ayda bir çift tavşan yavrulasa, ancak tavşanlarım hiç ölmese 100 ay sonra kaç tavşanım olur?”
Soruyu anladınız mı? Tavşanlar çabuk çoğalır bilirsiniz. Bir çift yavru tavşanımız var. Bunlar bir ay sonra bir çift tavşan dünyaya getiriyorlar. Bir sonraki ay bu ilk çift tavşan bir çift tavşan daha dünyaya getiriyor. Üçüncü ayda ise, hem ilk çift tavşan hem de ikinci çift tavşan dünyaya yeni bir çift tavşan getiriyor ve bu böyle devam edip gidiyor! Olay çok basit yani!
Şimdi bu tavşan çiftlerini aylara göre sayılarla gösterelim:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...
İşte böyle tavşanlar çoğalır durur; bu sayı dizisi de uzar gider. Ve bu uzayıp giden sayı dizisine Fibonacci Sayıları denir. Ama dikkat ettiyseniz, bu dizide bir tuhafık vardır? İlk ikisi dışında, her sayı kendisinden önce gelen iki sayının toplamından oluşuyor! Yani bir sonraki sayıyı bulmak isteyene, ondan önce gelen iki sayıyı toplamak yeterlidir!
Merak edenler için 100. Ayda kaç tavşan olduğunu hemen söyleyeyim:
354.224.848.179.261.915.075 Cevap bu, boşuna kendinizi telef etmeyin.
İlginç bir gerçek:
Bu sayılar her yerde!
FIBONACCI sayıları neden esrarengizdir? Çünkü basit bir tavşan hesabından çok daha fazla şey ifade eder. Bu sayı dizisi, Allah’ın yeryüzünde var ettiği pek çok eserde kendini gösterir. Özellikle de bitkiler âleminde “tesadüf” kelimesini en hafif anlamıyla bile kapı dışarıya koyacak kadar çok görülür.
ETRAFINIZDAKİ ağaçlara ve öteki bitkilere baktığınızda, ama sadece baktığınızda ilk gördüğümüz şey; bir gövdenin orasından burasından gelişi güzel göğermiş dallar ve yine o dalların sağından solundan fırlayan daha ince dallar ve bütün bu dal karmaşasının üzerine adeta pilavın üzerine karabiber serpiştirmek gibi serpiştirilmiş binlerce yaprak, çiçek ve meyvedir. Ama görünüş sizi aldatmasın. Bu manzaranın en küçük parçacığında bile ne bir karmaşa, ne de bir gelişi güzellik vardır. Her dal, her yaprak ve her meyve olması gerektiği yerde olması gerektiği gibidir.
Hangi dalın ağacın neresinden çıkacağı bellidir. Hangi dalda kaç yaprak olacağı da bellidir. Hangi yaprağın, dalın hangi istikametine doğru, hangi açıyla uzanıvereceği de bellidir. Bütün bunlar sonsuz bir ilmin hesabı ile hesap edilmiştir.
Her ağacın ve her bitkinin kendine göre bir şekli şemali ve büyüme tarzı vardır. Biz o tarz farklılıklarına bakarak onları sınıflandırır ve birbirinden ayırırız.
Allah her ağaç için ayrı bir formül belirlemiştir ve her ağaç, kendine ait formülün zerre dışına çıkamaz. Bu, İstanbul’daki bir çam ağacı için nasılsa, Pekin’deki bir çam ağacı için de öyledir. Her iki çam ağacı da, bir çam ağacının uyması gereken kuralların dışına çıkamaz. Neticede ortaya çıkan güzellik, işte Rabbimizin bu sonsuz ilminin sonsuz hesaplamalarının sonucudur. Her şey hesap edilmiştir.
Fibonacci sayılarının bütün bu anlattıklarımızla ne alâkası var, şimdi ona gelelim.
Eğer yapraklı bir bitkiyi elinize alıp incelerseniz biraz sonra ilk farkedeceğiniz şey, yaprakların birbirlerinin üzerini—belli bir mesafeye kadar—örtmeyecek şekilde dalın veya sapın etrafında dizildiği olacaktır. Böylece üsteki yaprak altakinin güneş ışığı ile önünü kesmez. Yağmur yağdığında ise, yaprakların tamamı, rahmetten nasibini eksiksiz alır.
Bir sap üzerindeki yapraklardan birini seçelim ve ona 1 numarasını verelim. Sonra 1 numara ile aynı yönde olan öteki yaprağa doğru gidelim. Saat yönünde 3 tur attıktan sonra 1 numara ile aynı hizadaki ilk yaprağa ulaşmış oluruz. Ve bu sırada tam 5 yaprak sayarız. Bu işlemi saat yönünün tersine yaparsak 2 tur atarız. Böylece 2, 3, 5 rakamlarına ulaşırız ki, bunlar ardışık Fibonacci sayılarıdır. Bu sayılar, bitkiden bitkiye göre değişse de, bazen saat yönünde, bazen de tersi istikamette olsa da her zaman Fibonacci sayısıdır.
Mesela, bir meşe, yahut elma ya da kiraz ağacının dallarını inceleyecek olursak, seçtiğimiz başlangıç yaprağının hizasındaki bir sonraki yaprak için saat yönünde 2 tur atmamız gerekir. Bu esnada tam 5 yaprak sayarız. Bu hesap hiç şaşmaz. Fibonacci’nin tavşan hesabı yaparken bulduğu bu sayı dizisi, bitkiler âleminindeki sonsuz ince hesapları görmemiz açısından son derece ilginçtir.
İyi Matematik bilgisine sahip olanlar buradan istedikleri sonucu çıkarsınlar, ama benim gibi Matematik özürlüsü olanların bile ilk çıkarması gereken sonuç, Allah’ın izni olmadan düşmeyen o yaprakların, elbette O’nun izni olmadan da dallarında gelişi güzel ve kendi kendine yeşermiyor olduğudur. Evet, her şeyin bir ölçüsü, sayısı ve miktarı vardır. Tesadüf ise yoktur.
(Bir sonraki ay: Fibonacci dizisi ve Altın oran mucizesi)
Bir sap üzerindeki yapraklardan birini seçelim ve ona 1 numarasını verelim. Sonra 1 numara ile aynı yönde olan öteki yaprağa doğru gidelim. Saat yönünde 3 tur attıktan sonra 1 numara ile aynı hizadaki ilk yaprağa ulaşmış oluruz. Ve bu sırada tam 5 yaprak sayarız. Bu işlemi saat yönünün tersine yaparsak 2 tur atarız. Böylece 2, 3, 5 rakamlarına ulaşırız ki, bunlar ardışık Fibonacci sayılarıdır. Bu sayılar, bitkiden bitkiye göre değişse de, bazen saat yönünde, bazen de tersi istikamette olsa da her zaman Fibonacci sayısıdır.
Çiçekler, tohumlar ve kozalaklar…
FIBONACCI sayılarının yeryüzünde görünmesi yapraklardan ibaret değildir. Pek çok çiçeğin taç yapraklarının sayısı Fibonacci sayısıdır. Yoncalar 3, papatyalar, düğün çiçekleri, sardunyalar ve menekşeler 5 yapraklıdır…
Yapraklar, çiçekler derken, çiçeklerin tohumlarında da Fibonacci sayılarını okursunuz. Mesela ayçiçeklerinin ilginç sarmallarını saat yönünde olanlar ve olmayanlar diye sayarsanız ardışık Fibonacci sayılarını bulursunuz.
Bu ilginç durum, papatyaların altın kalplerinde, çam kozalaklarında, ananas meyvesinde ve soğanın kat kat tabakalarında da görülür.
Çam kozalakları bu konuda çok iyi örneklerdir. Kozalağın üzerindeki taneler, kozalağın alt kısmındaki sabit bir noktadan başlayarak tepedeki sabit bir noktaya kadar eğriler çize çize gelişir. Bu gelişme sonunda, taneleri soldan sağa ve sağdan sola doğru sayarsanız Fibonacci dizisi elde dersiniz. Bitkiler âleminde her şey, belli bir sırada ve sayıdadır. Tıpkı bütün kâinattaki, bütün âlemlerde olduğu gibi.
Çünkü: “Allah, herşey için bir ölçü kılmıştır.” (Talak Suresi, âyet,3)
Tarık Uslu
.::YASAL UYARI::.
Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.