PRINT用於記錄和調試目的,不應該用於返回任何內容給調用者。
這裏有一個建議:寫入一個日誌表並返回一個日誌ID,而不是PRINTing。然後,從您的應用程序中查詢此表並寫入文件。
實例:創建兩個表
CREATE TABLE Logging
(
LoggingID int IDENTITY(1,1) PRIMARY KEY,
Created datetime
)
CREATE TABLE LoggingDetail
(
LoggingDetailID int IDENTITY(1,1) PRIMARY KEY,
LoggingID int FOREIGN KEY REFERENCES Logging,
LoggingText varchar(500)
)
在事務開始時,創建一個新的loggingID:
INSERT INTO Logging (Created) VALUES (GETUTCDATE())
DECLARE @loggingID INT = @@IDENTITY
而不是打印的記錄形式交往的,這樣做
INSERT INTO LoggingDetail (LoggingID, LoggingText) VALUES (@loggingID,
'-- Start Transection--')
在存儲過程結束時,將@loggingID返回給調用者。現在,您可以檢索來自LoggingDetail表的日誌信息,並將其寫入文件:
SELECT LoggingText FROM LoggingDetail WHERE LoggingID=<loggingID> ORDER BY LoggingDetailID
可能被封裝在單獨的存儲過程中插入一個好主意。那些sprocs然後可以寫入日誌表和 PRINT日誌消息。
來源
2012-11-24 06:04:41
Max