2
작업하기 위해 특정 테이블이 있어야하는 SSIS가 있습니다. 따라서 "SQL 실행 태스크"패키지를 만들었습니다.이 패키지는 테이블이 존재하는지 여부를 먼저 확인하고 특정 수의 열을 가지고 있습니다. 그렇지 않으면 기존 테이블을 삭제 한 다음 필요한 열로 다시 만듭니다. 결론 내 SQL 스크립트 (같은 "SQL 작업을 실행"패키지)이 보이는 것입니다 :SSIS 패키지에서 테이블 삭제 및 다시 작성
declare @nr integer;
set @nr=(select COUNT (*)
from dbo.syscolumns
where id= (select id
from dbo.sysobjects
where id = object_id(N'[bogdan].[dbo].[my_table]')
and OBJECTPROPERTY(id, N'IsUserTable') = 1));
if (@nr<>10 and @nr<>0) /*to verify if my_table exists and has the required number of colums - 10 */
drop table [bogdan].[dbo].[my_table]
go
declare @nr1 integer;
set @nr1=(select count(*)
from dbo.sysobjects
where id = object_id(N'[bogdan].[dbo].[My_table]')
and OBJECTPROPERTY(id, N'IsUserTable') = 1);
if @nr1=0
create table bogdan.dbo.my_table (....) on [PRIMARY]
go
/*end of script*/
문제는 그 내가 거기,을 (위의 예에서 MY_TABLE) 테이블을 떨어 뜨린 경우에도 sysobjects에서 여전히 "my_table"이라는 객체입니다. @ nr1 변수는 0 대신 값 1을 가지므로 if 절이 실행되지 않으므로 필요한 구조의 테이블이 만들어지지 않습니다.
힌트가 있습니까?
감사합니다,
당신은 확실히 테이블이 삭제되고 있습니까? '@nr = 10'이면? @nr이 0이 아니고 @nr이 10이 아닌 경우에만 드롭합니다. –
예, 확실합니다. 나는 Sql Server로부터 자신을 포기했다. @ nr = 10 인 경우 존재하고 오른쪽 열이 있기 때문에 아무 것도하지 않아야합니다. – BogdanM
@BogdanM : 귀하의 질의가 완벽합니다. 그것은 작동해야합니다. 가능하면 원래 검색어를 게시하십시오. 그것은 우리가이 문제를 발견하는 데 도움이 될 것입니다. – Maximus