Google
 
Strona główna Darmowe programy, shareware Programowanie MS Excel Porady komputerowe Bazy danych Kontakt

Polecamy: darmowe gry logiczne Sudoku do druku - raz zagrasz nigdy nie przestaniesz!
Zobacz ciekawe Zagadki logiczne Tabliczka mnożenia Mnożenie macierzy Macierz odwrotna

Warto uczyć się języka angielskiego: Życzenia urodzinowe po angielsku Ubrania po angielsku Zawody po angielsku

Monitorowanie fizycznego rozmiaru tabel w bazach danych SQL Serwera.


Systemowa procedura składowana sp_spaceused.



Czasami zdarza się, że na serwerze SQL kończy się miejsce na dysku. Przydatna okazuje się wówczas systemowa procedura składowana sp_spaceused. Umożliwia ona dla danej tabeli wyznaczyć rozmiar fizycznej przestrzeni dyskowej zajmowanej przez daną tabelę. Dzięki temu można dowiedzieć się ile miejsca zajmują tabele i zdecydować co dalej zrobić. Wywołanie procedury jest następujące: Sp_spaceused nazwa_tabeli Jako wynik procedura zwraca między innymi ilość wierszy w tabeli, wielkość miejsca zajmowanego przez dane i wielkość miejsca zarezerwowanego dla tabeli.



Procedura rozmiary_tabel.



Problem może się pojawić w przypadku gdy mamy do czynienia z bazą danych, w której znajduje się bardzo wiele tabel. Sprawdzenie rozmiarów wszystkich tabel mogłoby wówczas zająć wiele czasu. Problem może rozwiązać specjalna procedura składowana, która wyświetla listę wszystkich tabel posortowaną według rozmiaru miejsca zajmowanego przez tabele. Oto jej kod źródłowy napisany w języku Transact-SQL:

CREATE PROCEDURE rozmiary_tabel
AS
DECLARE @nazwa varchar(250);
Create table #rozmiary_tmp
( [name] varchar(200) ,
[rows] varchar(200),
[reserved] varchar(200) ,
[data] varchar(200) ,
[index_size] varchar(200) ,
[unused] varchar(200)
);

DECLARE kursor CURSOR for
select name from sysobjects WHERE type='U' ;
OPEN kursor

fetch kursor INTO @nazwa
while @@fetch_status =0
begin
insert into #rozmiary_tmp Exec sp_spaceused @nazwa
fetch next FROM kursor INTO @nazwa
end
CLOSE kursor
DEALLOCATE kursor
select * from #rozmiary_tmp order by cast (replace(reserved,' KB' ,'') as int ) DESC
GO

Działanie procedury jest następujące: Najpierw tworzymy tabelę tymczasową #rozmiary_tmp, która będzie potrzebna do przechowania pośrednich wyników pracy procedury. Następnie wybieramy nazwy wszystkich tabel z tabeli sysobjects. W tabeli tej rekordy odnoszące się do obiektów tabel mają w kolumnie type wpisane U (User table). Następnie w pętli wyznaczmy rozmiar zajmowany przez tabelę i zapisujemy go do tabeli tymczasowej. Na końcu zamykamy kursor i wybieramy wszystkie rekordy z tabeli #rozmiary_tmp posortowane według rozmiarów.


 
Polecamy : trójkąt równoboczny  wzory fizyczne  twierdzenia matematyczne  twierdzenia Pitagorasa  wzory matematyczne  zadania z matematyki  zadania z chemii  wzory strukturalne  wzory skróconego mnożenia  wartości funkcji trygonometrycznych  ułamki zwykłe  funkcja kwadratowa  funkcja liniowa  funkcja homograficzna  wyrażenia algebraiczne 
Copyright © 2006-2010 programowaniePC.pl