Nếu bạn đã từng tạo UDF liên kết lược đồ, bạn sẽ biết rằng việc liên kết lược đồ chỉ là việc thêm WITH SCHEMABINDING
theo định nghĩa của bạn. Điều tương tự cũng áp dụng khi bạn tạo chế độ xem liên kết giản đồ.
Các thủ tục được lưu trữ hơi khác một chút.
Chỉ các thủ tục được lưu trữ được biên dịch nguyên bản mới có thể bị ràng buộc lược đồ. Trên thực tế, các thủ tục được lưu trữ được biên dịch nguyên bản phải bị ràng buộc giản đồ. Bạn không thể tạo một thủ tục được lưu trữ được biên dịch nguyên bản mà không có lược đồ ràng buộc nó.
Nhưng nếu bạn cố gắng liên kết lược đồ với một thủ tục thông thường (không được biên dịch nguyên bản), bạn sẽ gặp lỗi.
Ví dụ về thủ tục lưu trữ đường ràng buộc của lược đồ
Dưới đây là một ví dụ về cách tạo quy trình lưu trữ liên kết lược đồ (được biên dịch nguyên bản).
TẠO QUY TRÌNH Dbo.usp_GetCowsByName @cowname varchar (70) VỚI SCHEMABINDING, NATIVE_COMPILATIONASBEGIN ATOMIC VỚI (CẤP ĐỘ GIAO DỊCH =SNAPSHOT, LANGUAGE =N'us_english ') SELECT CowId, CowName, Phone / pre>Tôi đã bao gồm
WITH SCHEMABINDING
đối số, nhưng tôi cũng đã bao gồmNATIVE_COMPILATION
, chỉ ra rằng thủ tục được biên dịch nguyên bản.Cũng lưu ý
ATOMIC WITH
khối. Điều này là bắt buộc đối với các thủ tục được lưu trữ được biên dịch nguyên bản.Mã này đã tạo một thủ tục được lưu trữ liên kết với lược đồ.
Lỗi? Kiểm tra các Điều kiện tiên quyết này
Các thủ tục được lưu trữ được biên dịch tự nhiên yêu cầu mọi bảng bên dưới phải là bảng được tối ưu hóa bộ nhớ.
Để tạo các bảng được tối ưu hóa bộ nhớ, trước tiên bạn phải tạo một nhóm tệp được tối ưu hóa cho bộ nhớ.
Đây là mã tôi đã sử dụng để tạo nhóm tệp được tối ưu hóa bộ nhớ, tệp được liên kết với nó và bảng được tối ưu hóa bộ nhớ mà tôi tham chiếu trong quy trình được lưu trữ:
Kiểm tra CƠ SỞ DỮ LIỆU THÊM FILEGROUP imoltp_test CONTAINS MEMORY_OPTIMIZED_DATA; MỤC TIÊU KIỂM TRA CƠ SỞ DỮ LIỆU THÊM TẬP TIN (name ='imoltp_test1', filename ='/ var / opt / mssqtest / data / imoltp_test1.mdf] . [Cows] ([CowId] [int] IDENTITY (1,1) NOT NULL PRIMARY KEY NONCLUSTERED, [CowName] [varchar] (70) NULL, [Phone] [varchar] (10) NULL) VỚI (MEMORY_OPTIMIZED =ON , DURABILITY =SCHEMA_AND_DATA) ĐIVì vậy, nếu bạn muốn sao chép và dán mã của tôi, trước tiên bạn cần chạy mã này, sau đó chạy mã thủ tục được lưu trữ ở trên.
Cũng xin lưu ý rằng tôi đang sử dụng SQL Server cho Linux và do đó, các đường dẫn tệp sử dụng các quy ước của Linux. Nếu đang tạo tệp cơ sở dữ liệu trên Windows, bạn sẽ cần thay đổi tệp đó để sử dụng quy ước đường dẫn tệp Windows (và đảm bảo sử dụng đường dẫn tệp tồn tại trên hệ thống của bạn).