Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tạo thủ tục lưu trữ liên kết lược đồ trong SQL Server

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ồm NATIVE_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) ĐI 

Vì 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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cửa hàng truy vấn SQL Server

  2. Khắc phục:“Không thể thực hiện ĐĂNG NHẬP SAO LƯU vì không có bản sao lưu cơ sở dữ liệu hiện tại.” trong SQL Server / SQL Edge

  3. Di chuyển Cơ sở dữ liệu SQL Server sang Đám mây

  4. Thêm danh tính AppPool IIS 7 làm nhật ký máy chủ SQL

  5. Sao chép dữ liệu từ Salesforce sang SQL Server với Spectral Core