Как я могу сгруппировать эти операторы SQL в один пакет, чтобы выполнить все сразу? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть несколько изменений, которые я делаю в схеме таблицы, чтобы включить шифрование.

  1. Изменить таблицу: добавление столбцов

    ALTER TABLE Demo
    ADD name_Encrypted VARBINARY(MAX)
    
  2. Добавить зашифрованное значение в это поле на основе поля, которое я шифрую.

    OPEN symmetric KEY symkey decryption BY assymetric KEY asym_key 
    
    UPDATE demo 
    SET name_encrypted = Encryptbykey(Key_guid('Symkey'), NAME) 
    FROM demo 
    
    CLOSE symmetric KEY symkey
    
  3. УДАЛИТЬ незашифрованный столбец

    ALTER TABLE Demo DROP COLUMN Name
    
  4. Переименуйте зашифрованный столбец в оригинальное имя

    EXEC Sp_rename 'Demo.Name_encrypted','Name'
    

Если я помещаю их все в хранимую процедуру, я получаю сообщение об ошибке: «столбец name_Encrypted не существует», хотя я создал его на первом шаге.

Как я могу собрать все эти операторы в одном пакете, чтобы я мог выполнить его один раз, и все они будут выполнены?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2019

Я думаю, что у вас есть противоположная проблема, как вы думаете.Вы не можете сделать все это в одном пакете / транзакции / и т. Д., Потому что вы пытаетесь добавить столбец, который еще не был добавлен.На самом деле, вам нужно, чтобы все они были отдельными транзакциями.

Я думаю, что ответ, который вы ищете, заключается в том, чтобы добавить «GO» между каждым из этих шагов, чтобы указать SQL завершить обработку предыдущего раздела, прежде чем продолжитьвперед.Добавьте столбец 'GO', чтобы указать SQL завершить добавление столбца, прежде чем пытаться идти дальше;заполните поле 'GO', чтобы указать SQL завершить заполнение поля перед продолжением.Оставьте поле, «GO» и т. Д.

3 голосов
/ 02 апреля 2019

Добавьте оператор GO после каждого оператора DDL, чтобы зафиксировать его в механизме БД. Смотрите следующую ссылку

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