2008-05-24

sp_helptext

Merhaba Değerli Okuyucular,

Bugün SQL Server'ı kullanırken işimize çok yaracak bir SP ye değineceğim: sp_helptext. sp_helptext ile bir rule, default, unencrypted stored procedure(sp), user defined function(udf), trigger, veya view'ın text içeriğini görüntüleyebilirsiniz. Böyle yararlı bir sp olmadığı zaman tek tek ilgili nesneleri bulup scriptlerini almak ne kadar zahmetli olduğunu yaşayan arkadaşlara anlatmama gerek yok ama yaşamayan arkadaşlar zorluğu yaşadıktan sonra bana hak vereceklerdir.

sp_helptext in syntax'ı aşağıdaki gibidir:

sp_helptext [ @objname = ] 'name'

Şimdi bir örnek ile olayı daha iyi kavrayalım. spKonuyaPuanVer sp sinin içeriğini görüntülemek için

sp_helptext 'spKonuyaPuanVer '

yazmamış yeterli olacak. Bu komutun sonucunda ilgili SP nin text içeriği ekrana dökülür. SQL Server'da bir nesnenin SQL kodunu mu merak ediyorsunuz buyrun size sp_helptext. Tabi bu sp ile SQL Server'ın system sp, view ve diğer bileşenlerinin kodunu da görüntüleyebilirsiniz. Böylelikle merak ettiğiniz herhangi bir nesnenin nasıl kodlanğını görme şansınız olacak.

Geçen haftalarda sorduğum sorunun cevabı olan sp_databases SP nin kodunu böylelikle vermiş olayım:) Bunun için

sp_helptext 'sp_databases'

kodunu yazmamız yeterli olacak. Bu scriptin sonucundan sp_databases sp nin içeriğini aşağıdaki gibi alırız.

create proc sp_databases
as
set nocount on
declare @name sysname
declare @SQL nvarchar(600)
/* Use temporary table to sum up database size w/o using group by */
create table #databases (
DATABASE_NAME sysname NOT NULL,
size int NOT NULL
)

declare c1 cursor for
select name from master.dbo.sysdatabases
where has_dbaccess(name) = 1 -- Only look at databases to which we have access

open c1
fetch c1 into @name

while @@fetch_status >= 0
begin
select @SQL = 'insert into #databases
select N'''+ @name + ''', sum(size)
from ' + QuoteName(@name) + '.dbo.sysfiles'
/* Insert row for each database */
execute (@SQL) fetch c1 into @name
end
deallocate c1

select DATABASE_NAME,
DATABASE_SIZE = size*8,/* Convert from 8192 byte pages to K */
REMARKS = convert(varchar(254),null) /* Remarks are NULL */
from #databases
order by 1

2008-05-14

Bilgeliği Kimden Öğrendin?

Lokman Hekim'e "Bilgeliği kimden öğrendin?" diye sorduklarında ondan şu cevabı almışlar:
Körlerden öğrendim. Çünkü onlar elindeki değnekle tam araştırmadan adım atmazlar. Basacakları yerin sağlam olduğundan emin olduktan sonra adım atarlar... Bundan dolayı ben de bir şey yapacağım zaman düşünür, faydalı ise konuşur, yararlı ise yaparım... Faydasız ise bırakmayı ve susmayı tercih ederim.

Kaynak: Zafer

Bugün sabah servisi beklerden gözleri görmeyen birisinin yolda yürüşünü, karşıdan karşıya geçişini, ardından otobüs durağına gidip otobüse binişini hayret içerisinde izledim. Yolu bulması, durakta durması ve bineceği otobüsü bilmesi beni şaşırttı. Demek ki Allah herkese yolunu bulacak bir yöntem yada kalp gözü bahşediyor.

"SQL Server 2005'te Veritabanı İsimleri ve Fiziksel Büyüklükleri" Sorusunun Cevabı

Sevgili okuyucu SQL Server 2005 ile ilgili bu sorumun ağır olduğunu itiraf etmek zorundayım. Zira her üç cevap şıkkı da birbirine oldukça yakındı ve tüm şıklar itina ile seçilmişti.

Sorduğum sorunun doğru cevabı EXEC sp_databases olacaktı. Soruyu cevaplayan okuyucularımın %43 ancak doğru cevabı bilebildi. Doğru cevabı veren tüm okuyucularımı tebrik ediyorum ve diğer katılımcı arkadaşlara da katılımları için teşekkür ediyorum.

Cevap şıklarının arasındaki ince farkları görebilmek için kodları test etmenizi öneririm. Bir sonraki soru ve cevaplarda buluşuncaya dek bol SQL i günler diliyorum.

2008-05-13

SQL Server 2008'e Merhaba Dedik

print 'Merhaba SQL Server 2008 CTP ' --"Merhaba Dünya" vazgeçilmezimizden esinlenerek:)

Birkaç gün önce SQL Server 2008'in February 2008 CTP sini kurdum. SQL Server 2008 çıkmadan bir inceleyip test edeyim dedim. İlk ihtiyacım olan backup/restore ı test ettim. Yaklaşık 22 GB lık bir veritabanımın sıkıştırılmış backup'ı yaklaşık 10 dakika sürdü. Ve backup dosyamın boyutu 2 GB civarındaydı:) Aynı şekilde bu sefer backup'tan restore ettim; restore işlemi yaklaşık 8 dakika sürdü. Backup compress hem hız hem de yer bakımından SQL Server'a artı bir özellik katmış. Özellikle backup dosya boyutlarından dolayı yer sıkıntısı yaşan okuyuculara kullanmalarını tavsiye edebilirim.

2008-04-28

SQL Server'a Kurulan Bağlantıların Uygulamaya Göre Sayısı

SQL Server'a kurulan bağlantıların toplamını uygulamaya göre aşağıdaki SQL ile bulabilirsiniz:

SELECT Program_Name, COUNT(1) AS TotalConnection
FROM Master..sysprocesses
WHERE ecid=0
GROUP BY Program_Name
ORDER BY COUNT(1) DESC

2008-04-24

SP'nin Sonucunu Select İçinde Kullanabilme

Stored Procedure'dan dönen kayıt kümelerini SELECT ile alıp istediğiniz gibi kullanabilirsiniz. Böyle bir ihtiyaç için OPENROWSET i kullanabilirsiniz.

Örnek: DBA_TOP_Queries_Average SP'sinden dönen kayıtları AvgCPuTime'a göre sıralayalım

SELECT *
FROM OPENROWSET('SQLOLEDB', 'Trusted_Connection=Yes;Server=GuzelDB;Database=GuzelDEV', 'EXEC dbo.DBA_TOP_Queries_Average')
ORDER BY AvgCPuTime

OPENROWSET ile ilgili hata alan arkadaşların OPENROWSET kullanımı Enable değildir. OPENROWSET'i Start->Programs->Microsoft SQL Server 2005->Configuration Tools->SQL Server 2005 Surface Area Configuration'dan Surface Area Configuration For Features tıklayarak; Ad Hoc Remote Queries'te bulunan Enable OPENROWSET and OPENDATASOURCE support ı yetkilendirmeniz gerekir.

2008-04-22

2008 Blog Ödülleri

Değerli Günlük Sakinlerim,

Günlüğüm 2008 Blog Ödülleri'nde "Teknoloji" kategorisinde yarışmaya katılıyor. Oylama konusunda bazı katılımcılar gibi "bana oy verin" demeyeceğim. 2008 Blog Ödülleri'ne oy verecekseniz; lütfen katılımcı günlükleri inceleyip gerçekten oy vermek istediğiniz günlüklere oy veriniz. Bana göre bir yarışmanın gerçekçi ve işe yaramasının birinci kuralı seçim ve oylamanın tarafsız olmasıdır. Bu yüzden dostluğuma, arkadaşlığıma, günlük sakinliğime, kara kaşıma/gözüme bakıp diğer günlükleri incelemeden sırf hatır-gönül bağıyla günlüğüme oy verecek arkadaşların bana oy vermemelerini rica ediyorum.

Tarafsız olarak oylamaya katılacak arkadaşlar 5 Mayıs 2008 Pazartesi günü sonuna kadar 10 farklı kategoride en iyi bulduğu 10 günlüğe oy verebilecek. Unutmadan oy verebilmek için siteye üye olmak gerekiyor.

Hadi bakalım herkese tarafsız oylamalar.

2008-04-10

Tüm Tablolardaki Identity Alanlarının Değerlerini Bulma

SQL Server 2005'de veritabanınızda bulunan tüm tablolarınızdaki Identity olan alanların değerlerini bulmak için aşağıdaki SQL'i kullanabilirsiniz:

SELECT  OBJECT_NAME(OBJECT_ID) AS TABLENAME,
NAME AS COLUMNNAME,
SEED_VALUE,
INCREMENT_VALUE,
LAST_VALUE,
IS_NOT_FOR_REPLICATION
FROM sys.identity_columns
ORDER BY LAST_VALUE DESC

2008-04-05

Bir Ayrılık Yeni Bir Başlangıç

