Add-SqlAzureAuthenticationContextでTypeInitializationException

2022/03/06に公開

こちらを参考にpowershellからCMKを作成しようとしたところ、Add-SqlAzureAuthenticationContextで以下のエラーが出るときがある。
https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/configure-always-encrypted-keys-using-powershell?view=sql-server-ver15#azure-key-vault-without-role-separation-example

Add-SqlAzureAuthenticationContext : The type initializer for 'Microsoft.SqlServer.Management.AlwaysEncrypted.Types.AlwaysEncryptedManager' threw an 
exception.
At C:\Users\tsugu\Develop\sample_sql_database_always_encrypted_with_azure_key_vaults\create_cmk_cek.ps1:43 char:1
+ Add-SqlAzureAuthenticationContext -Interactive
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Add-SqlAzureAuthenticationContext], TypeInitializationException
    + FullyQualifiedErrorId : AzureAuthError,Microsoft.SqlServer.Management.PowerShell.AlwaysEncrypted.AddSqlAzureAuthenticationContext

調べてみたけどよくわからない。
https://docs.microsoft.com/en-us/answers/questions/403735/powershell-command-add-sqlazureauthenticationconte.html
https://stackoverflow.com/questions/50167636/set-sqlcolumnencryption-throws-error

いろいろ試したところ、VS Codeのterminalから実行するとエラー、Windows Terminalから実行すると成功する。
実行ポリシーが原因かなと思ってVS Codeのterminalでポリシー変更してから実行してみたがやっぱりエラー。
※VS Codeからpowershellのterminalを開くと Bypassになってる

  • 実行ポリシー変更
PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
PS> Get-ExecutionPolicy
RemoteSigned

https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1

結果よくわからない。
とりあえずWindows Terminalからやるか・・

Discussion