Tìm hiểu cách thực thi một thủ tục được lưu trữ bằng cách sử dụng SQL Server Management Studio hoặc Transact-SQL.

Bạn đang xem : thủ tục lưu trữ cuộc gọi máy chủ sql

Thực thi một thủ tục đã lưu trữ

Trong bài viết này

Áp dụng cho: SQL Server (tất cả các phiên bản được hỗ trợ) Cơ sở dữ liệu Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Hệ thống phân tích nền tảng (PDW)

Bài viết này mô tả cách thực thi một thủ tục được lưu trữ trong SQL Server bằng cách sử dụng SQL Server Management Studio hoặc Transact-SQL.

Có hai cách khác nhau để thực hiện một thủ tục được lưu trữ. Cách tiếp cận đầu tiên và phổ biến nhất là cho một ứng dụng hoặc người dùng gọi thủ tục. Cách tiếp cận thứ hai là đặt thủ tục chạy tự động khi một phiên bản SQL Server khởi động. Khi một thủ tục được gọi bởi một ứng dụng hoặc người dùng, từ khóa Transact-SQL EXECUTE hoặc EXEC được nêu rõ ràng trong lệnh gọi. Thủ tục có thể được gọi và thực thi mà không cần từ khóa EXEC nếu thủ tục là câu lệnh đầu tiên trong lô Transact-SQL.

Trước khi bạn bắt đầu

Hạn chế và hạn chế

Đối chiếu cơ sở dữ liệu đang gọi được sử dụng khi khớp với tên thủ tục hệ thống. Vì lý do này, hãy luôn sử dụng trường hợp chính xác của tên thủ tục hệ thống trong các lệnh gọi thủ tục. Ví dụ: mã này sẽ không thành công nếu được thực thi trong ngữ cảnh của cơ sở dữ liệu có đối chiếu phân biệt chữ hoa chữ thường:

  EXEC SP_heLP; - Sẽ không giải quyết được vì SP_heLP không bằng sp_help
 

Để hiển thị tên thủ tục hệ thống chính xác, hãy truy vấn chế độ xem danh mục sys.system_objects sys.system_parameters .

Nếu một thủ tục do người dùng xác định có cùng tên với một thủ tục hệ thống, thì thủ tục do người dùng xác định có thể không bao giờ thực thi.

Khuyến nghị

Thực thi các thủ tục được lưu trữ của hệ thống

Thủ tục hệ thống bắt đầu bằng tiền tố sp_ . Bởi vì chúng xuất hiện một cách hợp lý trong tất cả các cơ sở dữ liệu do người dùng và hệ thống xác định, chúng có thể được thực thi từ bất kỳ cơ sở dữ liệu nào mà không cần phải đáp ứng đầy đủ tên thủ tục. Tuy nhiên, chúng tôi khuyên bạn nên định mức lược đồ cho tất cả các tên thủ tục hệ thống bằng tên lược đồ sys để tránh xung đột tên. Ví dụ sau minh họa phương pháp gọi một thủ tục hệ thống được khuyến nghị.

  EXEC sys.sp_who;
 

Thực thi các thủ tục được lưu trữ do người dùng xác định

Khi thực thi một thủ tục do người dùng xác định, chúng tôi khuyên bạn nên xác định tên thủ tục với tên lược đồ. Thực hành này giúp tăng hiệu suất một chút vì Công cụ cơ sở dữ liệu không phải tìm kiếm nhiều lược đồ. Nó cũng ngăn việc thực thi sai quy trình nếu cơ sở dữ liệu có các thủ tục trùng tên trong nhiều lược đồ.

Xem Thêm  JavaScript Xóa lớp (Trong 2 cách với ví dụ) - cách xóa lớp trong javascript

Ví dụ sau minh họa phương pháp được khuyến nghị để thực thi thủ tục do người dùng xác định. Lưu ý rằng thủ tục chấp nhận một tham số đầu vào. Để biết thông tin về cách chỉ định các tham số đầu vào và đầu ra, hãy xem Chỉ định tham số .

  SỬ DỤNG AdventureWorks2019;
ĐI
EXEC dbo.uspGetErantyeeManagers @BusinessEntityID = 50;
ĐI
 

-Hay-

  EXEC AdventureWorks2019.dbo.uspGetErantyeeManagers 50;
ĐI
 

Nếu quy trình không đủ tiêu chuẩn do người dùng xác định được chỉ định, Công cụ cơ sở dữ liệu sẽ tìm kiếm quy trình theo thứ tự sau:

  1. Lược đồ sys của cơ sở dữ liệu hiện tại.

  2. Lược đồ mặc định của người gọi nếu nó được thực thi theo lô hoặc trong SQL động. Hoặc, nếu tên thủ tục không đủ tiêu chuẩn xuất hiện bên trong nội dung của định nghĩa thủ tục khác, thì lược đồ chứa thủ tục khác này sẽ được tìm kiếm tiếp theo.

  3. Lược đồ dbo trong cơ sở dữ liệu hiện tại.

