Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да създадете свързана към схема съхранена процедура в SQL Server

Ако някога сте създавали 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 (и не забравяйте да използвате пътека на файла, която съществува във вашата система).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете заглавките на колоните при изпращане по имейл на резултатите от заявката в SQL Server (T-SQL)

  2. Динамично маскиране на данни в SQL Server за начинаещи

  3. Сравнение на типовете данни за дата и час в SQL Server

  4. Поправка:„BACKUP LOG не може да се извърши, защото няма текущо архивиране на базата данни.“ в SQL Server/SQL Edge

  5. Как да промените колона от Null на Not Null в таблицата на SQL Server - SQL Server / T-SQL урок, част 52