Я работаю с SQL Server, размещенным в Azure.У меня есть таблица с именем «ОШИБКА» со столбцом «DATETIME» с включенной функцией «Всегда зашифровано».
CREATE TABLE [dbo].[ERROR]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[DATETIME] [datetime] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[CODE] [varchar](10) NOT NULL,
[MESSAGE] [varchar](500) NULL,
CONSTRAINT [PK_ERROR]
PRIMARY KEY CLUSTERED ([ID] ASC)
)
Я запускаю хранимую процедуру, чтобы добавить строку в другую таблицу, но если ошибкапоймал его, добавьте ошибку в эту таблицу со следующим утверждением:
INSERT INTO [dbo].[ERROR] ([DATETIME], [CODE], [MESSAGE])
VALUES (GETDATE(), @@ERROR, ERROR_MESSAGE())
Моя проблема, когда я пытаюсь ввести значение GETDATE()
в зашифрованный столбец, я получаю эту ошибку
Столкновение с типом операнда: datetime несовместимо с datetime, зашифрованным с помощью (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Ac_A * * *в Интернете я включил ПАРАМЕТРИЗАЦИЮ ДЛЯ ВСЕГДА ШИФРОВАННЫХ на SSMS и объявил сначала, как это DECLARE @RAISEDTIME DATETIME = '20181130'
.после этого никакой ошибки не возникло, и она была успешно вставлена, но при вызове GETDATE () в качестве значения [DECLARE @RAISEDTIME DATETIME = GETDATE()
] я получаю эту ошибку:
Несоответствие схемы шифрования для столбцов / переменных '@RAISEDTIME',Схема шифрования для столбцов / переменных: (encryption_type = 'PLAINTEXT'), и выражение около строки '3' ожидает, что оно будет (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_K_name_name_name_name_name_name)Aeropuerto ') (или более слабый).
Я попытался отформатировать значение GETDATE()
с ISO8601, но возникает та же ошибка, приведенная ниже.
Можете ли вы порекомендовать мне способ вставитьфактическое значение даты и времени с этой хранимой процедурой?