Tự động thực thi các thủ tục đã lưu trữ

Các thủ tục được đánh dấu để thực thi tự động được thực thi mỗi khi SQL Server khởi động và masterCơ sở dữ liệu được khôi phục trong quá trình khởi động đó. Việc thiết lập các thủ tục để thực thi tự động có thể hữu ích cho việc thực hiện các hoạt động bảo trì cơ sở dữ liệu hoặc để các thủ tục chạy liên tục như các quy trình nền. Một cách sử dụng khác để thực thi tự động là yêu cầu thủ tục thực hiện các tác vụ hệ thống hoặc bảo trì trong tempdb , chẳng hạn như tạo một bảng tạm thời chung. Điều này đảm bảo rằng một bảng tạm thời như vậy sẽ luôn tồn tại khi tempdb được tạo lại trong khi khởi động SQL Server.

Một thủ tục được thực thi tự động sẽ hoạt động với các quyền giống như các thành viên của vai trò máy chủ cố định sysadmin. Mọi thông báo lỗi do quy trình tạo ra đều được ghi vào nhật ký lỗi SQL Server.

Không có giới hạn về số lượng thủ tục khởi động mà bạn có thể có, nhưng lưu ý rằng mỗi thủ tục sử dụng một luồng công nhân trong khi thực thi. Nếu bạn phải thực hiện nhiều thủ tục khi khởi động nhưng không cần thực hiện chúng song song, hãy tạo một thủ tục làm thủ tục khởi động và yêu cầu thủ tục đó gọi các thủ tục khác. Điều này chỉ sử dụng một chuỗi công nhân.

Mẹo

Không trả về bất kỳ bộ kết quả nào từ một thủ tục được thực thi tự động. Vì quy trình đang được thực thi bởi SQL Server thay vì một ứng dụng hoặc người dùng, nên không có nơi nào để tập hợp kết quả.

Xem Thêm  kích thước phông chữ | Thủ thuật CSS - cỡ chữ css 1

Đặt, xóa và kiểm soát việc thực thi tự động

Chỉ quản trị viên hệ thống ( sa ) mới có thể đánh dấu một thủ tục để thực thi tự động. Ngoài ra, quy trình phải nằm trong cơ sở dữ liệu master , thuộc sở hữu của sa và không được có tham số đầu vào hoặc đầu ra.

Sử dụng sp_procoption để:

  1. Chỉ định một thủ tục hiện có làm thủ tục khởi động.

  2. Ngừng thực thi một thủ tục khi khởi động SQL Server.

Bảo mật

Để biết thêm thông tin, hãy xem EXECUTE AS (Transact-SQL) EXECUTE AS khoản (Transact-SQL) .

Quyền

Để biết thêm thông tin, hãy xem phần “Quyền” trong EXECUTE (Transact-SQL) .

Sử dụng SQL Server Management Studio

Thực thi một thủ tục đã lưu trữ

  1. Trong Object Explorer , kết nối với một phiên bản của SQL Server Database Engine, mở rộng phiên bản đó rồi mở rộng Cơ sở dữ liệu .

  2. Mở rộng cơ sở dữ liệu bạn muốn, mở rộng Khả năng lập trình và sau đó mở rộng Quy trình được lưu trữ .

  3. Nhấp chuột phải vào quy trình được lưu trữ do người dùng xác định mà bạn muốn và chọn Thực hiện quy trình đã lưu trữ .

  4. Trong hộp thoại Thủ tục Thực thi , chỉ định một giá trị cho mỗi tham số và liệu nó có chuyển giá trị null hay không.

    Thông số
    Cho biết tên của tham số.

    Loại dữ liệu
    Cho biết kiểu dữ liệu của tham số.

    Tham số đầu ra
    Cho biết đây có phải là tham số đầu ra hay không.

    Chuyển giá trị Null
    Chuyển NULL làm giá trị của tham số.

    Giá trị
    Nhập giá trị cho tham số khi gọi thủ tục.

  5. Để thực hiện quy trình đã lưu trữ, hãy chọn OK .

Sử dụng Transact-SQL

Thực thi một thủ tục đã lưu trữ

  1. Kết nối với Công cụ Cơ sở dữ liệu.

  2. Từ thanh Chuẩn, chọn Truy vấn mới .

  3. Sao chép và dán ví dụ sau vào cửa sổ truy vấn và chọn Thực thi . Ví dụ này cho thấy cách thực thi một thủ tục được lưu trữ yêu cầu một tham số. Ví dụ này thực thi thủ tục được lưu trữ uspGetErantyeeManagers với giá trị 6 được chỉ định làm tham số @EpriseeID .

  SỬ DỤNG AdventureWorks2019;
