Kategori: Hayatı Kolaylaştıran T-SQL

PostgreSQL de Database İçerisinde ki Yetkileri Görmek

Bir veritabanı içerisinde bazı durumlarda farklı bir kullanıcı oluşturup sadece bazı tablolara select ,insert,update,delete yetkisi vermemiz gerekiyor.  Tablo sayınız çok ve hangi tabloya ne yetki verdiğinizi görmek istiyorsanız aşağıdaki plpgsql scriptinden faydalanabilirsiniz.

 87 total views,  2 views today

MSSQL de En Son Hangi Tablolarda İşlem Yapıldı?

Bir veritabanı içerisinde hangi tablolardan veri çekildiğini öğrenebilmemiz için indexlerden faydalanabiliriz.

İndexlerden ne zaman seek ,ne zaman scan yapıldığını bularak o tabloların en son ne zaman kullanıldığını bulabiliriz

 70 total views,  1 views today

MSSQL de Obje Bazlı Yetkileri Görmek

MSSQL de Obje Bazlı Yetkileri Görmek

MSSQL de bazı durumlar da instance bazında, veritabanı bazında yetkileri görmek haricinde, hangi kullanıcının belirli bir veritabanında hangi yetkileri var , hangi tablolarda hangi kullanıcının yetkisi var, hangi obje de (stored procedure, view ,table ) görmek isteyebiliriz.
Böyle durumlar da aşağıdaki t-sql cümlesini kullanarak  öğrenebilirsiniz.

 94 total views,  3 views today

MSSQL Session Alert

MSSQL Session Alert

MSSQL de Sessionlarınız uygulamadan gelen istekler yüzünden arttı ve bunu kontrol altında tutmak istiyorsunuz ya da belli bir sayıdan fazla session sayınızın artmasını istemiyorsanız aşağıdaki t-sql işinizi görecektir.

 

USE [msdb]
GO

BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'Session alert',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'session_script',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'declare @sessioncount int,
@mail_gönderilecek_kisi nvarchar(max) =''farukerdemm@outlook.com.tr'',-- mail gönderilecek hesap
@msj nvarchar(max) = (select @@SERVERNAME+'' instancenda belirtilen sayıdan fazla session bulunmaktadır.Gerekli Kontrolleri sağlarmısınız?''),
@profle nvarchar(max) =(select name from msdb.dbo.sysmail_profile)

set @sessioncount=( select count(*) from sys.dm_exec_sessions)

if @sessioncount>100 --session sayısı

begin

EXEC msdb.dbo.sp_send_dbmail
@profile_name =@profle, --profil adı
@recipients = @mail_gönderilecek_kisi,
@subject = ''Session Alert'', -- konu başlığı
@body=@msj --Mail içeriği

end
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

GO

 

 336 total views,  1 views today

MSSQL Kullanılmayan İndexleri Bulmak

MSSQL Kullanılmayan İndexleri Bulmak

SQL Server da bazen performans iyileştirmeleri yaparken sorgulara göre index ekleriz ve sonradan bu indexlere baktığımızda bazılarının gereksiz bazılarının hiç kullanılmadığını görürüz.
Aşağıdaki script kullanılmayan indexleri bulmak için yardımcı olacaktır.

 

SELECT
o.name AS ObjectName
, i.name AS IndexName
, i.index_id AS IndexID
, dm_ius.user_seeks AS UserSeek
, dm_ius.user_scans AS UserScans
, dm_ius.user_lookups AS UserLookups
, dm_ius.user_updates AS UserUpdates
, p.TableRows
, 'DROP INDEX ' + QUOTENAME(i.name)
+ ' ON ' + QUOTENAME(s.name) + '.'
+ QUOTENAME(OBJECT_NAME(dm_ius.OBJECT_ID)) AS 'drop statement'
FROM sys.dm_db_index_usage_stats dm_ius
INNER JOIN sys.indexes i ON i.index_id = dm_ius.index_id
AND dm_ius.OBJECT_ID = i.OBJECT_ID
INNER JOIN sys.objects o ON dm_ius.OBJECT_ID = o.OBJECT_ID
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
INNER JOIN (SELECT SUM(p.rows) TableRows, p.index_id, p.OBJECT_ID
FROM sys.partitions p GROUP BY p.index_id, p.OBJECT_ID) p
ON p.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = p.OBJECT_ID
WHERE OBJECTPROPERTY(dm_ius.OBJECT_ID,'IsUserTable') = 1
AND dm_ius.database_id = DB_ID()
AND i.type_desc = 'nonclustered'
AND i.is_primary_key = 0
AND i.is_unique_constraint = 0

ORDER BY (dm_ius.user_seeks + dm_ius.user_scans + dm_ius.user_lookups) ASC
GO

 

 

 230 total views

MSSQL de FULL,DIF ve LOG backupın Ne Zaman  Alındığını Görmek

MSSQL de FULL,DIF ve LOG backupın Ne Zaman Alındığını Görmek

MSSQL Full ,Diff ve Log backupların ne zaman alındığını görmek istiyorsanız …

 815 total views,  1 views today

MSSQL Lock Alert

MSSQL Lock Alert

 Çalışmış olduğunuz  instance da ki lockların sayısını dakika da bir  hesaplayarak sizin belirlemiş olduğunuz sayıdan büyük ise , mail içeriğinde scriptin çalıştığı instance adını ,sınırı aştığına dair uyarı metini sistemde önceden tanımladığınız mail profil ismini otomatik olarak bularak sizin belirteceğiniz mail adresine  bilgilendirme maili atan scripttir.

 779 total views,  1 views today

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa