sql >> Database teknologi >  >> RDS >> Sqlserver

Opdater metadata om brugerfunktioner t-SQL

gbns svar er bedst - men når du har SCHEMABINDING, forhindrer dette dig ofte i at lave underliggende ændringer uden først at fjerne SCHEMABINDING og derefter erstatte det, når du genskaber modulet. Du kan ikke bruge SCHEMABINDING, hvis dit objekt refererer til objekter uden for databasen.

Hvis denne vanskelighed er så stor, at du ikke ønsker eller kan bruge SCHEMABINDING, så brug sp_refreshsqlmodule i en form for almindelig proces, som du kører for at tjekke dine SQL-moduler for fejl, før de rent faktisk bruges (det kan køres på enhver ikke-skemabundet visning, UDF, lagret proc, osv.) er din ven.

Du kan bruge begge teknikker sammen - du kan ikke (og der er ingen grund til at) køre sp_refreshsqlmodule mod skemabundne objekter.

f.eks. kan du kun køre det på disse moduler:

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. Hvorfor begås en indlejret transaktion, selvom TransactionScope.Complete() aldrig kaldes?

  2. postgres og python

  3. Generering af dybdebaseret træ fra hierarkiske data i MySQL (ingen CTE'er)

  4. Håndtering af data fra flere udvalgte felter