Sql-Server

查找呼叫儲存過程的SSIS包

  • February 21, 2019

我們正在嘗試將錯誤擷取到錯誤日誌表中,如下所示。我們有很多 Master SSIS 包,呼叫了很多儲存過程。

以下程式碼將登錄到錯誤日誌表。是否有 SQL 保留關鍵字來查找執行儲存過程的 SSIS 包?

insert into dbo.ErrorLogData
(
   ErrorNumber 
   ,ErrorDescription 
   ,ErrorProcedure 
   ,ErrorState 
   ,ErrorSeverity 
   ,ErrorLine 
   ,ErrorTime 
   ,SSISPackage --???
)
VALUES
(
   ERROR_NUMBER()
   ,ERROR_MESSAGE()
   ,ERROR_PROCEDURE()
   ,ERROR_STATE()
   ,ERROR_SEVERITY()
   ,ERROR_LINE()
   ,GETDATE()  
   -- what is reserved keyword for SSIS package?
);

SQL Server:儲存過程中的錯誤記錄和報告

據我所知,沒有提供包名稱的內置函式。我認為您最接近的是使用APP_NAME函式。這確實取決於作為連接字元串的一部分傳遞的參數以指定名稱 - 這意味著它可以隨時更改,但從積極的方面來說,它也意味著它可以像您需要的那樣靈活。

但是,由於它是在客戶端設置的,因此文件確實帶有以下警告:

客戶端提供應用名稱,APP_NAME 不以任何方式驗證應用名稱值。不要將 APP_NAME 用作安全檢查的一部分。

但是,如果客戶端確實在連接中設置了值,這就是您會得到的結果(使用上面連結中的 Sql Server Management Studio 的範例):

USE AdventureWorks2012;  
GO  
IF APP_NAME() = 'Microsoft SQL Server Management Studio - Query'  
PRINT 'This process was started by ' + APP_NAME() + 
     '. The date is ' + CONVERT ( varchar(100) , GETDATE(), 101) + '.';  
ELSE   
PRINT 'This process was started by ' + APP_NAME() + 
     '. The date is ' + CONVERT ( varchar(100) , GETDATE(), 102) + '.';  
GO 

引用自:https://dba.stackexchange.com/questions/230431