MSSQL Alwayson Sync Login
MSSQL Alwayson Sync Login
52 total views
MSSQL Alwayson Sync Login
52 total views
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.
191 total views
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
140 total views, 1 views today
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.
160 total views
Centos 7 üzerinde exfat formatı
82 total views
Veritabanından silinen objeleri bulmak.
267 total views
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
358 total views, 2 views today
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
281 total views
MSSQL Full ,Diff ve Log backupların ne zaman alındığını görmek istiyorsanız …
840 total views
Cursor herkes tarafından korkulan ve anlaşılması zor gelen konudur fakat bu sanıldığı kadar zor ve korkulacak konu olmadığını bu makale de anlayacaksınız.
752 total views, 1 views today