26 Şubat 2013 Salı

Sql Serverda TSQL Sorgusu ile Trace Başlatmak


SQL Server Profiler ile yaptığımız tuning işlemini sorgular ile yapmaya çalışacağız.
Bu işlem için iki stored procedure yazdık.
  • Birincisi aktif olan traceleri durdurup veritabanından ve diskten temizliyor.
  • İkincisi Yeni bir trace açıp belirli bir dosya boyutunda ve süresince veritabanında trace başlatıyor.

Sorgu 1

Aşağıdaki sp ile çalıştırdığımız traceleri temizleyin. Aktif trace bulamaz ise işlem yapmaz:

 exec clearTraces

Sorgu 2

Bu sorgu ile yeni bir trace başlatıyoruz.
  • İlk parametre olarak trace dosyası ismi veriyoruz. Bu dosyanın sonuna diskte trc uzantısı ile bir dosya oluşturur. Daha Önce aynı isimde dosya var ise hata verir. Sorgu 1 çalıştı ise hata ile karşılaşmazsınız.
  • İkinci parametre mb cinsinden dosya büyüklüğünü gösteriyor.
  • Ücüncü parametre ile trace'in kaç dakika süreceğini belirliyoruz.

  exec dbo.StartTrace 
        'c:\temp\Ogr001'--trace dosya adı.
        ,1000--mb
        ,10--dakika

Sorgu 3

Aşağıdaki sorgu ile trace dosyasındaki verileri bir temp tabloya atıyor. Burada temp tabloya atarken where koşulundaki hostname ve Databese name gibi parametreleri düzenleyebilirsiniz.
Sorgunun ikinci kısmında from ve where koşulları arasına göre sorguları grupluyor. Böylece parametreleri kaldırarak tabloya kaçkere sorgu attığını görebiliyoruz.

İlk Kısım


declare @traceFile varchar(216)
set @traceFile='c:\temp\Ogr001.trc'
SELECT * into #sorgular
FROM fn_trace_gettable(@tracefile  ,1)
where DatabaseName like '%DB%'
and ApplicationName='.Net SqlClient Data Provider'
and HostName='HOSTNAME-01'
and CAST(TextData as varchar(max))<>'exec sp_reset_connection '


İkinci Kısım


SELECT
 SUBSTRING(cast(TextData as varchar(max)), CHARINDEX('FROM',cast(TextData as varchar(max))),
 CASE WHEN  CHARINDEX('WHERE',cast(TextData as varchar(max)))-CHARINDEX('FROM',cast(TextData as varchar(max))) <=0 THEN 10000 ELSE
 CHARINDEX('WHERE',cast(TextData as varchar(max)))-CHARINDEX('FROM',cast(TextData as varchar(max)))end
  )
  ,COUNT(*)
 
   FROM #sorgular
  GROUP BY SUBSTRING(cast(TextData as varchar(max)), CHARINDEX('FROM',cast(TextData as varchar(max))),
 CASE WHEN  CHARINDEX('WHERE',cast(TextData as varchar(max)))-CHARINDEX('FROM',cast(TextData as varchar(max))) <=0 THEN 10000 ELSE
 CHARINDEX('WHERE',cast(TextData as varchar(max)))-CHARINDEX('FROM',cast(TextData as varchar(max)))end
  )
  ORDER BY 2 desc



Sql Server Stress Analysis



--26.02.2013 

--Just before starting to stress analysis we should delete all statistical records from database. After stress you can use second query to find Recent Expensive Queries.



--Dont run in production environment!
--After running query 1 you should wait 5-10 minute. CPU utilization can be hit 100 percent.

--Query 1:


DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS


Sql Server Stres Analizi



--26.02.2013 

--Aşağıdaki sorgu ile stres testi yapmadan önce sql serverdaki istatistikleri sıfırlıyoruz. Stres araçları ile testimizi yaptıktan sonra sistem için problem olan sorguları 2. sorgu ile bulabiliyoruz.



--Production ortamında Çalıştırmayın!
--Bütün istatistikleri sıfırlar!
--Çalıştıktan sonra 5-10 dakika boyunca serverı normal sekilde kullanın sonra stres testine başlayın.
--İşlemci tavana vurabilir.

--Sorgu 1:


DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS


30 Ağustos 2012 Perşembe

ANADOLU ve İMAM HATİP LİSELİLER’in dikkatine!

1- “Kural - Kaide ve Örnekleriyle Arapça Dilbilgisi,” eski sistem Sarf ve Nahiv konularını tam olarak ihtiva edip, sade bir dille, teknik imkânlardan da faydalanılarak örnek ve çözümlemeleriyle beraber Arapça eğitim – öğretimi yapan her kesim ve kişilerin faydalanabileceği bir üslup ve tarzda yazılmıştır.  
    2- Sarf (kelime yapısı) Emsîle–Binâ–Î’lâl kaideleri- genelde şematik olarak yazılmış, Nahiv (cümle kuruluş ve kuralları)- Âmiller ( 60 bab ), ma’müller ( 30 ), i’rab ( 10 ) olmak üzere, toplam “ Evâmil ”: 100 bab sırasıyla örnekler verilerek, çözümleri ( tahlîlleri ) ile açıklanmıştır.

3- Kitabın sonundaki sözlük bölümüne, Müncit’ten seçilen: 7500 den fazla Pratikte kullanılan kelime eklenerek, kitap zenginleştirilmiş, kişinin kendi beceri yeteneklerini kullanarak, cümle kurma ve geliştirme imkânı hazırlanmıştır. Arapça, eğitim ve öğretimi yapan her kişi, kuruluş ve müessese için, ideal, yardımcı ders kitabı olduğu kanaatindeyim. Gayret bizden tevfîk Allah Tealâ’dandır…                                              

25.08.2012
İlhami HAKTAN

Adres:  Âdem Yavuz  Mah. Yavuz  Selim Cad.
Osmanlı sitesi, B- 1, Daire: 30  Ümraniye - İSTANBUL
İrtibat: 0505 675 04 51
E- Posta: haktan.ilhami@gmail.com
Online Satış: www.sahibinden.com  İlan No: 94959507

  
Not:
1-      İstenildiği takdirde kitaptan 1 adet numûne olarak göndermemiz mümkündür.
2-      Kitabın fiyatı:15 TL olup, 10 adetten fazla alanlar için: 10 TL dir. İstanbul dışına göndermemiz durumunda, kargo ücreti, alıcıya aittir.
3-      Kitap, şamua kâğıdına basılmış olup, 430 sayfadan ibarettir.

6 Nisan 2012 Cuma

Web sitesinde barkod yazdırmak için.

Dinamik olarak jquery ile  barkod hazırlayabilirsiniz:

Desteklenen Barkod Tipleri:

  • Code39
  • Interleaved 2 of 5 
  •  

  • http://code.google.com/p/jquery-barcode/

    4 Temmuz 2011 Pazartesi

    Tsql ile bir serverdan diğerine extended property kopyalama

    Copy Extended property from one SQL Server To another by tsql:




    SELECT 
    'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', 
    @value=N'''+replace(
    CAST(exprop.value AS VARCHAR(max))
    ,'''','"')
    +''' , @level0type=N''SCHEMA'',@level0name=N''dbo'', @level1type=N''TABLE'',@level1name=N'''
    +tbl.name+''', @level2type=N''COLUMN'',@level2name=N'''+clmns.name +''';'

    ,tbl.name,
    CAST(clmns.name AS VARCHAR(35)) ,exprop.value 

    FROM sys.tables AS tbl
    INNER JOIN sys.all_columns AS clmns
    ON clmns.object_id=tbl.object_id
    LEFT OUTER JOIN sys.indexes AS idx
    ON idx.object_id = clmns.object_id
    AND 1 =idx.is_primary_key
    LEFT OUTER JOIN sys.index_columns AS idxcol
    ON idxcol.index_id = idx.index_id
    AND idxcol.column_id = clmns.column_id
    AND idxcol.object_id = clmns.object_id
    AND 0 = idxcol.is_included_column
    LEFT OUTER JOIN sys.types AS udt
    ON udt.user_type_id = clmns.user_type_id
    LEFT OUTER JOIN sys.types AS typ
    ON typ.user_type_id = clmns.system_type_id
    AND typ.user_type_id = typ.system_type_id
    LEFT JOIN sys.default_constraints AS cnstr
    ON cnstr.object_id=clmns.default_object_id
    LEFT OUTER JOIN sys.extended_properties exprop
    ON exprop.major_id = clmns.object_id
    AND exprop.minor_id = clmns.column_id
    AND exprop.name = 'MS_Description'
    WHERE (--tbl.name = @TableName and 
    exprop.class = 1) --I don't wand to include comments on indexes
    ORDER BY clmns.column_id ASC

    25 Nisan 2011 Pazartesi

    Moğolca-Türkçe çeviri - http://turkcemogolcatercume.weebly.com/




    Türkçe Moğolca çeviriler için Lütfen mail atın:


    mahmuthaktan@gmail.com


    şağıdaki sitede Moğolca Türkçe çevirileriniz profesyonel olarak yapılıyor.  Moğolca alfabeyide siteden inceleyebilirsiniz.

    14 Aralık 2010 Salı

    How to get SQL Server schema changes especially “column name” changes



    I am using trigger to trace DDL changes but when I change column name from the SQL Server Management Studio the trigger is not working?
    create TRIGGER trgLogDDLEvent ON DATABASE
      FOR DDL_DATABASE_LEVEL_EVENTSFOR
    AS
    DECLARE @data XMLSET @data = EVENTDATA()
    IF @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)')
    <> 'CREATE_STATISTICS'
    INSERT INTO db_trc_DDLChangeLog(
    EventType,
    ObjectName,
    ObjectType,
    tsql,
    RecDate,
    HostName)
    VALUES (
    @data.value('(/EVENT_INSTANCE/EventType)[1]',
    'nvarchar(100)'),
    @data.value('(/EVENT_INSTANCE/ObjectName)[1]',
    'nvarchar(100)'),
    @data.value('(/EVENT_INSTANCE/ObjectType)[1]',
    'nvarchar(100)'),
    @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]',
    'nvarchar(max)'),
    getdate(),
     HOST_NAME()
    ) ;
    GO
    --select * from db_trc_DDLChangeLog
    --create table db_trc_DDLChangeLog
    --(
    --EventType varchar(max),
    --ObjectName varchar(max),
    --ObjectType varchar(max),
    --tsql varchar(max),
    --RecDate datetime,
    --HostName varchar(max)
    --)
    
    link|edit|delete|flag

    75% accept rate
     
     
    If you are changing database structure from the Object Explorer and not a script, then stop that right now. No database change should ever be made without a script that is in source control. – HLGEM Oct 22 at 13:17
    I just want to trace this changes for security. – MahmutHAKTAN Oct 22 at 13:28 
    add comment
    You won't get events specifically for column changes. Instead you'll receive an ALTER_TABLE event to indicate the table has changed.
    When you say SQL Server console do you mean Management Studio? If so, have a look at the SQL it is generating to alter your table. It might be creating a new table, copying the data to it, dropping the old table and renaming the new table so you will see a number of events like CREATE_TABLE and thenDROP_TABLE.
    link|flag
    Yes I mean Management studio. trigger is running for all DLL events is't it?: FOR DDL_DATABASE_LEVEL_EVENTS. I also tried CREATE_TABLE, ALTER_TABLE, DROP_TABLE, events and is was not worked. – MahmutHAKTAN Oct 22 at 13:22 
     up vote
     flag
    Is your trigger being called at all? Could there be some other problem preventing a row being inserted into db_trc_DDLChangeLog? Also, if the SQL generated by management studio is using sp_rename it won't cause a DDL event to be raised in SQL Server 2005. – Andrew Kennan Oct 22 at 13:59
    no problem for db_trc_DDLChangeLog because when i drop table it writes to log ı think sp_rename not firing DDL event.. – MahmutHAKTAN Oct 25 at 13:01 
     
     
    Yeah - sp_rename was fixed for SQL 2008 but in 2005 it won't raise an event. – Andrew Kennan Oct 26 at