Dün itibariyle 13 aydır çalıştığım Belbim'den ayrıldım. Bundan böyle iş hayatımı bir bankada DBA olarak devam ettireceğim. Belbim'deki gerek çalışma arkadaşlarım gerekse ortam çok güzeldi fakat her gün ortalama 4-5 saatimin yolda geçmesi her geçen gün canımı daha da sıkıyordu. Yol derdi beni Belbim ile yol ayrımına getirdi.

Burdan sevgili proje yöneticim Tarık beye, danışmanımız Metin beye, çalışma arkadaşlarım Orhan hocaya; Mustafa, Celalettin, Fatih, Kasım beylere; Sevilay ve Münibe hanımlara ve ismini sayamadığım herkese gösterdikleri anlayış, iyiniyet, arkadaşlık, dostluk ve tüm paylaşımları için tekrardan teşekkür ediyorum. Sizlerle çalışmak benim için büyük bir onurdu.


Ayrılmadan bir gün önce Florya'daki tesislerde öğlen yemeğini hep beraber yemiştik. İnsanın güzel anılarının olması güzel. Hayat güzelliklerle dolu yeterki görmesini ve bakmasını bilelim.

Başka zaman ve zeminlerde görüşmek dileğiyle hoşçakalın, dostçakalın.

“Gideriz nur yolu izde gideriz
Taş bağırda sular dizde gideriz
Bir gün akşam olur, biz de gideriz
Kalır dudaklarda şarkımız bizim...”
N.Fazıl KISAKÜREK

2008-04-01

Operatör Önceliği ile İlgili SQL Sorusunun Cevabı

Operator önceliği ile ilgili olarak sorduğum SQL sorusunun cevabı İstanbul ilimizin plaka kodu yani 34 olacaktı. Katılımcı arkadaşların ezici bir çoğunluğu operatörlerin önceliği konusunda yeterli bilgiye sahip olduklarını gösterdiler. Umarım bu vesile ile soruya yanlış cevap veren arkadaşlar da operatörlerin önceliği konusundaki eksikliklerini giderirler.
Tüm katılımcı arkadaşlara teşekkürlerimi iletiyorum.

2008-03-24

Bir Devlet Hastanesi Macerası

Geçtiğimiz perşembe ve cuma günleri Tam Teşekküllü Sağlık Raporu almak için Bakırköy Dr. Sadi Konuk Eğitim ve Araştırma Hastanesindeydim. Bir heyet raporunun iki gün sürmesi çok uzun bir süre. Heyet Kurulu için ayrı bir kat buluyor ve muayene olunacak bir çok poliklinik bu katta bulunuyor. Röntgen alt katta, tahlil için yan binaya; tahlil sonuçları için karşıdaki binaya uğramanız gerekiyor. İlk gittiğimde benim gibi heyet raporu alacak 5-10 kişi ancak çıkar diye düşünmüştüm ama en az 150 kişi vardı sırada bekleyen:( Anlaşılan Avrupa yakasında oturan insanların azımsanmayacak bir oranı Bakırköy Dr. Sadi Konuk Eğitim ve Araştırma Hastanesini tercih ediyor. Heyet raporu alacak arkadaşlara birkaç tavsiye:
  1. Gitmeden yanınıza en az 124 YTL para alın(Tam teşekküllü heyet raporu için 124 YTL ödemeniz gerekiyor),
  2. Kimliğiniz ile birlikte elinizde bir vesikalık fotoğrafınız bulunsun,
  3. 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)
  4. Kayıt işlemlerinizi yaptırdığınız gibi röntgen ve tahlil sırasına koşunuz
  5. Tahliliniz öğleden sonra çıkacağı için Dahiliyede boşu boşuna kuyrukta beklemeyiniz.
  6. Kapı önünde kuyruğu az olan polikliniği tercih edin.
  7. 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.
  8. Öğleden sonraları muayene yoktur bu yüzden boşu boşuna öğleden sonra beklemeyiniz.
  9. Çarşamba günleri Bakırköy Devlet hastanesinde heyet yoktur. Çarşamba günleri heyetten rapor almayı boşu boşuna beklemeyin:)
  10. Göz polikliniğinin kuyruğu her zaman çok olur bunu göz önünde bulundurun:)
  11. Psikiyatr için boşu boşuna kapıda beklemeyin evraklarınızı içerisdeki sektere verin.
  12. 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!
  13. 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.
  14. 12:00 den önce evraklarınızı teslim ettiyseniz aynı günün öğleden sonrasında heyet toplanır ve raporunuzu imzalar.
  15. 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.
  16. 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:

  1. İ.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.
  2. 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.
  3. 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.
  4. 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.
  5. 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:(
  6. İş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!

.::YASAL UYARI::.

©2004-2023 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.