我已下载SQL Server 2017 Linux映像并在Container中运行。 接下来,我已从SQL Server Management Studio 2017连接到容器。 然后我使用了#34; docker cp"将.bak文件复制到" / var / opt / mssql / backup"。
但它需要一个加密密钥才能恢复。
所以在SSMS中我打开容器的查询窗口并运行这些命令:
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd';
GO
CREATE CERTIFICATE CertificateName FROM FILE = 'C:\cert.cer' WITH PRIVATE
KEY (FILE = 'C:\key.p7b', DECRYPTION BY PASSWORD = '********');
当我运行最后一个时,我收到此错误: "证书,非对称密钥或私钥文件无效或不存在;或者您没有权限。"
如何为Docker容器执行此操作? 我可以从本地文件系统获取文件吗? 或者我需要将其复制到" / var / opt / mssql /"并以某种方式从那里开始?
答案 0 :(得分:1)
Docker显然无法从本地文件系统中读取cer和key文件。 这是我做的:
在命令提示符处,在容器中创建一个dir以容纳密钥。
docker exec -it sqlcontainer1 mkdir /var/opt/mssql/setup
docker cp "C:\Temp\cert.cer" sqlcontainer1:/var/opt/mssql/setup
docker cp "C:\Temp\key.p7b" sqlcontainer1:/var/opt/mssql/setup
然后我又回到SSMS并再次运行命令:
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '********';
GO
CREATE CERTIFICATE CertName FROM FILE = '/var/opt/mssql/setup/cert.cer' WITH
PRIVATE KEY (FILE = '/var/opt/mssql/setup/key.p7b', DECRYPTION BY PASSWORD =
'********');