Forum

SQL server üst...
 
Bildirimler
Hepsini Temizle

SQL server üstünde çalışan view boyutlarını hesaplamak

6 Yazılar
2 Üyeler
0 Likes
1,274 Görüntüleme
(@sinanalmac)
Gönderiler: 3
Active Member
Konu başlatıcı
 

Merhabalar, 

Uzak bir ülkede  200 gblik veri tabanı var.  içindeki katalogların, tablaoların ,viewlerin hangilerinin kullanıldığını bilmiyorum.  bir sürü tablo var ve çoğu kullanılmıyor dediler . kesin bilgi yok. Veri tabaını içinde kullanılan viewlerin veya taboların hangilerinin kullanıldığını öğrenmenin bir yolu var mı? 

Ona göre sadece kullanılanveriyi çekerek süreyi, kısaltmak istiyorum. 

Aşağıda örnek bir kod hazırladım buna benzer bir şey var mıdır?

Teşekkür ederim 

Sinan 

SELECT
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
--MAX(lu.[last_user_lookup]) as [last_user_lookup], MAX(lu.[last_user_scan]) as [last_user_scan], MAX(lu.[last_user_seek]) as [last_user_seek]
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.object_id = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
--LEFT OUTER JOIN sys.dm_db_index_usage_stats as lu on t.name = (OBJECT_NAME(lu.[object_id], lu.[database_id]))
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.object_id > 255
GROUP BY
t.Name, s.Name, p.Rows--, lu.[database_id], lu.[object_id]
ORDER BY
t.Name

 
Gönderildi : 31/07/2017 14:35

(@GokhanDOGAN)
Gönderiler: 780
Prominent Member
 

Selam, 

amaç nedir, sadece uzak db yi başka lokasyona backup almak mı, yoksa kullanılmayan tabloları silip alan yaratmak mı. ona göre çözüm yazalım.

 
Gönderildi : 31/07/2017 15:11

(@sinanalmac)
Gönderiler: 3
Active Member
Konu başlatıcı
 

Merhaba Cwvabınız için teşekkür ederim. Amacım  oradaki kullanılan tabloları backup alıp, onları inceleyerek hatalarını giderip  yeni bir veritabanı  ,rapolarlama sisstemi yapısı  oluşturmak.  aradaki bağlantı çokyavaş olduğu için  221 gb nin gelmesi haftalar alacak . Doğu ülkesi 
teşekkür ederim 

 
Gönderildi : 31/07/2017 16:39

(@GokhanDOGAN)
Gönderiler: 780
Prominent Member
 

Selam,

siz eğer oradaki db üzerinden bir data mart oluşuturacaksanız, tabloların son kullanım son data dolum tarihi gibi bilgilere bakıpta verilere öncelik, önemlilik kazandırmanız daha zor olabilir. kısaca bi örnek vereyim, satış tablonu var, hergün kayıt giriliyor fakat satış tablosunun bir çok lookup tablosu olabilir, örnek olarak "satış türü" tablonuz vardır, burada satışın türü vb gibi kritik parametreler içeriyordur fakat baktığımızda bu tablo hem çok ufaktır hemde sık sık dml işlemi görmez.

 

dolayısıyla bir data mart oluşturulacaksa, objelerin son kullanım tarihine bakarak, objelere öncelik verilip işleme alınması doğru olmayabilir. benim önreim şöyle olur;

db nin full yedeğini alıp bir kerelik kendi ortamınıza taşıyın, sonrasında kaynak db yi archive log moduna alıp, incremental backup ile günlük olarak offline db yi güncelleyebilirsiniz. bu yöntemle hem tüm verileri bir kerede almış olursunuz, incremental backup ilede hergün sadece db de olan değişiklikleri hızlı bir şekilde offline db ye implement etmiş olursunuz. incemental backup günde 200 mb olsun diyelim, sadece günlük 200 mb download ile tüm veriyi alırsınız.

sonrasında bu verilerden data mart yapıp kendi işlemlerinizi yapabilirsiniz.

ayrıca objelerin de son dml vs görmek isterseniz aşağıdaki gibi bi sorgular var veya sizde tüm tabloları gezip datetime alanının max ını alarakta kendiniz bi yapı oluşturabilirsiniz.

tablo_adı , max(datetime) as son kayit tarihi

sales           bugün

purchase     dun 

 

vs gibi.

 

https://sqlandme.com/2014/03/11/sql-server-how-to-get-last-accessupdate-time-for-a-table/

 
Gönderildi : 31/07/2017 21:35

(@sinanalmac)
Gönderiler: 3
Active Member
Konu başlatıcı
 

Merhabalar  ,

Cevabınız için  çok teşekkür ederim. Önerilerinizi değerlendirip uygulamayı deneyeceğim. 

Teşekkür ederim. 

Saygılarımla 
Sinan 

 
Gönderildi : 01/08/2017 16:25

(@GokhanDOGAN)
Gönderiler: 780
Prominent Member
 

Selam,

kolay gelsin.

 
Gönderildi : 01/08/2017 16:46

Paylaş: