Как исправить «Файл мастер-ключа не существует или имеет неверный формат». в SQL Server 2017 - PullRequest
1 голос
/ 22 октября 2019

Среда, которую я использую, - это виртуальная машина, размещенная в Azure.

Недавно я создал новый экземпляр SQL Server на этой виртуальной машине с именем TESTINSTANCE (в дополнение к существующей по умолчанию). Я использовал отдельную учетную запись службы.

Впоследствии мне необходимо восстановить резервную копию базы данных в новом экземпляре. В источнике был создан главный ключ и сертификат.

Поэтому, прежде чем восстанавливать, я думаю, что необходимо восстановить этот ключ в моем целевом экземпляре (TESTINSTANCE).

Однако, когда я проверяю ниже:

-- Create a database master key on the destination instance of SQL Server.   
USE master;  
GO  

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'value_a';  
GO

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'value_a';   
go

RESTORE MASTER KEY   
    FROM FILE = 'C:\folder_\masterdb_masterkey'   
    DECRYPTION BY PASSWORD = 'value_b'   
    ENCRYPTION BY PASSWORD = 'value_a';  
GO  

Я получаю следующее сообщение об ошибке:

Файл мастер-ключа не существует или имеет недопустимыйformat.

Я полагаю, что это может быть вызвано разрешениями учетной записи службы, которая была создана во время моей установки TESTINSTANCE.

Однако, когда я проверяю раздел «Права и привилегии Windows» на странице ниже, я понимаю, что учетная запись службы TESTINSTANCE должна получить те же разрешения, что и учетная запись по умолчанию.

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions?view=sql-server-2017

Так что я не уверен, почему он не может получить доступ к этому месту на диске C. Для подтверждения файл существует в «C: \ folder_ \ masterdb_masterkey»

1 Ответ

1 голос
/ 23 октября 2019

Владельцем папки (C: \ folder_) был пользователь, который был деактивирован из учетной записи. Я обновил владельца до своей учетной записи, обновив владельца для моего пользователя в разделе «Дополнительные параметры безопасности» , как показано в ответе на этот вопрос .

Затем я перезапустил запрос, и он заработал.

https://dba.stackexchange.com/questions/112368/sql-server-data-folder-access-rights

...