Docker SQL Server 2017コンテナ@latest。 master
データベースを使用します。
私が直面しているエラーは次のとおりです:
[S00019][15208] The certificate, asymmetric key, or private key file is not valid or does not exist; or you do not have permissions for it.
私がこの正確な質問に最も近いのは Stackoverflowのこの問題 です。しかし、答えは私にはうまくいきません。 この質問 にも同様の答えがあります。
したがって、エラーの部分を通過します:
何を試しても証明書を復元できません。私は GitHubの問題 を検索して役に立たなかったため、バグではないと思います。私は何か間違ったことをしているに違いありません。
関連コード:
--on Prod
BACKUP CERTIFICATE sqlserver_backup_cert
TO FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.cer'
WITH PRIVATE KEY (
FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.key',
ENCRYPTION BY PASSWORD = 'foobar'
)
--on Test
CREATE CERTIFICATE sqlserver_backup_cert
FROM FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.crt'
WITH PRIVATE KEY (
FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.key',
DECRYPTION BY PASSWORD = 'foobar'
)
それは注目に値する/var/opt/mssql/certs
はDockerボリュームです。ただし、コンテナ内に独自のディレクトリを作成し、docker cp
。変化なし。
「関連コード:」の下に表示されているコード(質問内)は、ここにコピーアンドペーストされて再実行されないように、実行中のexactコードです入力した? sqlserver_backup_certファイルのファイル拡張子がBACKUP
とCREATE
(つまり、復元)ステートメントで異なるため、私は尋ねます。 。cerとしてバックアップされますが、CREATE
で。crtを探しています。
また、ファイルをすべてスキップして、16進バイト(つまり、VARBINARY
リテラル)を使用してみましたか?次のようにします。
製品版
SELECT CERTENCODED(CERT_ID(N'sqlserver_backup_cert')) AS [CertificateAndPublicKey],
CERTPRIVATEKEY(CERT_ID(N'PrivateKeyTest'),
'new_password_for_extract(A)',
'current_password(B)') AS [PrivateKey];
テスト時
CREATE CERTIFICATE [sqlserver_backup_cert]
FROM BINARY = {output of CERTENCODED}
WITH PRIVATE KEY (
BINARY = {output of CERTPRIVATEKEY},
DECRYPTION BY PASSWORD = 'new_password_for_extract(A)',
ENCRYPTION BY PASSWORD = 'current_password(B)'
);
[〜#〜]更新[〜#〜]
O.P.は、この問題が実際にファイル名拡張子の不一致であることを確認しました。