2009-07-14 9 views
0

Ich habe Batch-SQL-Abfrage wieSQLCMD.EXE generiert einen hässlichen Bericht. Wie man es formatiert?

use [AxDWH_Central_Reporting] 
GO 
EXEC sp_spaceused @updateusage = N'TRUE' 
GO 

Es zeigt zwei Tabellen und erzeugt einen hässlichen Bericht mit irgendeiner Art von ‚P‘ nicht benötigten Buchstaben zu laufen ... Siehe unten

Changed database context to 'AxDWH_Central_Reporting'. 

database_name                             Pdatabase_size  Punallocated space 
--------------------------------------------------------------------------------------------------------------------------------P------------------P------------------ 
AxDWH_Central_Reporting                           P10485.69 MB  P7436.85 MB   
reserved   Pdata    Pindex_size  Punused    
------------------P------------------P------------------P------------------ 
3121176 KB  P3111728 KB  P7744 KB   P1704 KB   
---------------------------------------------------------------- 

ich auch tryed 1 Tisch aus diesem Verfahren mit dem nächsten Abfrage

declare 
    @dbname sysname, 
    @dbsize bigint, 
    @logsize bigint, 
    @reservedpages bigint 

select 
    @reservedpages = sum(a.total_pages) 
from 
    sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id left join sys.internal_tables it on p.object_id = it.object_id 

select 
    @dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end)), 
    @logsize = sum(convert(bigint,case when status & 64 <> 0 then size else 0 end)) 

from 
    dbo.sysfiles 

select 
    'database name' = db_name(), 
    'database size' = ltrim(str((convert (dec (15,2),@dbsize) + convert (dec (15,2),@logsize)) * 8192/1048576,15,2) + ' MB'), 
    'unallocated space' = ltrim(str((case when @dbsize >= @reservedpages then 
     (convert (dec (15,2),@dbsize) - convert (dec (15,2),@reservedpages)) * 8192/1048576 else 0 end),15,2) + ' MB') 

bekam aber ähnlich hässlich Bericht zu generieren:

012.351.
database name                             Pdatabase size  Punallocated space 
--------------------------------------------------------------------------------------------------------------------------------P------------------P------------------ 
master                               P5.75 MB   P1.52 MB   

(1 rows affected) 

Ist es möglich, die Layoutformatierung für einen Bericht zu ändern? Um es schöner zu machen?

Antwort

0

Ich bezweifle, dass Sie SQLCMD und sp_spaceused schön formatiert bekommen können - warum verwenden Sie nicht einfach andere Mittel, um die benötigten Informationen zu erhalten?

In SQL Server 2005 und höher, verwenden dieses Stück T-SQL die Tabellen angezeigt werden und die Größe, die sie verwenden:

SELECT 
    t.NAME AS TableName, 
    i.name as indexName, 
    p.[Rows], 
    sum(a.total_pages) as TotalPages, 
    sum(a.used_pages) as UsedPages, 
    sum(a.data_pages) as DataPages, 
    (sum(a.total_pages) * 8)/1024 as TotalSpaceMB, 
    (sum(a.used_pages) * 8)/1024 as UsedSpaceMB, 
    (sum(a.data_pages) * 8)/1024 as DataSpaceMB 
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 
WHERE 
    t.NAME NOT LIKE 'dt%' AND 
    i.OBJECT_ID > 255 AND 
    i.index_id <= 1 
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name, p.[Rows] 
ORDER BY 
    object_name(i.object_id) 

Werke für mich ganz gut! :-)

Marc

Verwandte Themen