Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да внедрите регистриране и докладване на грешки в SQL съхранени процедури?

Това няма да ви помогне в момента, но може да представлява интерес за хора, използващи SQL Server 2008. В SQL Server 2008 XEvents може да се използва за регистриране на всички подробности за грешка (включително текст на изявление) на централно място.

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='ErrorLogger')
    DROP EVENT SESSION [ErrorLogger] ON SERVER;
CREATE EVENT SESSION [ErrorLogger]
ON SERVER
ADD EVENT sqlserver.error_reported(
     ACTION (sqlserver.sql_text)
     WHERE (([severity]>(10))))
ADD TARGET package0.asynchronous_file_target(
     SET filename='c:\temp\error_logger.xel', metadatafile='c:\temp\error_logger.xem')
WITH (MAX_MEMORY = 4096KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, 
MAX_DISPATCH_LATENCY = 30 SECONDS, MAX_EVENT_SIZE = 0KB, 
MEMORY_PARTITION_MODE = NONE, TRACK_CAUSALITY = OFF, STARTUP_STATE = ON)

ALTER EVENT SESSION [ErrorLogger] ON SERVER STATE = START

И за преглед на грешките

SELECT CONVERT (XML, event_data) AS data
        FROM sys.fn_xe_file_target_read_file ('C:\Temp\error_logger*.xel', 'C:\Temp\error_logger*.xem', NULL, NULL)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да определите стойността на полето, която не може да се преобразува в (десетична, float,int) в SQL Server

  2. Защо в плана ми за изпълнение се показва нещо?

  3. Въведение във временните таблици в SQL Server

  4. Как работи операторът IF в SQL Server

  5. Извличане на последния запис във всяка група от база данни - SQL Server 2005/2008