widok dm_db_index_physical_stats - czy można wyciągnąć dane podając w parametrach tylko bazę?

0

Cześć,
Mam pytanie jak w temacie:
Chcę przeanalizować fragmentację indeksów w całej bazie danych. Wiem, że aby wyświetlić dane z widoku dm_db_index_physical_stats muszę podać bazę a następnie tabelę ( i pozostałe parametry mogą być nullami). Czy istnieje możliwość abym podał tylko bazę, którą chcę analizować?

1

Nie wiem skąd czerpiesz wiedzę, ale wg. dokumentacji object_id nie jest wymagany i może być nullem:

Specify NULL to return information for all tables and views in the specified database. If you specify NULL for object_id, you must also specify NULL for index_id and partition_number.

Czyli np, mozna tak:

select * FROM sys.dm_db_index_physical_stats(DB_ID(),NULL, NULL, NULL , 'DETAILED');  
0

Miałem błąd mówiący, że 2 argument jest niepoprawny dla tego zapytania... Nie wiem z czego wynikał.
@Panczo - podpowiesz mi jeszcze co może być przyczyną tego, że podaję 2 argumenty: baza danych i tabela, a wynik zapytania zwraca mi też informacje o indeksach z innych baz:
SELECT *
FROM sys.dm_db_index_physical_stats (DB_ID(N'BazaX'), OBJECT_ID(N'TabelaX'), NULL, NULL, NULL) AS indexstats

1

Możesz dodać where i w where ograniczyć przez like do tego konkretnego wyniku.
To zapytanie wyciąga wszystkie rekordy będące w tej tabelce.

1

A co zwróci zapytanie:

select DB_ID(N'BazaX'), OBJECT_ID(N'TabelaX')
0

Dla bazy zwraca jej ID a dla tabeli NULLa :O Dlaczego tak się dzieje?

1

No to moze zapytaj o pelny obiek: nazwabazy.schemat.nazwatabeli, a może serwer jest CS i nie piszesz dokładnie nazwy. t To też może być kwestia uprawnień

0

Podałem cały i pykło :) dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1