2025-10-23

Bir SP, Function, Trigger'da geçen Tablo ve Tablo Alanları, View, SP, Function, Type vs bulma

Bir SP, Function, Trigger'da geçen tablo ve view adlarını ve bunlara ait alanları, bu tablo alanlarının select mi yoksa update olarak mı kullanıldığı, kullanılan SP, Function, Type adlarını vs aşağıdaki script ile bulabilirsiniz.

SELECT distinct referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name, referenced_minor_name, referenced_class_desc,is_selected,is_updated
FROM sys.dm_sql_referenced_entities('ŞemaAdı.TabloAdı', 'OBJECT')

2024-11-23

Kurumsal Veri Yönetimi İçin Stratejik Yaklaşımlar


Dijitalleşen dünyada veri, işletmelerin en önemli stratejik varlığı haline gelmiştir. Microsoft SQL Server, kurumsal veri yönetimi, analiz ve yüksek erişilebilirlik konularında lider bir platform olarak öne çıkmaktadır. Ancak bu platformun potansiyelinden tam anlamıyla yararlanmak, yalnızca teknik bilgiyle değil, aynı zamanda profesyonel düzeyde planlama, yönetim ve optimizasyon süreçleriyle mümkün olur. Bu yazıda, SQL Server’ın kurumsal kullanımında performansı artırmak, güvenliği sağlamak ve operasyonel mükemmeliyeti sağlamak için kritik yaklaşımlar ele alınacaktır.

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


Tek bir nesnenin kullandığı linked serverlara aşağıdaki sorgudan ulaşabilirsimiz:

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 ed.referencing_id=object_id('ŞemaAdı.NesneAdı')
and 
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.

    .::YASAL UYARI::.

    ©2004-2025 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.