SP, View, Function, Trigger, System Base Tables (SQL Server Mimarisi – VI)

Bundan önce SQL Server mimarisini anlattığımız yazılardan table ve index datasının içeriğinin nasıl depolandığını biliyoruz. Peki Stored Procedure, View, Function, Trigger benzeri nesneler nerede store ediliyor. Bunlar tabiki MDF içerisinde aynı mantıkta Page’ler içerisinde saklanmaktadır. Bu nesneler System Base Tables olarak tanımlanan sistem tablolarında tutulmaktadır. Bu tablolar mevcut veri tabanlarına ait metadata bilgisini saklar. Bu tablolar kullanıcı erişimi için değil SQL Server Database Engine tarafından kullanılır. Bu tablolar ancak Dedicated Administrator Connection (DAC) bağlantısıyla erişilebilir. DAC üzerinden erişim sağlamak için ya aşağıdaki gibi script ile aktifleşitirilebilir veya Management Studio üzerinde Object Explorer içerisinde sunucuya sağ tıklayıp Facets bölümünden düzenleme yapılır.

EXEC sp_configure 'remote admin connections', 1
GO
RECONFIGURE

master veri tabanı daha çok sunucu seviyesinde bilgileri içerir. Aynı zamanda her veri tabanından olmayan nesneler içerir. System Base Table’lar ise her veri tabanın altında olup doğrudan o veri tabanına özel bilgilere erişmemizi sağlayan metadata sorgulayıcılarıdır. Aşağıdaki tabloda bu tabloların listesi verilmiştir.

sys.sysschobjs sys.sysxsrvs sys.sysasymkeys sys.sysdercv
sys.sysbinobjs sys.sysrmtlgns sys.ftinds sys.sysendpts
sys.sysclsobjs sys.syslnklgns sys.sysxprops sys.syswebmethods
sys.sysnsobjs sys.sysxlgns sys.sysallocunits sys.sysqnames
sys.syscolpars sys.sysdbfiles sys.sysrowsets sys.sysxmlcomponent
sys.systypedsubobjs sys.sysusermsg sys.sysrowsetrefs sys.sysxmlfacet
sys.sysidxstats sys.sysprivs sys.syslogshippers sys.sysxmlplacement
sys.sysiscols sys.sysowners sys.sysremsvcbinds sys.syssingleobjrefs
sys.sysscalartypes sys.sysobjkeycrypts sys.sysconvgroup sys.sysmultiobjrefs
sys.sysdbreg sys.syscerts sys.sysxmitqueue
sys.sysobjvalues sys.sysobjvalues sys.sysdesend

Örneğin veri tabanındaki tüm prosedürlerin içeriğini sorgulayalım.

SELECT v .%% physloc %% as address,
CONVERT (VARCHAR(6), CONVERT (INT, Substring (v.%%physloc%%, 6, 1) +
	Substring (v.%%physloc%%, 5, 1)))
	+ ':'
	+ CONVERT (VARCHAR(20), CONVERT (INT, Substring (v.%%physloc%%, 4, 1) 
	+ Substring (v.%%physloc%%, 3, 1) + Substring (v.%%physloc%%, 2, 1) 
	+ Substring (v.%%physloc%%, 1, 1))) AS 'rootPage',
o.name objectName,
Cast(v.imageval AS VARCHAR(max)) code
FROM sys.objects o INNER JOIN sys.sysobjvalues v ON o.object_id = v.objid
WHERE o.type = 'P'

Bu script içerik daha önce detayını verdiğimiz data page’lerde bir kayıt olarak yazılmıştır. Örneğin şekilde gösterilen uspGetBillOfMaterials prosedürünün bulunduğu 23401 nolu Page’in içeriğine DBCC PAGE(AdventureWorks2014, 1, 23401, 3) komutuyla baktığımızda bu prosedürün tanımını görmüş oluruz.

Procedure, function gibi nesnelerin kodunu görmek için eski sürümlerden gelen sp_helptext prosedürü de kullanılabilir.

Başka bir yöntem de SQL Server’in metadata bilgilerini sunan INFORMATION_SCHEMA isimli view kullanmaktır.

SELECT ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME = 'uspGetBillOfMaterials';

SQL Server mimarisi konulu bu seride aşağıdaki konuları detaylandırmaya çalışıyorum.

SQL Server’in mimarisi nasıldır?
SQL Server veri tabanı mimarisi, disk yönetim mimarisi?
SQL Server, verileri nasıl saklar, kayıt eder?
8060 byte’dan büyük verileri nasıl kayıt edilir?
BLOC, CLOB verileri nasıl sayfalarda depolanır?
Sql Server storage architecture, storage engine, storage internals
Page, Extent, Allocation Unit, IAM Page, PFS, GAM, SGAM Pages, Row Offset Nedir?
SQL Server’da table, index, clustered, non clustered index nasıl çalışır?
SQL Server bellek yönetimi, memory management
SQL Server işlemci yönetimi, CPU management
SQL Server disk space, disk usage
Sql Server IO performance
System Base Tables

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir