Я не могу найти что-нибудь, чтобы объяснить, почему при вызове SP, который делает вставки или обновления в зависимости от того, если записи уже существует на временные таблицы я получаюMS SQL временной таблица неудача обновления
модификации данных не удалась на системы- versioned table «MYDB.dbo.TemporalExample», поскольку время транзакции было раньше времени начала периода для затронутых записей.
какая доза это означает? Кажется, что это случается некоторое время, я задаюсь вопросом, не связано ли это с тем, что im работает многопоточный код и azure sql, но не любит взаимные соединения с одной и той же таблицей, когда это временная? Им будет хотя рамки сущности (последняя версия), но я сомневаюсь, что это вопрос
мой зр только это
create PROCEDURE mysp @ID bigint, @a FLOAT, @b NVARCHAR(10), @c DECIMAL(19, 4) AS SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET NOCOUNT ON BEGIN TRY IF EXISTS (SELECT TOP 1 Id FROM my_Temporal_Table WITH (NOLOCK) WHERE id = @ID AND a = @a AND b = @b) BEGIN UPDATE my_Temporal_Table SET Id = @ID, a = @a, b = @b c = @c DateModified = GETUTCDATE() WHERE Id = @Id END ELSE BEGIN INSERT INTO my_Temporal_Table (Id, a, b, c, DateModified) VALUES (@ID, @a, @b, @c , GETUTCDATE()) END END TRY BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000), @ErrorSeverity INT, @ErrorState INT SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE() -- Use RAISERROR inside the CATCH block to return error -- information about the original error that caused -- execution to jump to the CATCH block. RAISERROR (@ErrorMessage, -- Message text. @ErrorSeverity, -- Severity. @ErrorState -- State. ) END CATCH
Update мой височной скрипт создания таблицы:
CREATE TABLE [Temporal]( [TemporalId] [bigint] IDENTITY(1,1) NOT NULL, [Payment] [decimal](19, 4) NOT NULL, [DateModified] [datetime2](7) NOT NULL, [SysStartTime] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL, [SysEndTime] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL, CONSTRAINT [TemporalId] PRIMARY KEY CLUSTERED ([TemporalId] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON), PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime]) )WITH( SYSTEM_VERSIONING = ON (HISTORY_TABLE = [Car2].[TemporalHistory]) )
может кто-то объяснить, почему я могу увидеть эту проблему, что это значит и что еще более важно, как я могу ее исправить?
благодаря
Почему вы обновляете временные таблицы – TheGameiswar
Я не уверен, почему я бы не обновил его? В конце концов, это обычная таблица, в которой я не обновляю таблицу истории, это как в документах MS [link] (https://msdn.microsoft.com/en-gb/library/mt591019.aspx), но все же просто нормальное обновление метод, который вы используете, когда вам нужно обновить свои данные в вашей таблице. –
oh ok получил его, я думал, что это таблица истории – TheGameiswar