Eu sei que é uma pergunta repetida, mas tentei todas as soluções e soluções alternativas sugeridas em todas as perguntas possíveis presentes em stackoverflow.com
Eu herdei um SQL Pool dedicado com um SQL Server versão 2012.0.2000.8 no qual existem várias tabelas.
Estamos procurando entender quanta retenção devemos definir e para isso estamos analisando o tamanho de cada tabela.
eu tentei
- Mostrar detalhamento de uso de dados e disco por tabela
- uso de espaço em sys.allocation_units e sp_spaceused
- Gerando relatório clicando à direita do banco de dados, mas não tenho essa opção no SSMS
Tentei escrever esta consulta
SELECT
OBJECT_SCHEMA_NAME(p.object_id) + '.' + OBJECT_NAME(p.object_id) AS TableName,
SUM(p.rows) AS RowCounts,
CONVERT(DECIMAL,SUM(p.reserved_page_count)) * 8 / 1024 AS TotalSpaceMB,
CONVERT(DECIMAL,SUM(p.used_page_count)) * 8 / 1024 AS UsedSpaceMB ,
CONVERT(DECIMAL,SUM(p.reserved_page_count - p.used_page_count)) * 8 / 1024 AS
UnusedSpaceMB
FROM
sys.partitions p
WHERE
p.index_id <= 1
GROUP BY
p.object_id
ORDER BY
UsedSpaceMB DESC, TableName;
ou este
SELECT
t.NAME AS TableName,
p.rows AS RowCounts,
CONVERT(DECIMAL,SUM(a.total_pages)) * 8 / 1024 / 1024 AS TotalSpaceGB,
SUM(a.used_pages) * 8 / 1024 / 1024 AS UsedSpaceGB ,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 / 1024 / 1024 AS UnusedSpaceGB
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
WHERE
t.NAME = 'mytable'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
UsedSpaceGB DESC, t.Name
Sempre que há um uso de exibições de sistema (sys.schemas / sys.partition / sys.allocation_units etc. etc.), ele diz que
a exibição de catálogo 'X' não é suportada nesta versão.
Acho que pode haver um problema principalmente com alguma permissão, já que não posso usar exibições do sistema e elas devem estar presentes na minha versão do SQL Pool.
Então, minha pergunta é,
como posso corrigir usando exibições do sistema?