Я столкнулся со следующей ошибкой при попытке восстановить UAT.bacpac 10.0.40 в среде разработки с версией 10.0.38:
Процедура FINTAG_INSTEADOFINSERTTRIGGER, строка 41. Невозможно вставить явное значение в столбец метки времени.
Кто-нибудь еще сталкивался с этой проблемой и нашел решение службы поддержки Microsoft?
Error SQL72014: Core Microsoft SqlClient Data Provider: Msg 273, Level 16, State 1, Procedure FINTAG_INSTEADOFINSERTTRIGGER, Line 41 Cannot insert an
explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column.
Error SQL72045: Script execution error. The executed script:
CREATE TRIGGER [dbo].[FINTAG_INSTEADOFINSERTTRIGGER]
ON [dbo].FinTag
INSTEAD OF INSERT
AS BEGIN
DECLARE @ErrorLevel AS INT = 0;
DECLARE @Delimiter AS CHAR;
DECLARE @IsDelimiterInValues AS BIT;
DECLARE @ErrorDelimiter AS CHAR = '!';
SELECT @Delimiter = CASE (SELECT DELIMITER
FROM FINTAGPARAMETERS
WHERE PARTITION = (SELECT PARTITION
FROM INSERTED)) WHEN 1 THEN '|' WHEN 2 THEN '.' WHEN 3 THEN '_' WHEN 4 THEN '-' WHEN 5 THEN
'~' ELSE @ErrorDelimiter END;
SELECT @IsDelimiterInValues = CASE WHEN CHARINDEX(@Delimiter, concat(TAG01, TAG02, TAG03, TAG04, TAG05, TAG06, TAG07, TAG08, TAG09, TAG10,
TAG11, TAG12, TAG13, TAG14, TAG15, TAG16, TAG17, TAG18, TAG19, TAG20)) > 0 THEN 1 ELSE 0 END
FROM inserted;
DECLARE @Hash AS NVARCHAR (64);
DECLARE @DisplayValue AS N
Time elapsed 1:14:17.66
Эта ошибка произошла примерно через час после запуска скрипта.
C:\sqlpackage-win-x64-en-162.3.566.1> ./SqlPackage.exe /a:import /sf:C:\Backup\dbbackup.bacpac /tsn:localhost /tdn:AxDB2 /ttsc:true /p:CommandTimeout=1200
Я искал в Интернете решения, но ни одно из них не сработало. Я также безуспешно обновил локальную среду до последней версии.
Кроме того... код триггера ошибочен: он предполагает, что в виртуальной таблице inserted
всегда будет только одна строка. Триггеры SQL Server действуют на наборы строк, поэтому виртуальные таблицы inserted
и deleted
могут содержать ноль, одну или несколько строк.
@AlwaysLearning, вероятно, это какой-то внутренний динамический триггер Microsoft, так что, надеюсь, они знают, что делают.
Кроме того, это еще не все определение триггера. Обратите внимание, что оно заканчивается на DECLARE @DisplayValue AS N
, а оператора INSERT
нет?
Я решил эту проблему, выполнив следующие шаги:
Когда задание завершится успешно, вы можете взять новую базу данных экспорта и затем попытаться загрузить ее в среду разработки.
Та же проблема Ошибка при восстановлении файла bacpac 10.0.39 UAT в среде разработки