Det skal være muligt at følge udviklingen i tabelstørrelserne i min database, og jeg skal derfor have en stored procedure der for hver tabel måler tabelstørrelsen og resultatet gemmes. Den historiske udvikling skal følges over 10 kald af ovennævnte stored procedure.
create table #spt_space ( objid int null, rows int null, reserved dec(15) null, data dec(15) null, indexp dec(15) null, unused dec(15) null )
set nocount on
-- Create a cursor to loop through the user tables declare c_tables cursor for select id from sysobjects where xtype = 'U'
open c_tables
fetch next from c_tables into @id
while @@fetch_status = 0 begin
/* Code from sp_spaceused */ insert into #spt_space (objid, reserved) select objid = @id, sum(reserved) from sysindexes where indid in (0, 1, 255) and id = @id
select @pages = sum(dpages) from sysindexes where indid < 2 and id = @id select @pages = @pages + isnull(sum(used), 0) from sysindexes where indid = 255 and id = @id update #spt_space set data = @pages where objid = @id
/* index: sum(used) where indid in (0, 1, 255) - data */ update #spt_space set indexp = (select sum(used) from sysindexes where indid in (0, 1, 255) and id = @id) - data where objid = @id
/* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */ update #spt_space set unused = reserved - (select sum(used) from sysindexes where indid in (0, 1, 255) and id = @id) where objid = @id
update #spt_space set rows = i.rows from sysindexes i where i.indid < 2 and i.id = @id and objid = @id
Jeg stod og manglede et script der kunne gøre dette så Jeg afprøvede dit script og det virker fint. Men den funktion der skulle gemme resultatet så man kunne sammenligne de sidste 10 gange hvor finder man den ?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.