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

Vòng lặp kích hoạt máy chủ SQL

Tôi không khuyên bạn nên tắt trình kích hoạt một cách rõ ràng trong quá trình xử lý - điều này có thể gây ra các tác dụng phụ lạ.

Cách đáng tin cậy nhất để phát hiện (và ngăn chặn) các chu kỳ trong trình kích hoạt là sử dụng CONTEXT_INFO() .

Ví dụ:

CREATE TRIGGER tr_Table1_Update
ON Table1
FOR UPDATE AS

DECLARE @ctx VARBINARY(128) 
SELECT @ctx = CONTEXT_INFO() 
IF @ctx = 0xFF
    RETURN

SET @ctx = 0xFF

-- Trigger logic goes here

Xem liên kết này để có một ví dụ chi tiết hơn.

Ghi chú về CONTEXT_INFO() trong SQL Server 2000:

Thông tin ngữ cảnh được hỗ trợ nhưng rõ ràng là CONTEXT_INFO chức năng không. Bạn phải sử dụng cái này để thay thế:

SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID


  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ách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng CONVERT ()

  2. Định cấu hình vận chuyển nhật ký máy chủ SQL

  3. SQL động - EXEC (@SQL) so với EXEC SP_EXECUTESQL (@SQL)

  4. Không sử dụng sp_depends trong SQL Server (nó không được dùng nữa)

  5. Làm cách nào để kết nối với cơ sở dữ liệu bên ngoài từ câu lệnh sql hoặc thủ tục được lưu trữ?