Имя динамической переменной для резервной таблицы - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь написать хранимую процедуру для резервного копирования таблицы, но получаю:

Сообщение 402, Уровень 16, Состояние 1, Строка 9 Типы данных varchar и datetime2 несовместимы воператор добавления.

Сообщение 402, уровень 16, состояние 1, строка 15 Типы данных varchar и datetime2 несовместимы в операторе добавления.

Как это исправить?

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DECLARE @CreateDynamicSQL nvarchar(1000);
DECLARE @CopyDynamicSQL nvarchar(1000);

SET @CreateDynamicSQL='CREATE TABLE [dbo].[paul_AccountContact_Backup_'+@SYSDATETIME+'](
    [AccountID] [int] NOT NULL,
    [ContactID] [int] NOT NULL
) ON [PRIMARY]
GO'

SET @CopyDynamicSQL='select * into [dbo].[paul_AccountContact_Backup_'+@SYSDATETIME+'] from paul_AccountContacts'

EXEC(@CreateDynamicSQL);
EXEC(@CopyDynamicSQL);

1 Ответ

0 голосов
/ 30 мая 2018

Необходимо преобразовать переменную даты в строку, чтобы можно было объединить ее:

SET @CreateDynamicSQL='CREATE TABLE [dbo].[paul_AccountContact_Backup_' 
+ convert(varchar(20), @SYSDATETIME, <Format>) + '](

Документация для параметра формата:
https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...