2010-04-07 81 views
0

我們從SQL Server 2005數據庫和表開始。 [UPDATE,INSERT和DELETE]在這種情況下,當應用程序(VB6)數據表被修改時,我們使用UPDATE觸發器將行插入審計tbl(s)。我們將審計表移至SQL Server 2008.我們將原始([FHA-4])修改爲新的(SQL Server 2008 [FHA-DMZ- CL1SQL])服務器名稱。SQL Server 2005觸發了將審計表移動到SQL Server 2008,現在觸發器在嘗試將行插入審計表時沒有響應

當觸發器被激活時,小時玻璃會一直亮着,直到sql超時消息出現並且應用程序中止。在檢查審計表時,沒有添加任何新內容,因此插入無效。

下面是表的實際觸發聲明:

USE [BCC_DHMH] 
GO 
/****** Object: Trigger [dbo].[TriggerAddressUpdate] Script Date: 04/07/2010  09:47:34 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

--Logic to save to the table that supports Tripwire 
ALTER  TRIGGER [dbo].[TriggerAddressUpdate] 
    ON [dbo].[tblAddress] 
    AFTER UPDATE 
AS 

SET XACT_ABORT ON 
BEGIN DISTRIBUTED TRANSACTION 
SET NOCOUNT ON; 

--IF (SYSTEM_USER <> 'FHA\kYarberough' AND SYSTEM_USER <> 'FHA\ljlee' AND SYSTEM_USER <> 'FHA\PHarvey' AND SYSTEM_USER <> 'FHA\BShenosky' AND SYSTEM_USER <> 'FHA\BBrodie' AND SYSTEM_USER <> 'FHA\DRandolph') 
Declare @UpdateID as varchar(50) 
Set @UpdateID = newid() 

BEGIN 

INSERT [FHA-4].[ECMS_Audit].[dbo].[tblAddress_Audit] 
    ([fldAddressOwnerID], [fldUpdateID], [fldAddressTypeCode], [fldAddressMailcode], [fldAddressSequence], 
[fldAddressID], [fldName], [fldLine1], [fldLine2], [fldCity], [fldState], [fldCounty], 
[fldZipcode], [fldWorkFax], [fldWorkPhone], [fldWorkExtension], [fldWorkEMail], [fldHomePhone], 
[fldHomeEMail], [fldContactName], [fldContactPhone], [fldContactFax], [fldContactExtension], [fldEffectiveDate], 
[fldExpirationDate], [fldUpdateTimestamp], [fldUpdateUserID], [fldRelationship], [fldNotes], [fldNCPDPNum], 
[fldMedicaidNum], [fldStoreNum], 
    [ModifiedBySqlUser], [ModifiedByNTUser], [ModifiedDate], [Action]) 
SELECT [fldAddressOwnerID], @UpdateID, [fldAddressTypeCode], [fldAddressMailcode], [fldAddressSequence], 
[fldAddressID], [fldName], [fldLine1], [fldLine2], [fldCity], [fldState], [fldCounty], 
[fldZipcode], [fldWorkFax], [fldWorkPhone], [fldWorkExtension], [fldWorkEMail], [fldHomePhone], 
[fldHomeEMail], [fldContactName], [fldContactPhone], [fldContactFax], [fldContactExtension], [fldEffectiveDate], 
[fldExpirationDate], [fldUpdateTimestamp], [fldUpdateUserID], [fldRelationship], [fldNotes], [fldNCPDPNum], 
[fldMedicaidNum], [fldStoreNum], 
    CURRENT_USER, SYSTEM_USER, GETDATE(), 'InitialValues' FROM deleted 


INSERT [FHA-4].[ECMS_Audit].[dbo].[tblAddress_Audit] 
    ([fldAddressOwnerID], [fldUpdateID], [fldAddressTypeCode], [fldAddressMailcode], [fldAddressSequence], 
[fldAddressID], [fldName], [fldLine1], [fldLine2], [fldCity], [fldState], [fldCounty], 
[fldZipcode], [fldWorkFax], [fldWorkPhone], [fldWorkExtension], [fldWorkEMail], [fldHomePhone], 
[fldHomeEMail], [fldContactName], [fldContactPhone], [fldContactFax], [fldContactExtension], [fldEffectiveDate], 
[fldExpirationDate], [fldUpdateTimestamp], [fldUpdateUserID], [fldRelationship], [fldNotes], [fldNCPDPNum], 
[fldMedicaidNum], [fldStoreNum], 
    [ModifiedBySqlUser], [ModifiedByNTUser], [ModifiedDate], [Action]) 
SELECT [fldAddressOwnerID], @UpdateID, [fldAddressTypeCode], [fldAddressMailcode], [fldAddressSequence], 
[fldAddressID], [fldName], [fldLine1], [fldLine2], [fldCity], [fldState], [fldCounty], 
[fldZipcode], [fldWorkFax], [fldWorkPhone], [fldWorkExtension], [fldWorkEMail], [fldHomePhone], 
[fldHomeEMail], [fldContactName], [fldContactPhone], [fldContactFax], [fldContactExtension], [fldEffectiveDate], 
[fldExpirationDate], [fldUpdateTimestamp], [fldUpdateUserID], [fldRelationship], [fldNotes], [fldNCPDPNum], 
[fldMedicaidNum], [fldStoreNum], 
    CURRENT_USER, SYSTEM_USER, GETDATE(), 'NewValues' FROM inserted 
END 

COMMIT TRANSACTION 
SET XACT_ABORT OFF 

回答

3

以及該觸發器似乎有老的名字給我。但是,如果它確實有新的名稱...嗯...

既然是一個分佈式事務,你確定你的鏈接服務器設置是否正確?

而且我寧願不使用分佈式事務在觸發器,它可能會影響用戶能夠更改記錄,如果其他的服務器已關閉。將記錄發送到同一臺服務器上的審計表或運行作業以將記錄移動到其他服務器的臨時表中更好。