Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Membuat Prosedur Tersimpan Terikat Skema di SQL Server

Jika Anda pernah membuat skema terikat UDF, Anda akan tahu bahwa pengikatan skema itu hanya masalah menambahkan WITH SCHEMABINDING untuk definisi Anda. Hal yang sama berlaku saat Anda membuat tampilan terikat skema.

Prosedur tersimpan sedikit berbeda.

Hanya prosedur tersimpan yang dikompilasi secara asli yang dapat terikat skema. Faktanya, prosedur tersimpan yang dikompilasi secara asli harus terikat skema. Anda tidak dapat membuat prosedur tersimpan yang dikompilasi secara native tanpa skema yang mengikatnya.

Tetapi jika Anda mencoba untuk mengikat skema prosedur reguler (tidak dikompilasi secara asli), Anda akan mendapatkan kesalahan.

Contoh Schema Bound Stored Procedure

Berikut ini contoh pembuatan prosedur tersimpan yang terikat skema (dikompilasi secara native).

BUAT PROSEDUR dbo.usp_GetCowsByName @cowname varchar(70)DENGAN SCHEMABINDING, NATIVE_COMPILATIONASBEGIN ATOMIC WITH ( TRANSACTION ISOLATION LEVEL =SNAPSHOT, LANGUAGE =N'us_english' ) SELECT CowId; SELECT CowId; /pra> 

Saya telah menyertakan WITH SCHEMABINDING argumen, tetapi saya juga menyertakan NATIVE_COMPILATION , yang menunjukkan bahwa prosedur dikompilasi secara asli.

Perhatikan juga ATOMIC WITH memblokir. Ini diperlukan untuk prosedur tersimpan yang dikompilasi secara asli.

Kode ini membuat prosedur tersimpan terikat skema.

Kesalahan? Periksa Prasyarat ini

Prosedur tersimpan yang dikompilasi secara native mengharuskan tabel yang mendasarinya adalah tabel yang dioptimalkan memori.

Untuk membuat tabel dengan memori yang dioptimalkan, Anda harus terlebih dahulu membuat filegroup dengan memori yang dioptimalkan.

Berikut kode yang saya gunakan untuk membuat filegroup dengan memori yang dioptimalkan, file terkaitnya, dan tabel dengan memori yang dioptimalkan yang saya rujuk dalam prosedur tersimpan:

Uji DATABASE ALTER ADD FILEGROUP imoltp_test CONTAINS MEMORY_OPTIMIZED_DATA;GOALTER DATABASE Tes TAMBAHKAN FILE (name='imoltp_test1', filename='/var/opt/mssql/data/imoltp_test1.mdf') TO FILEGROUP .[Cows]( [CowId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED, [CowName] [varchar](70) NULL, [Phone] [varchar](10) NULL) WITH (MEMORY_OPTIMIZED =ON , DURABILITY =SCHEMA_AND_DATA)GO

Jadi jika Anda ingin menyalin dan menempelkan kode saya, Anda harus menjalankan ini terlebih dahulu, lalu kode prosedur tersimpan di atas.

Perhatikan juga bahwa saya menggunakan SQL Server untuk Linux, sehingga jalur file menggunakan konvensi Linux. Jika Anda membuat file database di Windows, Anda harus mengubahnya untuk menggunakan konvensi jalur file Windows (dan pastikan untuk menggunakan jalur file yang ada di sistem Anda).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana OBJECTPROPERTYEX() Bekerja di SQL Server

  2. Siapkan VM baru untuk SQL Server 2014 CTP1

  3. Mengubah Prioritas Akun dalam Database Mail Profile (SSMS)

  4. Cara menghasilkan Pernyataan Sisipkan dari File Teks untuk Tabel SQL Server di SQL Server - Tutorial SQL Server / TSQL Bagian 106

  5. Cara membagi string dan memasukkan nilai ke dalam tabel di SQL Server