Мне нужно конвертировать некоторые таблицы как временные (системные версии).Для этой цели я написал команду SQL, которая будет выполняться динамически.
Запрос не выдает ошибку, но не выполняет команду SQL.Она также не печатает команду, используя «PRINT».
Я читал соответствующие статьи в SO.В соответствии с ними я объявил переменные в скрипте, а также предоставил им sp_executesql.Пожалуйста, сообщите.
DECLARE @sqlCommand nvarchar(2000)
DECLARE @tableName nvarchar(100)
SET @sqlCommand =
'ALTER TABLE ' + @tableName + '
ADD [SysStartTime] DATETIME2
GO
ALTER TABLE ' + @tableName + '
ADD [SysEndTime] DATETIME2
GO
UPDATE ' + @tableName + ' SET [SysStartTime] = ''19000101 00:00:00.0000000'', [SysEndTime] = ''99991231 23:59:59.9999999''
GO
ALTER TABLE ' + @tableName + '
ALTER COLUMN [SysStartTime] DATETIME2 NOT NULL
GO
ALTER TABLE ' + @tableName + '
ALTER COLUMN [SysEndTime] DATETIME2 NOT NULL
GO
ALTER TABLE ' + @tableName + '
ADD PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
ALTER TABLE ' + @tableName + ' SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [History].ConditionAssessment))
GO'
PRINT @sqlCommand
EXECUTE sp_executesql @sqlCommand, N'@tableName nvarchar(100)', @tableName = 'ConditionAssessmentData'