powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вычисляемое дешифрованное поле и ошибка sp_MStran_ddlrepl
3 сообщений из 3, страница 1 из 1
Вычисляемое дешифрованное поле и ошибка sp_MStran_ddlrepl
    #40112615
Шамиль Фаридович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице BankAccount есть несколько зашифрованных полей (пусть Num),
и к каждому из них имеется вычисляемое дешифрованное поле вида
Код: sql
1.
ADD NumDecrypted AS CONVERT(nvarchar(9), DecryptByKey(CONVERT(varbinary(300), Num)))


И есть ключ шифрования BankAccountKey01
Необходимо переименовать эту пару в (Number, NumberDecrypted)

sp_rename не помогает, потому что NumberDecrypted считается по Number

Ну ок, удаляю NumDecrypted, переименовываю Num в Number и пытаюсь выполнить

Код: sql
1.
2.
3.
4.
5.
6.
OPEN SYMMETRIC KEY BankAccountKey01 DECRYPTION BY CERTIFICATE MainCertificate;

ALTER TABLE BankAccount
    ADD NumberDecrypted AS CONVERT(nvarchar(9), DecryptByKey(CONVERT(varbinary(300), Num)))

CLOSE SYMMETRIC KEY BankAccountKey01;


Получаю ошибку
Код: sql
1.
2.
sys.sp_MStran_ddlrepl, строка: 108 [строка начала пакета: 0]
Invalid length parameter passed to the RIGHT function.


Я знаю, что с тех пор, как проблемные столбцы были впервые добавлены, кто-то настраивал/пытался настраивать репликацию.
Но я в этом плохо разбираюсь: проверил только таблицу sysarticles и убедился, что она пустая.
...
Рейтинг: 0 / 0
Вычисляемое дешифрованное поле и ошибка sp_MStran_ddlrepl
    #40112642
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шамиль Фаридович,

чето вы с последовательностью действий или метаданными напутали.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
create master key encryption by password = '123456'

create symmetric key [my] with algorithm = aes_256 encryption by password = '123456'


create table [my_table] (
id int,
num varbinary(max)
)


open symmetric key [my] decryption by password = '123456'
insert into my_table values (1, ENCRYPTBYKEY(key_guid('my'), '110'))
insert into my_table values (1, ENCRYPTBYKEY(key_guid('my'), '2000'))


alter table [my_table] add 
num_dec as convert(varchar(10), decryptbyKey(num))


select * from my_table

alter table my_table drop column num_dec;

sp_rename 'my_table.num', 'num2'

alter table [my_table] add 
num_dec as convert(varchar(10), decryptbyKey(num2))


select * from my_table



не ошиблись тут?
Код: sql
1.
2.
ALTER TABLE BankAccount
    ADD NumberDecrypted AS CONVERT(nvarchar(9), DecryptByKey(CONVERT(varbinary(300), Num)))
...
Рейтинг: 0 / 0
Вычисляемое дешифрованное поле и ошибка sp_MStran_ddlrepl
    #40112669
Шамиль Фаридович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,
Спасибо за работающий пример, это всегда полезно
felix_ff

не ошиблись тут?
Код: sql
1.
2.
ALTER TABLE BankAccount
    ADD NumberDecrypted AS CONVERT(nvarchar(9), DecryptByKey(CONVERT(varbinary(300), Num)))



Да, опечатался, там должно быть Number , но ошибку я прислал от правильного варианта скрипта.
И да, проблема была именно в том, что с тех пор, как все работало, на базе настраивали репликацию,
потестили, но забыли выключить до конца.
Помогло
Код: sql
1.
exec sp_removedbreplication
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вычисляемое дешифрованное поле и ошибка sp_MStran_ddlrepl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]