Avatar billede andersbodilsen Nybegynder
20. juli 2006 - 12:38 Der er 2 kommentarer

T-SQL - SP gemme resultatet i en tabel

Hej Allesammen.

Jeg kalder en sp, hvor jeg gerne vil have resultatet gemt i en temp tabel som jeg opretter.

f.eks. EXEC Sp_SpaceUsed employee i pubs
den retunere en table med en række.

det ville jeg så smide i en table sådan her
INSERT INTO #tblSize(Tblname, TblRows, TblReserved, TblData, TblIndex_Size, TblUnused)
  EXEC Sp_SpaceUsed employee

meeeen..
hvis du kalder den som  EXEC Sp_SpaceUsed unden nogen parameter, for at få DB størrelsen, så kommer der to tabeller tilbage.
hvordan gemmer jeg dem i en tabel jeg opretter
Avatar billede janus007 Nybegynder
20. juli 2006 - 21:20 #1
Hej
Du kan evt. køre denne for første info:
declare @dbname sysname 
declare @dbsize dec(15,0) 
declare @logsize dec(15)
select @dbsize =  sum(convert(dec(15),size)) 
  from dbo.sysfiles 
  where (status & 64 = 0) 
 
select  @logsize = sum(convert(dec(15),size)) 
  from dbo.sysfiles 
  where (status & 64 <> 0) 

declare @bytesperpage dec(15,0) 
declare @pagesperMB  dec(15,0) 
 
select @bytesperpage = low 
  from master.dbo.spt_values 
  where number = 1 
  and type = 'E' 
select @pagesperMB = 1048576 / @bytesperpage 
 
select  database_name = db_name(), 
  database_size = 
  ltrim(str((@dbsize + @logsize) / @pagesperMB,15,2) + ' MB'), 
  'unallocated space' = 
  ltrim(str((@dbsize - 
    (select sum(convert(dec(15),reserved)) 
    from sysindexes 
      where indid in (0, 1, 255) 
    )) / @pagesperMB,15,2)+ ' MB') 
 
og den næste for

create table #spt_space 

rows  int null, 
reserved dec(15) null, 
data  dec(15) null, 
indexp  dec(15) null, 
unused  dec(15) null 



declare @pages int

insert into #spt_space (reserved) 
  select sum(convert(dec(15),reserved)) 
  from sysindexes 
    where indid in (0, 1, 255) 
 
/* 
** data: sum(dpages) where indid < 2 
** + sum(used) where indid = 255 (text) 
*/ 
select @pages = sum(convert(dec(15),dpages)) 
  from sysindexes 
    where indid < 2 
select @pages = @pages + isnull(sum(convert(dec(15),used)), 0) 
  from sysindexes 
  where indid = 255 
update #spt_space 
  set data = @pages 
 
 
/* index: sum(used) where indid in (0, 1, 255) - data */ 
update #spt_space 
  set indexp = (select sum(convert(dec(15),used)) 
    from sysindexes 
    where indid in (0, 1, 255)) 
      - data 
 
/* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */ 
update #spt_space 
  set unused = reserved 
    - (select sum(convert(dec(15),used)) 
    from sysindexes 
      where indid in (0, 1, 255)) 
 
select reserved = ltrim(str(reserved * d.low / 1024.,15,0) + 
    ' ' + 'KB'), 
  data = ltrim(str(data * d.low / 1024.,15,0) + 
    ' ' + 'KB'), 
  index_size = ltrim(str(indexp * d.low / 1024.,15,0) + 
    ' ' + 'KB'), 
  unused = ltrim(str(unused * d.low / 1024.,15,0) + 
    ' ' + 'KB') 
  from #spt_space, master.dbo.spt_values d 
  where d.number = 1 
  and d.type = 'E'
Avatar billede janus007 Nybegynder
01. august 2006 - 00:25 #2
Kan du bruge det?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester