Pokud jste někdy vytvořili schéma UDF vázané na schéma, budete vědět, že vazba schématu je pouze záležitostí přidání WITH SCHEMABINDING
k vaší definici. Totéž platí, když vytvoříte pohled vázaný na schéma.
Uložené procedury jsou trochu jiné.
Pouze nativně zkompilované uložené procedury lze vázat na schéma. Nativně kompilované uložené procedury ve skutečnosti musí být vázán na schéma. Nemůžete vytvořit nativně zkompilovanou uloženou proceduru, aniž byste ji svázali schématem.
Pokud se však pokusíte svázat schéma s běžnou (nenativně kompilovanou) procedurou, dostanete chybu.
Příklad uložené procedury vázané na schéma
Zde je příklad vytvoření uložené procedury vázané na schéma (nativně zkompilované).
PROCEDUR VYTVOŘENÍ dbo.usp_GetCowsByName @cowname varchar(70)WITH SCHEMABINDING, NATIVE_COMPILATIONASBEGIN ATOMIC WITH (ÚROVEŇ IZOLACE TRANSAKCE =SNAPSHOT, LANGUAGE =N'us_english' ) Coowsme SELECT @ENDOWREI /před>Zahrnul jsem
WITH SCHEMABINDING
argument, ale zahrnul jsem takéNATIVE_COMPILATION
, což znamená, že procedura je nativně zkompilovaná.Všimněte si také
ATOMIC WITH
blok. To je vyžadováno pro nativně kompilované uložené procedury.Tento kód vytvořil uloženou proceduru vázanou na schéma.
Chyba? Zkontrolujte tyto předpoklady
Nativně kompilované uložené procedury vyžadují, aby všechny podkladové tabulky byly tabulky optimalizované pro paměť.
Chcete-li vytvořit tabulky optimalizované pro paměť, musíte nejprve vytvořit skupinu souborů optimalizovanou pro paměť.
Zde je kód, který jsem použil k vytvoření skupiny souborů optimalizované pro paměť, jejího přidruženého souboru a tabulky optimalizované pro paměť, na kterou odkazuji v uložené proceduře:
ALTER DATABASE Test ADD FILEGROUP imoltp_test CONTAINS MEMORY_OPTIMIZED_DATA;GOALTER DATABASE Test PŘIDAT SOUBOR (name='imoltp_test1', filename='/var/opt/mssql/data/imoltp_test1.mdf';TACOLTBOTTBOGROUP]; [Cows]( [CowId] [int] IDENTITY(1,1) NOT NULL PRIMÁRNÍ KLÍČ NEZAHRNUTÝ, [CowName] [varchar](70) NULL, [Phone] [varchar](10) NULL) S (MEMORY_OPTIMIZED =ON , TRVALOST =SCHEMA_AND_DATA) GOPokud tedy chcete zkopírovat a vložit můj kód, musíte nejprve spustit tento a poté kód uložené procedury výše.
Všimněte si také, že používám SQL Server pro Linux, a proto cesty k souborům používají konvence Linuxu. Pokud vytváříte databázový soubor v systému Windows, budete jej muset změnit tak, aby používal konvenci cesty k souboru systému Windows (a ujistěte se, že používáte cestu k souboru, která existuje ve vašem systému).