2012-07-07 32 views
0

我有一個酒店表。SSIS查找,爲不匹配輸出創建新記錄並獲取新生成的密鑰

create table DimHotel 
(
    Hotel_ID int Identity(1, 1), 
    HotelName nvarchar(max) 
) 

現在我得到一些飼料爲HotelNames,現在我們的業務邏輯是使用Hotel_ID現有HotelName和創造HotelName新紀錄是新的,使用新生成HOTEL_ID。現在我明白了,我可以將「查找不匹配輸出」直接指向OLE DB命令轉換,但是接下來我如何獲得新生成的密鑰。 一個選項是在DimHotel桌面上再做一次查找(我猜這很愚蠢,兩次掃描一張桌子)。我們還有什麼其他選擇。

我可以使用但合併聲明,但我們的ETL團隊想要避免手動編碼。

回答

2

我認爲最好使用一個存儲過程來檢索SCOPE_IDENTITY作爲輸出參數。

實施例: -

 Create Procedure 
    (
     column names , 
     @id int 
    ) 
    AS 
    BEGIN 
    INSERT INTO TableName VALUES (@col1) 
    SELECT @id = SCOPE_IDENTITY() 
    END 
相關問題