как построить if-оператор / цикл в курсоре - PullRequest
0 голосов
/ 05 декабря 2018

У меня более 30 дБ, которые зашифрованы с помощью TDE.Чтобы сделать резервную копию базы данных, вы должны отключить шифрование и сбросить ключ шифрования, который я создал, который выводит инструкцию «ALTER DATABASE SET ENCRYPTION OFF».Но я хочу казни, в которой мне не нужно исполнять каждую отдельно.

Этот оператор дает вам текущий статус шифрования БД.

3 = Шифрование «включено»

1 = Шифрование «выключено»

SELECT e.encryption_state,d.name, e.percent_complete 
FROM sys.databases d 
INNER JOIN 
sys.dm_database_encryption_keys e ON d.database_id = e.database_id;

курсор:

DECLARE @dbName nvarchar(MAX) =''
DECLARE @sql nvarchar(MAX) = ''



DECLARE Crs CURSOR LOCAL FOR 
SELECT d.name
FROM sys.databases d
INNER JOIN
sys.dm_database_encryption_keys e ON d.database_id = e.database_id
where d.name not like 'tempdb'

OPEN Crs 
FETCH NEXT FROM Crs into @dbName 

WHILE @@FETCH_STATUS = 0

BEGIN

select @sql

SET @sql= 'use ' + @dbName + 
'; ALTER DATABASE ' + @dbName + ' SET ENCRYPTION OFF;
use ' + @dbName +  '; drop database encryption key; '
print @sql

FETCH NEXT FROM Crs into @dbName 
END
CLOSE Crs
DEALLOCATE Crs

Так что теперь мне нужно встроить цикл, который проверяет активный статус шифрования.Если 1, то отпустите клавишу, иначе подождите, пока статус не изменится на 1. Любые идеи ??

Надеюсь, все было понятно.

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