ĐI
EXEC dbo.uspGetErantyeeManagers 6;
ĐI
 

Đặt hoặc xóa một thủ tục để thực thi tự động

Các thủ tục khởi động phải nằm trong cơ sở dữ liệu master và không được chứa các tham số INPUT hoặc OUTPUT. Việc thực thi các quy trình đã lưu trữ sẽ bắt đầu khi tất cả cơ sở dữ liệu được khôi phục và thông báo “Khôi phục đã hoàn tất” được ghi khi khởi động.

Để biết thêm thông tin, hãy xem sp_procoption (Transact-SQL) .

  1. Kết nối với Công cụ Cơ sở dữ liệu.

  2. Từ thanh Chuẩn, chọn Truy vấn mới .

  3. Sao chép và dán ví dụ sau vào cửa sổ truy vấn và chọn Thực thi . Ví dụ này cho thấy cách sử dụng sp_procoption để đặt quy trình thực thi tự động.

 EXEC sp_procoption @ProcName = N '& lt; tên thủ tục & gt;'
    , @OptionName = 'startup'
    , @OptionValue = 'on';
ĐI
 

Dừng tự động thực thi một thủ tục

  1. Kết nối với Công cụ Cơ sở dữ liệu.

  2. Từ thanh Chuẩn, chọn Truy vấn mới .

  3. Sao chép và dán ví dụ sau vào cửa sổ truy vấn và chọn Thực thi . Ví dụ này cho thấy cách sử dụng sp_procoption để ngăn thủ tục tự động thực thi.

  EXEC sp_procoption @ProcName = N '& lt; tên thủ tục & gt;'
    , @OptionName = 'startup'
    , @OptionValue = 'tắt';
ĐI
 

Các bước tiếp theo

Xem Thêm  Tệp JSON là gì và bạn sử dụng chúng như thế nào? - tập tin json là gì


Xem thêm những thông tin liên quan đến chủ đề thủ tục lưu trữ cuộc gọi máy chủ sql

Tạo Function trong sql servre | Hàm Trong sql server | Giải đề SQL Đề 9 câu 3

  • Tác giả: Son Nguyen
  • Ngày đăng: 2018-06-12
  • Đánh giá: 4 ⭐ ( 9188 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mọi thắc mắc các bạn có thể liên hệ fb cá nhân: https://www.facebook.com/nhsonit
    Tham ra groups học cntt để thảo luận: https://www.facebook.com/groups/it2techone/

Stored Procedure In SQL

  • Tác giả: viblo.asia
  • Đánh giá: 4 ⭐ ( 7327 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: I. Khái Niệm Các câu lệnh SQL có thể được nhúng vào trong các ngôn ngữ lập trình, thông qua đó chuỗi các thao tác trên cơ sở dữ liệu được xác định và thực thi nhờ vào các câu lệnh, các cấu trúc điều…

Công thức, REST và Thủ tục SQL được lưu trữ

  • Tác giả: helpex.vn
  • Đánh giá: 3 ⭐ ( 9058 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Một trong những trụ cột chính của Espresso Logic là khả năng mở rộng sử dụng JavaScript để gọi các thủ tục được lưu trữ. Nhiều công ty có các ứng dụng COTS sử dụng các thủ tục được lưu trữ…

SQL Server: Thủ tục lưu trữ (SP)

  • Tác giả: final-blade.com
  • Đánh giá: 5 ⭐ ( 8236 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

SQL Server: Thủ tục lưu trữ (SP)

  • Tác giả: www.v1study.com
  • Đánh giá: 5 ⭐ ( 6012 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Thủ tục lưu trữ (Stored Procedure – SP) là một nhóm các lệnh Transact-SQL (T-SQL) đóng vai trò như một khối lệnh đơn dùng để thực hiện một công việc (tác

Thủ Tục Lưu Trữ (Stored procedure-P1)

  • Tác giả: expressmagazine.net
  • Đánh giá: 5 ⭐ ( 6940 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các hàm cập nhật, xóa, và một số ví dụ về cách sử dụng các hàm Store Procedure.

Thủ Tục Lưu Trữ SQL Cho SQL Server

  • Tác giả: www.codehub.com.vn
  • Đánh giá: 5 ⭐ ( 7529 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Thủ Tục Lưu Trữ Là Gì?
    ======================

    Một thủ tục được lưu trữ là một mã SQL được chuẩn bị mà bạn có thể lưu, do đó, mã có thể được tái sử dụng nhiều lần.

    Vì vậy, nếu bạn có một truy vấn SQL mà…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php