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

Gỡ lỗi sql động dài trong SQL Server 2008

Khi buộc phải sử dụng sql động trong một proc được lưu trữ, chúng tôi thực hiện như sau. thêm một biến đầu vào của gỡ lỗi là một trường bit. Nếu nó là 0, trạng thái thực thi sẽ xử lý nếu nó là 1 thì thay vào đó bạn sẽ nhận được một câu lệnh in. Tôi đề nghị bạn làm một cái gì đó simliar để gỡ lỗi. Thay vì thực thi, hãy in kết quả SQL của bạn hoặc có thể chèn SQl vào một bảng vì nó dường như đang xảy ra trong một vòng lặp. Sau đó, bạn có thể xem qua sql đã được xây dựng và xem nó đã sai ở đâu.

Declare debug bit
set debug = 1

...
if debug = 1 Begin     Print @SQL End
Else 
Begin Exec (@sql) End

Ngoài ra

Tạo một bảng có tên mydynamiccode_logging (với cột sql có cùng độ dài với trạng thái sql tối đa, cột rundatecolumn và bất kỳ cột nào khác mà bạn có thể thấy cần thiết (tôi sẽ xem xét các biến đầu vào được sử dụng để tạo nên trạng thái sql, người dùng, ứng dụng nếu nhiều người sử dụng đoạn mã này)

Trước khi bạn chạy trạng thái thực thi, hãy chạy một cái gì đó như sau:

insert mydynamiccode_logging (sql, rundate)
values (@sql, getdate()) 

Bây giờ bạn cũng có thể thêm trường bit gỡ lỗi và chỉ ghi nhật ký khi bạn đã thay đổi nó sang chế độ gỡ lỗi hoặc bạn luôn có thể ghi nhật ký, tùy thuộc vào hệ thống và thời gian cần thêm để thực hiện điều này cũng như mức độ hoạt động của phần còn lại của hệ thống. Bạn không muốn làm chậm sản phẩm đáng kể bằng cách ghi nhật ký.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. máy chủ sql - kiểm tra xem có thể truyền được không

  2. Phiên bản có tên SQL Server với dự án Visual Studio 2017 Installer

  3. Quyền truy cập chỉ đọc vào nội dung thủ tục được lưu trữ

  4. MS SQL ping máy chủ bên ngoài

  5. Toán tử IN SQL