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

Phạm vi của CONTEXT_INFO trong SQL Server là gì?

Thông tin ngữ cảnh không có phạm vi (theo nghĩa là phạm vi biến ngôn ngữ) và bị ràng buộc với thời gian tồn tại của phiên. Sau khi được đặt, thông tin ngữ cảnh vẫn ở giá trị đã đặt cho đến khi kết nối bị đóng (phiên kết thúc) hoặc cho đến khi một giá trị mới được đặt. Vì việc thực thi trên một phiên là luôn luôn tuần tự, không có câu hỏi về sự đồng thời.

NẾU bạn đặt thông tin ngữ cảnh trong một thủ tục, bất kỳ trình kích hoạt nào được thực thi sau đó trên phiên đó sẽ thấy giá trị thông tin ngữ cảnh mới được đặt. Đặt giá trị id người dùng trong thông tin ngữ cảnh, như bạn đề xuất và sử dụng nó trong trình kích hoạt là ví dụ điển hình của việc sử dụng thông tin ngữ cảnh và hoàn toàn an toàn về tính đồng thời, vì về cơ bản không có đồng thời để nói đến. Nếu bạn định đặt thông tin ngữ cảnh trong một quy trình được lưu trữ và sau đó dựa vào thông tin đó trong một trình kích hoạt chạy do các lần xóa xảy ra trong quy trình đã nói, thì lô của bạn vẫn chưa hoàn thành, theo bài viết bạn đã liên kết, bạn truy xuất thông tin conetxt từ sys.dm_exec_requests DMV hoặc từ CONTEXT_INFO() hàm số. Nó sẽ chưa được đẩy vào sys.dm_exec_sessions , điều đó chỉ có thể xảy ra sau khi bạn thoát khỏi quy trình đã lưu trữ và kết thúc bất kỳ lệnh gọi nào khác trong lô T-SQL được gửi đến máy chủ ('yêu cầu').



  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ác cách khác nhau để so sánh lược đồ và dữ liệu bảng SQL Server

  2. Tại sao SQL Server không xử lý mã này thất thường?

  3. Cách tốt nhất để kiểm tra kết nối SQL Server theo chương trình là gì?

  4. kết hợp các trường Ngày và Giờ thành DateTime, SQL Server 2008

  5. Một khóa ngoại linh hoạt