2013-06-14 3 views
0

SQL Server에 여러 필드가있는 테이블이 있습니다. 두 가지는 IDNumber이고 Resolved (Date) Resolved는 SQL Server에서 Null입니다. 그런 다음 IDNumber 및 Resolved (Date) 데이터를 가져 와서 테이블을 가져오고 업데이트합니다. 일치하는 IDNumber를 찾고 업데이트 된 해결 날짜를 넣길 원합니다. 어떻게해야합니까?SSIS 특정 열 업데이트

감사합니다.

+0

그래서 당신은, SSIS에서 IDNumber은 다음 테이블에 해결 추가 일치 싶어? 내가 너를 정확하게 읽고 있는지 확인하고있어. –

+0

예 그냥 ID를 일치시키고 해결 된 것을 첨부하십시오 –

답변

6

업데이트를 수행 할 때 SSIS는 한 번에 한 행을 업데이트하므로 비용이 많이 듭니다.

IF (OBJECT_ID(N'dbo.tmpIDNumberStaging') IS NOT NULL 
    DROP TABLE dbo.tmpIDNumberStaging; 

CREATE TABLE dbo.tmpIDNumberStaging 
(  IDNumber INT NOT NULL, 
     Resoved  DATE NOT NULL 
); 

그런 다음 소스가 무엇인지 (확실하지 않은이 테이블에 데이터를 가져올 데이터 흐름 태스크를 사용하지만, 목적지가 OLE DB Destination 될 것이다 : 나는 준비 테이블을 생성하는 SQL 실행 작업을 사용하도록 권합니다. 데이터 흐름 작업의 "지연 유효성 검사"를 false로 설정하거나 런타임에 대상이 만들어지기 때문에 대상에서 "외부 메타 데이터의 유효성 검사"를 false로 설정해야 할 수도 있습니다.

마지막으로 메인 테이블을 업데이트하려면이 준비 테이블을 사용 (및 청소 준비 테이블을 드롭)

UPDATE YourMainTable 
SET  Resolved = st.Resolved 
FROM YourMainTable t 
     INNER JOIN dbo.tmpIDNumberStaging st 
      ON st.IDNumber = t.IDNumber 
WHERE t.Resolved IS NULL; 

-- CLEAN UP AND DROP STAGING TABLE 
IF (OBJECT_ID(N'dbo.tmpIDNumberStaging') IS NOT NULL 
    DROP TABLE dbo.tmpIDNumberStaging; 
+0

이것은 또한 트릭을 할 것입니다. 스테이징 테이블은 좋은 생각이며, 생각하지 않았습니다. –

+0

훌륭한 전략! 최근에 테이블의 여러 행에 대한 열 값을 업데이트하는 데이 방법을 사용했는데이 전략은 매우 효율적이었습니다. 감사. – gurkan