Sql-Server
查找呼叫儲存過程的SSIS包
我們正在嘗試將錯誤擷取到錯誤日誌表中,如下所示。我們有很多 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? );
據我所知,沒有提供包名稱的內置函式。我認為您最接近的是使用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