2019-12-08

Spotlight on SQL Server Uygulamasının SQL Scriptleri Nerede Tutuluyor?

SQL Server veritabanı sisteminin sağlık durumu izlemek için kullanılan araçlardan birisi olan Spotlight on SQL Server uygulamasının kullandığı scriptleri aşağıdaki dizinde bulabilirsiniz. Script konusunda uzmanlığınız varsa kendinize göre mevcut scriptleri iyileştirebilir yada özelleştirebilirsiniz.

C:\Program Files (x86)\Quest Software\Diagnostic Server\Agent\conf\Package\sqlserver_spotlight

2019-12-06

Tüm Login ve Tüm Windows Group Altındaki Tüm Loginlerin Listesini Alma

/*
Bir instance altındaki tüm login'leri ve Windows group altındaki tüm kullanıcıların listesini aşağıdaki T-SQL bulabilirsiniz
*/

declare  @tmploginlist table(
LoginName    nvarchar(256),
[type]     varchar(8),
[privilege]    varchar(8),
[mapped login name]  nvarchar(256),
WindowsGroupName    nvarchar(256)
)

 declare @WindowsGroupName nvarchar(256)

 --SQL/Windows Logins
 insert into @tmploginlist
select  name,'user','user',name,''
from sys.server_principals
where  type in ('S','U')
 declare c1 cursor for

 --Windows groups
   select name
   from sys.server_principals
   where type =  'G' 
  open c1
  fetch next from c1 into @WindowsGroupName
  while @@fetch_status <> -1
    begin
     insert into @tmploginlist(LoginName,[type],[privilege],[mapped login name],WindowsGroupName)
        exec xp_logininfo @acctname = @WindowsGroupName,@option = 'members'    
    fetch next from c1 into @WindowsGroupName
    end
  close c1
  deallocate c1
select LoginName,WindowsGroupName
from @tmploginlist

2019-11-28

Bir Kullanıcıyı Tüm Veritabanlarından Silmek

/*
Bir kullanıcıyı bir instance altındaki tüm veritabanlarından silmek için aşağıdaki T-SQL script'i kullanabilirsiniz:
*/

declare @LoginName sysname ='Login Name'
declare @strSQL varchar(8000)=
'use [?]
if exists(select * from sys.database_principals
where name =''' + @LoginName + ''')
begin
drop schema [' + @LoginName + ']
drop user [' + @LoginName + ']
end
'
exec sp_MSforeachdb @strSQL
if exists(select * from sys.server_principals
where name =@LoginName)
begin
exec ('drop login [' +  @LoginName + ']')
end

/*
SSMS'da Central Management Servers yada Local Server Groups yardımıyla tanımlı server gruplar yardımıyla tüm veritabanı sistemlerinizdeki tüm veritabanlarında tek seferde silmek için kullanabilirsiniz. */

2019-11-07

Çalıştırılan Komut İçeriğinden Job Adını Bulma

Çalıştırılan komut içeriğinden SQL Server job adını aşağıdaki kod ile bulabilirsiniz:

select j.name
from msdb.dbo.sysjobs j
inner join msdb.dbo.sysjobsteps js on  j.job_id=js.job_id
where js.command like '%Aranılacak içerik%'

2019-07-31

SQL Server en son ne zaman start oldu?

SQL Server servisinin en son ne zaman başladığını aşağıdaki sorgu ile bulabilirsiniz:

SELECT sqlserver_start_time
FROM sys.dm_os_sys_info

2019-04-02

Tüm Kullanıcı Veritabanlarındaki Tüm Tabloların Boyutunu Bulma

Tüm kullanıcı veritabanlarındaki tüm tabloların KB olarak boyutunu  aşağıdaki T-SQL kod ile bulabilirsiniz:

create table #tmptable(DatabaseName sysname,SchemaName sysname, TableName sysname, RowCounts bigint, TotalSpaceKB bigint, UsedSpaceKB bigint, UnusedSpaceKB bigint)

exec sp_msforeachdb 'if db_id(''?'')>4 begin use [?]
insert into #tmptable
select
 db_name() as DatabaseName,
    s.Name as SchemaName,
    t.name as TableName,
    sum((CASE WHEN a.type =1  THEN p.rows  ELSE 0 END)) as RowCounts,
 sum(a.total_pages)*8,
 (sum(CASE WHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END))*8 as TotalSpaceKB
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
 inner join sys.schemas s ON t.schema_id = s.schema_id
where i.index_id in(0,1)
group by  s.Name,t.Name
end'

select top 100 * from #tmptable
order by TotalSpaceKB desc

drop table #tmptable

2018-10-15

Tüm Kullanıcı Veritabanlarındaki sys.sql_modules Kod Satır Sayısını Bulma

Merhaba,

Tüm kullanıcı veritabanlarındaki  procedure, replication-filter-procedure, view, trigger, function, inline table-valued function, table-valued-function satır sayısınını aşağıdaki T-SQL ile bulabilirsiniz:

declare @LineTotal table
(
  DatabaseName sysname,
  LineTotal bigint
)
insert into @LineTotal
exec sp_msforeachdb '
if db_id(''?'')>4
begin
use [?]
select ''?'' as DatabaseName,isnull(sum(len(definition) - len(replace(definition, char(10), ''''))),0)  as LineTotal
from    sys.sql_modules
end
'
select * from @LineTotal

2016-03-18

SCOM'da Alınan "SQL Agent Job discovery script 'SQLAgentJobDiscovery.vbs' for SQL instance" Hatası ve Çözümü

Alınan Hata:

Alert: MSSQL 2014: Discovery failed

Source: SunucuIntanceNeme.DomainName.com
Path: SunucuIntanceNeme.DomainName.com
Last modified by: System
Last modified time: 3/17/2016 15:58:35 AM Alert description: Management Group: Management Grup 1. Script: SQLAgentJobDiscovery.vbs. Instance: MSSQLSERVER : SQL Agent Job discovery script 'SQLAgentJobDiscovery.vbs' for SQL instance 'MSSQLSERVER'  failed.

2016-03-09

Tablodaki İstatistikler En Son Ne Zaman Güncellendi?

Bir tabloda bulunan istatistiklerin en son ne zaman güncellendiğini ve ilgili istatistiğin hangi index yada alan üzerinde olduğunu aşağıdaki T-SQL ile bulabilirsiniz:

select
object_name(s.object_id) as TableName,
ic.name as ColumnName,
stats_date(s.object_id, s.stats_id) as StatisticsUpdate,
s.name as StatisticsName
from sys.stats s inner join sys.stats_columns sc on s.object_id=sc.object_id and s.stats_id=sc.stats_id
inner join sys.columns ic on ic.object_id=sc.object_id and ic.column_id=sc.column_id
where s.object_id=object_id(SchemaAdi.TabloAdi')

-- Yukarıdaki T-SQL SQL Server 2012/2014 sürümlerinde test edildi.

2016-02-29

Çalıştırdığınız Bir Sorgu Bittiğinde Uyarı Sesinin Çıkması

Merhaba,
 
SSMS üzerinde çalıştırdığımız bazı sorgular uzun sürer ve bu süre içerisinde başka işlerle uğraşırız. Başlattığımız bir sorgunun bittiğini bir ses uyarısı ile alırsak güzel olur. Bunun için SSMS'da çalıştırdığınız bir sorgu bittiğinde Windows'un default sesinin çıkmasını isterseniz SSMS'da Tools  - > Options'dan aşağıdaki gibi ayarlabilirsiniz:
 

2016-02-24

Tempdb Veritabanını Ne Şişiriyor?

Tempdb Veritabanında yer işgal eden işlemleri aşağıdaki T-SQL ile bulabilirsiniz.

select ts.session_id,
sum(ts.internal_objects_alloc_page_count*8/1024) as task_internal_objects_alloc_page_mb,
st.text as sqltext,
sum(ts.internal_objects_alloc_page_count) as task_internal_objects_alloc_page_count,
sum(ts.internal_objects_dealloc_page_count) as task_internal_objects_dealloc_page_count
from sys.dm_db_task_space_usage ts inner join sys.dm_exec_requests er on ts.session_id=er.session_id
cross apply sys.dm_exec_sql_text(er.sql_handle) st
where internal_objects_alloc_page_count+ internal_objects_dealloc_page_count>0
group by ts.session_id,st.text
order by 2 desc


Not: T-SQL script SQL Server 2012/2014 versiyonlarında test edildi.

.::YASAL UYARI::.

©2004-2020 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.