Sprawdź składnię wszystkich procedur przechowywanych?
chcę upewnić się, że wszystkie procedury przechowywane są nadal poprawne pod względem składniowym. (Może się tak zdarzyć, gdy ktoś zmieni nazwę / usunie tabelę / kolumnę).
W tej chwili moim rozwiązaniem sprawdzającym składnię wszystkich procedur składowanych jest przejście do Enterprise Manager, wybranie pierwszej procedury składowanej na liście i użycie procedury:
WchodzićAlt + CUcieczkaUcieczkaStrzałka w dółIdź do 1To działa, ale jest dość nużące. Chciałbym wywołać procedurę przechowywaną
SyntaxCheckAllStoredProcedures
tak jak w innej zapisanej procedurze, którą napisałem, to samo dotyczy widoków:
RefreshAllViews
Dla wszystkich korzyści RefreshAllViews:
RefreshAllViews.prc
CREATE PROCEDURE dbo.RefreshAllViews AS
-- This sp will refresh all views in the catalog.
-- It enumerates all views, and runs sp_refreshview for each of them
DECLARE abc CURSOR FOR
SELECT TABLE_NAME AS ViewName
FROM INFORMATION_SCHEMA.VIEWS
OPEN abc
DECLARE @ViewName varchar(128)
-- Build select string
DECLARE @SQLString nvarchar(2048)
FETCH NEXT FROM abc
INTO @ViewName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLString = 'EXECUTE sp_RefreshView '+@ViewName
PRINT @SQLString
EXECUTE sp_ExecuteSQL @SQLString
FETCH NEXT FROM abc
INTO @ViewName
END
CLOSE abc
DEALLOCATE abc
Dla korzyści wszystkich procedura składowana oznaczająca wszystkie procedury składowane jako wymagające ponownej kompilacji (zaznaczenie procedury składowanej do ponownej kompilacji nie powie, jeśli jest poprawne składniowo):
RecompileAllStoredProcedures.prc
CREATE PROCEDURE dbo.RecompileAllStoredProcedures AS
DECLARE abc CURSOR FOR
SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.routines
WHERE ROUTINE_TYPE = 'PROCEDURE'
OPEN abc
DECLARE @RoutineName varchar(128)
-- Build select string once
DECLARE @SQLString nvarchar(2048)
FETCH NEXT FROM abc
INTO @RoutineName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLString = 'EXECUTE sp_recompile '+@RoutineName
PRINT @SQLString
EXECUTE sp_ExecuteSQL @SQLString
FETCH NEXT FROM abc
INTO @RoutineName
END
CLOSE abc
DEALLOCATE abc
Ze względu na kompletnośćUpdateAllStatistics procedura. Spowoduje to zaktualizowanie wszystkich statystyk w bazie danych poprzez wykonanie pełnego skanowania danych:
RefreshAllStatistics.prc
CREATE PROCEDURE dbo.RefreshAllStatistics AS
EXECUTE sp_msForEachTable 'UPDATE STATISTICS ? WITH FULLSCAN'