【问题标题】:How to fix "The master key file does not exist or has invalid format." in SQL Server 2017如何修复“主密钥文件不存在或格式无效”。在 SQL Server 2017 中
【发布时间】:2019-10-22 16:42:03
【问题描述】:

我使用的环境是托管在 Azure 上的 VM。

我最近在该 VM 上创建了一个名为 TESTINSTANCE 的新 SQL Server 实例(除了现有的默认实例之外)。我使用了单独的服务帐号。

随后我需要将数据库备份恢复到新实例。 在源中创建了主密钥和证书。

所以在恢复之前,我认为需要在我的目标实例 (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  

我得到的是以下错误消息:

主密钥文件不存在或格式无效。

我认为这可能是由于我在安装 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'

【问题讨论】:

  • 服务帐号是否有权访问 C:\folder_\masterdb_masterkey?
  • @alexherm 感谢这个问题,它帮助我找到了根本原因(如下)。

标签: sql-server database-administration sql-server-2017


【解决方案1】:

文件夹的所有者 (C:\folder_) 是已从帐户中停用的用户。我通过在高级安全设置as shown in the answer to this question 中将所有者更新为我的用户,将所有者更新为我的帐户。

然后我重新运行了查询,它成功了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2023-03-20
    • 2023-01-28
    • 2021-10-27
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多