2022-02-09

Linked Server Kullanan Stored Procedure, View, Trigger, Function vs. Listesi

Veritabanı bazında linked server kullanan Stored Procedure, View, Trigger, Funtion vs bilgilere ve bunların kullandığı linked server, veritabanı adı, şema adı ve tablo adını aşağıdaki sorgu ile bulabilirsiniz:

SELECT DISTINCT 
DB_NAME() AS DatabaseName,
OBJECT_SCHEMA_NAME (ed.referencing_id) AS SchemaName,
OBJECT_NAME (ed.referencing_id) AS ObjectName,
ed.referenced_Server_name AS LinkedServerName,
ed.referenced_database_name AS LinkedServerDatabaseName,
ed.referenced_schema_name AS LinkedServerSchemaName,
ed.referenced_entity_name As LinkedServerTableName
FROM sys.sql_expression_dependencies ed WITH (NOLOCK)
WHERE referenced_database_name IS NOT NULL
AND  referenced_Server_name IS NOT NULL 

2021-12-07

Bir Tablo Hangi SQL Modullerde Hangi Kolon Adları ile Nasıl Geçiyor?

 Bir tablonun hangi kolonları hangi SP lerde  select içerisinde mi update içerisinde mi geçiyor gibi sorunun cevabı için aşağıdaki T-SQL faydalı olabilir:

use [VeritabanıAdı]

go
select  '['+ object_schema_name(p.object_id) + '].[' +object_name(p.object_id) + ']' as ProcedureName,   re.referenced_minor_name  as ColumnName,
 re.is_selected,
 re.is_updated
from  sys.sql_modules  p  
cross apply sys.dm_sql_referenced_entities ( '['+ object_schema_name(p.object_id) + '].[' +object_name(p.object_id) + ']', 'OBJECT') re
where re.referenced_schema_name='Şema Adı' and re.referenced_entity_name='Tablo Adı' 

2021-01-13

Aranılan Bir İfadenin Geçtiği Tüm Stored Procedure, View, Function, Trigger vs. Listesini Bulma

/*

Bir ifadenin hangi veritabanındaki, hangi stored procedure, view, function, trigger vs. gibi modüllerde geçtiğini aşağıdaki script ile bulabilirsiniz. Script veritabanı ve şemaadı.nesne adına göre liste döndürür.

*/

exec sp_msforeachdb '
use [?]
select ''?'' as DatabaseName,object_schema_name(object_id) + ''.'' + object_name(object_id)
from    sys.sql_modules
where definition like ''%ARANILACAK İFADE%''
'

-- Script SQL Server 2017 ile test edildi.

2020-10-26

TOP 50 Query Statement Order By Total Logical Reads

select top(50)
object_schema_name(ps.object_id,ps.database_id) + '.' +  object_name(ps.object_id,ps.database_id)  as SpName,
replace(replace((substring(t.text, qs.statement_start_offset/2, (case when  qs.statement_end_offset = -1 then len(t.text) * 2 else  qs.statement_end_offset end - qs.statement_start_offset)/2)),char(10),' '), char(13),' ') as QueryStatement,
db_name(t.[dbid]) as DatabaseName,
qs.total_elapsed_time  as TotalElapsedTime,
qs.total_logical_reads as TotalLogicalReads,
qs.min_logical_reads as MinLogicalReads,
qs.total_logical_reads/qs.execution_count as AvgLogicalReads,
qs.max_logical_reads as MaxLogicalReads,  
qs.min_worker_time as MinWorkerTime,
qs.total_worker_time/qs.execution_count as AvgWorkerTime,
qs.max_worker_time as MaxWorkerTime,
qs.min_elapsed_time as MinElapsedTime,
qs.total_elapsed_time/qs.execution_count as AvgElapsedTime,
qs.max_elapsed_time as MaxElapsedTime,
qs.execution_count as ExecutionCount
,(case when convert(nvarchar(max), qp.query_plan) LIKE N'%<MissingIndexes>%' then 1 else 0 end) as HasMissingIndex
,qp.query_plan as QueryPlan
,qs.creation_time as QueryPlanCreationTime
,qs.last_execution_time as LastExecutionTime
from sys.dm_exec_query_stats as qs with (nolock)
left join  sys.dm_exec_procedure_stats ps with (nolock)  on qs.sql_handle=ps.sql_handle
cross apply sys.dm_exec_sql_text(qs.plan_handle) as t
cross apply sys.dm_exec_query_plan(qs.plan_handle) as qp
order by qs.total_logical_reads desc

2020-08-11

Database Log File Shrink Sonrası Write Latency Artışı, WRITELOG Waittype Artışı

Veritabanı log dosyasını Shrink ettikten sonra ilgili dosyanın bulunduğu diskte write latency artışı ve SQL Server tarafında WRITELOG Waittype artışı görüyorsanız DisableDeleteNotification değerini kontrol edip bu değeri 1 olarak değiştirmeyi değerlendirmenizi tavsiye ederim.

2020-07-28

Disk Block Size

Disk Block Size kaç KB olduğunu aşağıdaki iki farklı PowerShell komutu öğrenebilirsiniz:

  • Get-CimInstance -ClassName Win32_Volume | Select-Object Label, BlockSize | Format-Table -AutoSize
  • Get-WmiObject -Class Win32_Volume | Select-Object Label, BlockSize | Format-Table -AutoSize
  • 2020-06-23

    Sızma Teşebbüsünde SQL Server Error Log Mesajları

    Sızma testi(Pentest) yada gerçek sızma teşebbüslerinde SQL Server Error Log'da aşağıdaki mesajları birden çok kez görebilirsiniz. SQL Server Error Log'da aşağıdaki uyarıları bir yada birden çok kez gördüğünüzde Bilgi Güvenliği/Sistem Güvenliği ekipleri ile iletişime geçip veritabanı sisteminizi gözden geçirmenizde fayda var.
    1.       Length specified in network packet payload did not match number of bytes read; the connection has been closed. Please contact the vendor of the client library. [CLIENT: X.X.X.X]

    2020-03-05

    Deprecated SQL Server Features

    Deprecated Features, bir ürün için kullanımdan kaldıracak özellikleri ifade eder. Kaldırılacağı açıklanan özellikleri kullanmaktan kaçınıp; önerilen alternatif özellikler ile değiştirmek gerekir.

    2020-02-19

    Bir security gruba dahil olduğunuz halde o security grubun yetkilerini alamıyorsanız

    SQL Server tarafında bir security grubun yetkisi varken bu gruba eklenen bir kullanıcının "hala yetkim yok" sıklıkla karşılaştığımız durumlardandır. Active Directory tarafında alınan ticket'lar belli bir süre Kerberos ticket cache'de tutulur ve ilgili session bu cache'deki ticketları kullanır. Bir security gruba dahil olduğunuz halde o security grubun yetkilerini alamamanızın sebebi Kerberos ticket cache'de bu bilginin olmamasından kaynaklanıyor. Dahil olduğunuz security grubun yetkilerini kullanamıyorsanız:
      1. Kerberos ticket cache'ın bir süre sonra otomatik yenilenmesini(bu süre saatler olabilir) bekleyebilirsiniz.
      2. Oturumunuzu Logoff / Logon yaparak Kerberos ticket cache'ın yenilenmesini sağlayabilirsiniz.
      3. Komut satırından klist purge komutunu çalıştırarak Kerberos ticket cache'ı kendiniz temizleyebilirsiniz.

        Ticket lerin detayını görmek için komut satırından klist tickets komutunu kullanabilirsiniz.

    2020-02-07

    SQL Server'ın yeni çıkan bir versiyonuna ne zaman geçmeliyim?


    Eskiden SQL Server'ın yeni sürümüne geçiş için genellikle kararlılık açısından yeni versiyonun ilk  SP'sinin çıkması beklenirdi fakat Microsoft, SQL Server 2017 sürümünden itibaren politika değişikliğine gidip SP çıkarmıyor sadece CU çıkarıyor ve ihtiyaç varsa GDR  çıkarıyor. Bu yüzden eski alışkanlıkları değiştirmek gerekiyor. 

    Yeni versiyon için benim tavsiyem en azından ilk CU sonrası testlerinizi sağlıklı yaptıktan sonra üst sürüme geçiş yapabilirsiniz.



    Microsoft'un 2017 yılındaki politika değişikliği ile ilgili ayrıntılı bilgiye ve bir çok sorunun cevabına 

    https://docs.microsoft.com/tr-tr/archive/blogs/sqlreleaseservices/announcing-the-modern-servicing-model-for-sql-server adresindeki dokümandan ulaşabilirsiniz.


    SP: Service Pack
    CU: Cumulative Update
    GDR: General Distribution Release

    .::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.