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

Utwórz widok powiązania schematu w SQL Server

Zwykle dobrym pomysłem jest schematyczne powiązanie widoków w SQL Server.

Schemat powiązania widoku zapewni, że tabel bazowych nie będzie można zmienić w sposób, który miałby wpływ na widok. Bez powiązania schematu bazowe tabele lub inne obiekty mogą być modyfikowane, a nawet usuwane. Jeśli tak się stanie, widok nie będzie już działał zgodnie z oczekiwaniami.

Aby utworzyć widok powiązany ze schematem, użyj WITH SCHEMABINDING w kodzie T-SQL do tworzenia widoku.

Przykład

Oto przykład tworzenia widoku powiązanego ze schematem:

CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

Zauważ, że użyłem dwuczęściowej nazwy podczas odwoływania się do tabeli w moim zapytaniu — użyłem dbo.Cats zamiast po prostu Cats . Jest to wymagane do powiązania obiektu ze schematem. Jeśli spróbujesz schematycznie powiązać obiekt bez użycia dwuczęściowych nazw, otrzymasz błąd.

Teraz, gdy powiązałem schemat z moim widokiem, jeśli spróbuję usunąć tabelę, do której odwołuje się jej definicja, otrzymuję błąd:

DROP TABLE Cats;

Wynik:

Msg 3729, Level 16, State 1, Line 1
Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.

Oto, co się stanie, jeśli spróbuję powiązać widok schematycznie bez używania dwuczęściowego nazewnictwa:

CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM Cats;
GO

Wynik:

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.

Inne atrybuty widoku

Wiele atrybutów można oddzielić przecinkami. Nie musisz określać WITH dla każdego atrybutu.

Na przykład, jeśli chcesz, aby widok był powiązany ze schematem i zaszyfrowane, możesz to zrobić:

CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING, ENCRYPTION
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj „smalldatetime” na „datetime2” w SQL Server (przykłady T-SQL)

  2. Operacje CRUD programu SQL Server

  3. Monitorowanie liczników wydajności za pomocą PERFMON | Rozwiązywanie problemów z wydajnością programu SQL Server -3

  4. Jak mogę utworzyć użytkownika w bazie danych SQL Server Express dodanej do mojego projektu?

  5. Jak uzyskać plan wykonywania zapytań w programie SQL Server?