はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【ASP.NET Core MVC】DockerでSQL Serverを立ち上げた時にDatabaseに接続できないときの対処法

はじめに

DockerでMicrosoft SQL Server - Ubuntu based imagesのコンテナを立てた後、Entity Framework Coreを利用してマイグレーションを実行しようとしました。(エンティティ・コンテキスト定義、データベース接続文字列設定&アプリに紐づけ済)
mcr.microsoft.com

$ dotnet ef migrations add Initial
$ dotnet ef database update  

すると以下のようなエラーが出力されてしまいました。

A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught)

この解決方法を見つけたので書き残しておこうと思います。

解決方法

appsettings.jsonを用いて、ConnectionStringsを記述していましたが、その際Encrypt=falseを追加すれば動作しました。

"ConnectionStrings": {
  "MyContext": "Server=localhost;Database=YOURDATABASE;user=sa;password=YOURPASSWORD;Trusted_Connection=false;"
}

"ConnectionStrings": {
  "MyContext": "Server=localhost;Database=YOURDATABASE;user=sa;password=YOURPASSWORD;Trusted_Connection=false;Encrypt=false"
}

少なくとも開発用 or localhostであればこれでOKです。またTrustServerCertificate=Trueでも動作するかもとのことでした。