Ако някога сте създавали UDF, обвързан със схема, ще знаете, че обвързването на схема е просто въпрос на добавяне на WITH SCHEMABINDING
според вашата дефиниция. Същото важи, когато създавате обвързан със схема изглед.
Съхранените процедури са малко по-различни.
Само компилираните съхранени процедури могат да бъдат свързани със схема. Всъщност компилираните в оригинал съхранени процедури трябва бъде обвързан със схема. Не можете да създадете собствено компилирана съхранена процедура, без да я обвърже със схема.
Но ако се опитате да обвържете схематично обикновена (некомпилирана) процедура, ще получите грешка.
Пример за съхранена процедура, обвързана със схема
Ето пример за създаване на съхранена процедура, свързана със схема (нативно компилирана).
СЪЗДАВАНЕ НА ПРОЦЕДУРА dbo.usp_GetCowsByName @cowname varchar(70)СЪС СВЪРЗВАНЕ НА СХЕМА, NATIVE_COMPILATIONASBEGIN ATOMIC WITH (НИВО НА ИЗОЛАЦИЯ НА ТРАНЗАКЦИЯТА =МОМЕНТАЛНА СНИМКА, LANGUAGE =N'us_english' ) , CowFrome dNawco. /предварително>Включих
WITH SCHEMABINDING
аргумент, но включих иNATIVE_COMPILATION
, което показва, че процедурата е компилирана.Също така обърнете внимание на
ATOMIC WITH
блок. Това е необходимо за компилираните съхранени процедури.Този код създаде съхранена процедура, свързана със схема.
Грешка? Проверете тези предпоставки
Естествено компилираните съхранени процедури изискват всички основни таблици да са оптимизирани за паметта.
За да създадете оптимизирани за памет таблици, първо трябва да създадете оптимизирана за памет файлова група.
Ето кода, който използвах, за да създам оптимизираната за памет файлова група, свързания с нея файл и таблицата, оптимизирана за памет, която позовавам в съхранената процедура:
ALTER DATABASE Test ADD FILEGROUP imoltp_test СЪДЪРЖА MEMORY_OPTIMIZED_DATA;GOALTER DATABASE Тест ДОБАВЯНЕ НА ФАЙЛ (name='imoltp_test1', filename='/var/opt/mssql/data/imoltp_test1.mdf') [GOALTER DATABASE] ДОБАВЯНЕ НА ФАЙЛ (име='imoltp_test1', filename='/var/opt/mssql/data/imoltp_test1.mdf') TMOltp_test1.mdf'; .[Крави]( [CowId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED, [CowName] [varchar](70) NULL, [Phone] [varchar](10) NULL) С (MEMORY_OPTIMIZED =ON) . , ТРАЙНОСТ =SCHEMA_AND_DATA)GOТака че, ако искате да копирате и поставите моя код, ще трябва първо да изпълните това, след това кода на съхранената процедура по-горе.
Също така имайте предвид, че използвам SQL Server за Linux и така пътеките на файловете използват конвенции за Linux. Ако създавате файл на база данни в Windows, ще трябва да го промените, за да използвате конвенцията за пътя на файловете на Windows (и не забравяйте да използвате пътека на файла, която съществува във вашата система).