Позвольте мне сначала сказать, что я понимаю, что Microsoft говорит, что у них есть исправление ошибки, но мы установили накопительное обновление для 2016 года, и нам все равно не повезло. Это MERGE для SCD типа 2, который отлично работал в 2014 году. Мы тестируем наше обновление до 2016 года, когда появилась эта ошибка. Ниже приведен пример запроса, который вызывает проблему.
/* Type 2 Merge */
INSERT INTO BDW.DMEmployer
(
SCD_Current,
Source_System,
Company,
Employer_Number
)
SELECT SCD_Current,
Source_System,
Company,
Employer_Number
FROM
(
MERGE BDW.DMEmployer dim
USING ETLWork.work.DMEmployer work
ON dim.Employer_Number = work.Employer_Number AND dim.Company = work.Company
-- This inserts new records in the dimension table
WHEN NOT MATCHED THEN
INSERT (SCD_Current,
Source_System,
Company,
Employer_Number
VALUES ( 'Y',
work.last_updated,
'I',
'POINT',
work.Company,
work.Employer_Number
WHEN MATCHED AND dim.SCD_Current = 'Y'
AND ( dim.Employer_FEIN <> work.Employer_FEIN ) THEN
UPDATE SET SCD_Current='N',
SCD_Valid_To_Date = work.last_updated-2
OUTPUT $Action
Action_Taken,
'Y' AS SCD_Current,
work.Source_System,
work.Company,
work.Employer_Number
) AS MERGE_OUT
WHERE MERGE_OUT.Action_Taken = 'UPDATE';
Если бы вы запускали только внутренний MERGE, это не было бы проблемой. Но попытка запустить все это сейчас, в 2016 году, приводит к следующему сбою. Мы попробовали исправить ошибку, но мне интересно, не пропустил ли я что-то еще. Он добавляет только ~ 150 строк во внешнюю часть INSERT INTO.
Сообщение об ошибке:
Расположение: pageref.cpp:955
Выражение: IS_OFF (BUF_MINLOGGED, m_buf-›bstat) || pageModifyType != PageModifyType_Contents || GetPagePtr ()->IsTextPage ()
ИДП: 52
Идентификатор процесса: 2820
Сообщение 3624, уровень 20, состояние 1, строка 3 Ошибка проверки подтверждения системы. Подробности смотрите в журнале ошибок SQL Server. Как правило, ошибка утверждения вызвана ошибкой программного обеспечения или повреждением данных. Чтобы проверить наличие повреждений базы данных, рассмотрите возможность запуска DBCC CHECKDB. Если вы согласились отправлять дампы в Microsoft во время установки, в Microsoft будет отправлен мини-дамп. Обновление может быть доступно от Microsoft в последнем пакете обновления или в исправлении от службы технической поддержки.
Сообщение 10054, уровень 20, состояние 0, строка 0 Произошла ошибка транспортного уровня при получении результатов с сервера. (поставщик: поставщик TCP, ошибка: 0 — существующее соединение было принудительно закрыто удаленным хостом.)
Мы запустили DBCC CHECKDB, который не обнаружил ничего поврежденного. Итак, это все еще ошибка или есть какие-то настройки, которые я мог пропустить во время нашей установки? Спасибо за помощь.
merge
отсутствует закрывающая скобка послеinsert (....
иvalues ( ...
- person SqlZim   schedule 27.09.2017BDW.DMEmployer
из временной таблицы? - person SqlZim   schedule 27.09.2017