Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Odświeżanie metadanych funkcji użytkownika t-SQL

odpowiedź gbn jest najlepsze - ale jeśli masz SCHEMABINDING, często uniemożliwia to wprowadzanie podstawowych zmian bez uprzedniego usunięcia SCHEMABINDING, a następnie zastąpienia go podczas ponownego tworzenia modułu. Nie możesz użyć SCHEMABINDING, jeśli twój obiekt odwołuje się do obiektów spoza bazy danych.

Jeśli ta trudność jest tak duża, że ​​nie chcesz lub nie możesz korzystać z PODŁĄCZANIA SCHEMATÓW, użyj sp_refreshsqlmodule w jakimś zwykłym procesie, który uruchamiasz w celu sprawdzenia modułów SQL pod kątem błędów, zanim zostaną one faktycznie użyte (można go uruchomić na dowolnym widoku nieschemabound, UDF, przechowywanym procencie itp.) jest twoim przyjacielem.

Możesz używać obu technik jednocześnie — nie można (i nie ma takiej potrzeby) uruchamiać modułu sp_refreshsqlmodule względem obiektów powiązanych ze schematem.

np. możesz go uruchomić tylko na tych modułach:

SELECT *
FROM    INFORMATION_SCHEMA.ROUTINES
        WHERE   (
                 OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)), N'IsSchemaBound') IS NULL
                 OR OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)),
                                   N'IsSchemaBound') = 0
                )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. błąd nie znaleziono klucza przetwarzania wymiaru ssas

  2. Uzyskaj odrębne wiersze z wyniku JOIN w SQL Server

  3. Zapytanie SQL dla przedziałów czasowych. Błędy składni.

  4. Ulubione triki dostrajania wydajności

  5. Przeczytaj zadeklarowany poziom izolacji Snapshot VS Snapshot