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

Jak utworzyć procedurę składowaną związaną ze schematem w programie SQL Server?

Jeśli kiedykolwiek tworzyłeś UDF powiązany ze schematem, wiesz, że powiązanie schematu to tylko kwestia dodania WITH SCHEMABINDING do twojej definicji. To samo dotyczy tworzenia widoku powiązanego ze schematem.

Procedury składowane są nieco inne.

Tylko natywnie skompilowane procedury składowane mogą być powiązane ze schematem. W rzeczywistości natywnie skompilowane procedury składowane muszą być powiązany ze schematem. Nie można utworzyć natywnie skompilowanej procedury składowanej bez powiązania jej ze schematem.

Ale jeśli spróbujesz schematycznie powiązać zwykłą (nie skompilowaną natywnie) procedurę, otrzymasz błąd.

Przykład procedury składowanej związanej ze schematem

Oto przykład tworzenia powiązanej ze schematem (skompilowanej natywnie) procedury składowanej.

CREATE PROCEDURE dbo.usp_GetCowsByName @cowname varchar(70)Z ŁĄCZENIEM SCHEMATÓW, NATIVE_COMPILATIONASBEGIN ATOMIC WITH ( TRANSACTION ISOLATION LEVEL =SNAPSHOT, LANGUAGE =N'us_english' ) SELECT CowE. PhoneFwname =CowROM /pre> 

Dołączyłem WITH SCHEMABINDING argument, ale dodałem też NATIVE_COMPILATION , co oznacza, że ​​procedura jest kompilowana natywnie.

Zwróć także uwagę na ATOMIC WITH blok. Jest to wymagane w przypadku natywnie kompilowanych procedur składowanych.

Ten kod utworzył procedurę składowaną związaną ze schematem.

Błąd? Sprawdź te wymagania wstępne

Natywnie skompilowane procedury składowane wymagają, aby wszystkie tabele bazowe były tabelami zoptymalizowanymi pod kątem pamięci.

Aby utworzyć tabele zoptymalizowane pod kątem pamięci, należy najpierw utworzyć grupę plików zoptymalizowaną pod kątem pamięci.

Oto kod, którego użyłem do utworzenia grupy plików zoptymalizowanej pod kątem pamięci, skojarzonego z nią pliku i tabeli zoptymalizowanej pod kątem pamięci, do której odwołuję się w procedurze składowanej:

 ALTER DATABASE Test ADD FILEGROUP imoltp_test ZAWIERA MEMORY_OPTIMIZED_DATA; GOALTER DATABASE Test ADD FILE (name='imoltp_test1', filename='/var/opt/mssql/data/imoltp_test1.mdf') TOBOCtRELEtest1.mdf') TO .[Krowy]( [CowId] [int] IDENTITY (1,1) NOT NULL PODSTAWOWY KLUCZ NIECLUSTROWANY, [CowName] [varchar](70) NULL, [Phone] [varchar](10) NULL) WITH (MEMORY_OPTIMIZED =ON , TRWAŁOŚĆ =SCHEMAT_I_DANE)GO

Więc jeśli chcesz skopiować i wkleić mój kod, musisz najpierw uruchomić ten kod, a następnie powyższy kod procedury składowanej.

Zauważ też, że używam SQL Server dla systemu Linux, więc ścieżki plików używają konwencji linuksowych. Jeśli tworzysz plik bazy danych w systemie Windows, musisz go zmienić, aby używał konwencji ścieżki plików systemu Windows (i pamiętaj, aby użyć ścieżki pliku, która istnieje w twoim systemie).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać Top z powiązaniami w SQL Server — samouczek SQL Server / TSQL część 114

  2. Kod do walidacji skryptów SQL

  3. Rekurencyjne samodołączanie SQL Server

  4. Niestandardowe formatowanie daty/godziny w SQL Server

  5. Idź, gdy sterownik SQL Server nie może się pomyślnie połączyć, logowanie nie powiodło się