/ / SQL Server 2000 i zapytania SQL Server 2008 - sql, sql-server-2008, sql-server-2000

Kwerendy SQL Server 2000 i SQL Server 2008 - sql, sql-server-2008, sql-server-2000

Testujemy procedurę na serwerze sql 2008. Ta procedura ma tylko następujące kwerendy usuwania.

delete from dbo.tgrid_detl
where SOURCE_KEY in (
SELECT tg.SOURCE_KEY
FROM dbo.tgrid_detl tg
WHERE NOT EXISTS
(select *
FROM dbo.tgrid_stagging s,dbo.tgrid_detl tg
where cast(s.SUBMISSION_NO as varchar(18)) +
cast(year(s.POLICY_EFCTV_DT)as varchar) +
s.PRODCT_COVG_TYP_CD +
s.UW_SYSTEM_ID +
s.PRODUCT_ABBR +
s.PRODUCT_CD = tg.source_key
)
and tg.F_TRANS_CD = "N"
and tg.UPDATE_ID is null
and tg.COMMENTS_UPDATE_DT is null
and tg.SOURCE_ID = "EDW_SUB"
)

Działa to dobrze na serwerze SQL 2000, ale nie powoduje usunięcia wiersza w serwerze sql 2008. Czy możesz prosić o radę w tej sprawie. Dzięki.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie ma bezpośredniego powodu, dla którego powinien zachowywać się inaczej. Spróbuj uruchomić to zapytanie na obu, aby porównać zestawy wyników:

SELECT *
FROM dbo.tgrid_detl
WHERE SOURCE_KEY in (
SELECT tg.SOURCE_KEY
FROM dbo.tgrid_detl tg
WHERE NOT EXISTS
(select *
FROM dbo.tgrid_stagging s,dbo.tgrid_detl tg
where cast(s.SUBMISSION_NO as varchar(18)) +
cast(year(s.POLICY_EFCTV_DT)as varchar) +
s.PRODCT_COVG_TYP_CD +
s.UW_SYSTEM_ID +
s.PRODUCT_ABBR +
s.PRODUCT_CD = tg.source_key
)
and tg.F_TRANS_CD = "N"
and tg.UPDATE_ID is null
and tg.COMMENTS_UPDATE_DT is null
and tg.SOURCE_ID = "EDW_SUB"
);

Jeśli wyniki są takie same, masz inny problem konfiguracyjny na serwerze SQL 2K8. Prawa dostępu do usuwania ze stołu to pierwsze, co przychodzi mi do głowy.