Het is meestal een goed idee om uw weergaven in SQL Server te binden.
Schema dat uw weergave bindt, zorgt ervoor dat de onderliggende tabellen niet kunnen worden gewijzigd op een manier die de weergave zou beïnvloeden. Zonder schemabinding kunnen de onderliggende tabellen of andere objecten worden gewijzigd of zelfs verwijderd. Als dat gebeurt, werkt de weergave niet meer zoals verwacht.
Om een schemagebonden weergave te maken, gebruikt u de WITH SCHEMABINDING
in uw T-SQL-code voor het maken van de weergave.
Voorbeeld
Hier is een voorbeeld van het maken van een schemagebonden weergave:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Merk op dat ik de tweedelige naam gebruikte bij het verwijzen naar de tabel in mijn zoekopdracht - ik gebruikte dbo.Cats
in plaats van alleen Cats
. Dit is een vereiste om een object via een schema te binden. Als u een object via een schema probeert te binden zonder tweedelige namen te gebruiken, krijgt u een foutmelding.
Nu ik mijn weergave schema heb gebonden, krijg ik een foutmelding als ik probeer de tabel waarnaar in de definitie wordt verwezen te laten vallen:
DROP TABLE Cats;
Resultaat:
Msg 3729, Level 16, State 1, Line 1 Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.
Dit is wat er gebeurt als ik probeer de weergave schema te binden zonder tweedelige naamgeving te gebruiken:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM Cats; GO
Resultaat:
Msg 4512, Level 16, State 3, Procedure v_Cats, Line 5 Cannot schema bind view 'dbo.v_Cats' because name 'Cats' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
Andere kenmerken bekijken
Meerdere attributen kunnen worden gescheiden door een komma. U hoeft WITH
niet op te geven voor elk attribuut.
Als u bijvoorbeeld wilt dat de weergave schemagebonden is en versleuteld, kunt u dit doen:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING, ENCRYPTION AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO