Identificar tabelas não utilizadas de bancos de dados SQL

Identificar tabelas não utilizadas de bancos de dados SQL

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


alterar procedimento sp_getunused_tables

@Nome do banco de dados varchar(50)

Como

início

/ * Insira detalhes das tabelas * /

declarar @TableDetails_Query nvarchar(max)

E se existe (selecionar nome de tempdb.sys.mesas Onde nome gostar ‘% # TableDetails%’)

solta tabela #TableDetails

crio tabela #TableDetails

(

[Database_Name] varchar(50)

,[Schema_Name] varchar(50)

,[Object_Id] bigint

,[Table_Name] varchar(500)

,[Modified_Date] data hora

)

conjunto @TableDetails_Query =

‘INSERT INTO #TableDetails (

[Database_Name]

,[Schema_Name]

,[Object_Id]

,[Table_Name]

,[Modified_Date]

)

SELECT DatabaseName

, SchemaName

, ObjectId

,Nome da tabela

, Data modificada

DE (

SELECIONE DISTINTO ‘ + + @Nome do banco de dados + + ‘AS DatabaseName

, sch.NAME AS SchemaName

, tbl.object_id AS ObjectId

, tbl.NAME AS TableName

, tbl.modify_date AS ModifiedDate

DE ‘ + @Nome do banco de dados + ‘.sys.tables AS tbl

JUNÇÃO INTERNA ‘ + @Nome do banco de dados + ‘.sys.schemas AS sch ON tbl.schema_id = sch.schema_id

ASSOCIAÇÃO À ESQUERDA ‘ + @Nome do banco de dados + ‘.sys.extended_properties AS ep ON ep.major_id = tbl.[object_id] / * Excluir tabelas do sistema * /

ONDE tbl.NAME NÃO É NULO

E sch.NAME NÃO É NULO

AND (ep.[name] IS NULL OU ep.[name] <> ‘‘microsoft_database_tools_support’‘)

) AS rd

ONDE rd.SchemaName NÃO É NULO

ORDER BY DatabaseName ASC

, TableName ASC ‘

exec sp_Executesql @TableDetails_Query

/ * Inserir uso de índice * /

E se existe (selecionar nome de tempdb.sys.mesas Onde nome gostar ‘% # Table_Usage%’)

solta tabela #Table_Usage

CRIO TABELA #Table_Usage (

[Database_Name] varchar(150)

,[Object_Id] bigint

,[Table_Name] nvarchar(128) NULO

,[Last_User_Update] data hora NULO

,[Last_User_Seek] data hora NULO

,[Last_User_Scan] data hora NULO

,[Last_User_Lookup] data hora NULO

);

declarar @TableUsage_Query nvarchar(max)

conjunto @TableUsage_Query =‘INSERT INTO #Table_Usage (

[Database_Name]

,[Object_Id]

,[Table_Name]

,[Last_User_Update]

,[Last_User_Seek]

,[Last_User_Scan]

,[Last_User_Lookup]

)

SELECT DatabaseName

, ObjectId

,Nome da tabela

, LastUserUpdate

, LastUserSeek

, LastUserScan

, LastUserLookup

DE (

SELECIONE

+ + @Nome do banco de dados + + ‘AS DatabaseName

, indexusage.OBJECT_ID AS ObjectId

, obj.NAME AS TableName

, indexusage.last_user_update AS LastUserUpdate

, indexusage.last_user_seek AS LastUserSeek

, indexusage.last_user_scan AS LastUserScan

, indexusage.last_user_lookup AS LastUserLookup

DE ‘ + @Nome do banco de dados + ‘.sys.dm_db_index_usage_stats AS indexusage

JUNÇÃO INTERNA ‘ + @Nome do banco de dados + ‘.sys.objects AS obj ON

indexusage.OBJECT_ID = obj.OBJECT_ID

E obj.NAME NÃO É NULO

Leia Também  Apresentando Clusters de Big Data e SQL Server 2019 - SQLBlog / Aaron

) como tbl ‘

exec sp_Executesql @TableUsage_Query

declarar @tableHTML nvarchar(max)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

declarar @Sujeito nvarchar(max)

conjunto @Sujeito=‘Lista de tabelas não utilizadas em’+ @Nome do banco de dados

CONJUNTO @tableHTML =

Lista de tabelas não utilizadas em ‘ +@Nome do banco de dados +

+

N

+

N

+

FUNDIDA((SELECIONE

É NULO(tableDetails.Nome do banco de dados, ) COMO ‘TD’

,

,É NULO(tableDetails.[Schema_Name], ) COMO ‘TD’

,

,É NULO(tableDetails.[Table_Name] , ) COMO ‘TD’

,

,É NULO(tableDetails.[Modified_Date] , ) COMO ‘TD’

,

,É NULO(planilha.[Last_User_Seek] , ) COMO ‘TD’

,

,É NULO(planilha.[Last_User_Scan] , ) COMO ‘TD’

,

,É NULO(planilha.[Last_User_Update] , ) COMO ‘TD’

,

DE #Table_Usage COMO planilha

INTERIOR JUNTE-SE #TableDetails COMO TableDetails EM planilha.Object_Id = TableDetails.Object_Id

ONDE

Last_User_seek <= datadd(dia, , getdate()) E

Last_User_Scan <= datadd(dia, , getdate()) E

Last_User_Update <= datadd(dia, , getdate())

Ordem de tableDetails.[Schema_Name] ASC

,tableDetails.[Table_Name] ASC

PARA XML CAMINHO (‘tr’), RAIZ)

COMO NVARCHAR(MAX)) +

N

Nome do banco de dados Nome do esquema Nome da tabela Data de modificação da tabela A última busca de usuário ocorreu em Última verificação do usuário ocorreu em Última atualização do usuário ocorrida em

/*Enviar email*/

EXEC msdb..sp_send_dbmail @nome do perfil = ‘OutlookMail’

,@destinatários = ‘ni***********[email protected]

,@sujeito = @sujeito

,@importância = ‘Alto’

,@corpo = @tableHTML

,@body_format = ‘HTML’;

Fim