SQL Server 2000 и SQL Server 2008 запросы - PullRequest
0 голосов
/ 19 сентября 2011

Мы тестируем процедуру в SQL Server 2008 года. Эта процедура имеет только следующий запрос на удаление.

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'
)

Это нормально работает на сервере SQL 2000, но не удаляет строки на сервере SQL 2008. Не могли бы вы, пожалуйста, совет по этому поводу. Спасибо.

1 Ответ

1 голос
/ 19 сентября 2011

Нет непосредственной причины, по которой они должны вести себя по-другому.Попробуйте выполнить этот запрос в обоих случаях, чтобы сравнить наборы результатов:

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'
);

Если результаты совпадают, у вас есть другая проблема конфигурации на вашем сервере SQL 2K8.Права доступа для удаления из таблицы - это первое, что приходит на ум.

...