Skip to content

Instantly share code, notes, and snippets.

@joshua
Created January 19, 2012 20:26
Show Gist options
  • Save joshua/1642365 to your computer and use it in GitHub Desktop.
Save joshua/1642365 to your computer and use it in GitHub Desktop.
Helpful TSQL Scripts
USE master
GO
RESTORE FILELISTONLY
FROM DISK = N'<PATH_TO_BAK>'
GO
RESTORE DATABASE [<DATABASE_NAME>]
FROM DISK = N'<PATH_TO_BAK>'
WITH
FILE = 1,
MOVE N'NWSAegisMspDb_dat'
TO N'<NEW_PATH_TO_MDF>',
MOVE N'NWSAegisMspDb_log'
TO N'<NEW_PATH_TO_LDF>',
NOUNLOAD,
STATS = 10
GO
WITH table_space_usage
( schema_name, table_name, index_name, used, reserved, ind_rows, tbl_rows )
AS (
SELECT s.Name
, o.Name
, coalesce(i.Name, 'HEAP')
, p.total_used_pages * 8
, p.total_reserved_pages * 8
, p.rows
, case when i.index_id in ( 0, 1 ) then p.rows else 0 end
FROM sys.dm_db_partition_stats p
INNER JOIN sys.objects as o
ON o.object_id = p.object_id
INNER JOIN sys.schemas as s
ON s.schema_id = o.schema_id
LEFT OUTER JOIN sys.indexes as i
on i.object_id = p.object_id and i.index_id = p.index_id
WHERE o.type_desc = 'USER_TABLE'
and o.is_ms_shipped = 0
)
SELECT t.schema_name
, t.table_name
, t.index_name
, sum(t.used) as used_in_kb
, sum(t.reserved) as reserved_in_kb
, case grouping(t.index_name)
when 0 then sum(t.ind_rows)
else sum(t.tbl_rows) end as rows
FROM table_space_usage as t
GROUP BY
t.schema_name
, t.table_name
, t.index_name
WITH ROLLUP
ORDER BY
grouping(t.schema_name)
, t.schema_name
, grouping(t.table_name)
, t.table_name
, grouping(t.index_name)
, t.index_name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment