ドットネットコアおよびEFコアを備えたVisual Studio 2017 for Macを使用しています。 Dockerコンテナーでmssqlイメージをセットアップした後、接続文字列を追加しようとしましたが、接続エラーがスローされました。サーバー名としてIPアドレス、コンテナ名、ホスト名などのさまざまなオプションを試しましたが、どれも機能しませんでした。
"Default": "Server=172.17.0.2; Database=ERPDb; User=sa; Password =******;"
コンテナ名付き
"Default": "Server=ecstatic_hermann; Database=ERPDb; User=sa; Password=******;"
ホスト名付き:
"Default": "Server=f45840a59623; Database=ERPDb; User=sa; Password=******;"
ターミナルでローカルホストを使用して接続している間、正常に接続しています
$ mssql -s localhost -p Technocrat123
Connecting to localhost...done
sql-cli version 0.6.2
Enter ".help" for usage hints.
ただし、アプリケーションを実行すると、接続は失敗します。
ヘルプを感謝します。前もって感謝します。
Localhostを使用している場合、エラーは
Login failed for user ''. Reason: An attempt to login using SQL authentication failed. Server is configured for Integrated authentication only.
これに関するブログ記事を書きました。 richminchuk.io をご覧ください。さもないと:
Sudo docker pull Microsoft/mssql-server-linux:2017-latest
docker run \
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=YourSTRONG!Passw0rd' \
-p 1401:1433 \
-n sql1 \
-d Microsoft/mssql-server-linux:2017-latest
その後、
private static string _connStr = @"
Server=127.0.0.1,1401;
Database=Master;
User Id=SA;
Password=YourSTRONG!Passw0rd
";
ほとんどの場合、サーバー名はlocalhostおよびポート1401(Dockerコンテナーセットアップのデフォルトです)です。したがって、次の接続文字列を使用する必要があります。
"Default": "Server=localhost,1401; Database=ERPDb; User=sa; Password =******;"
今日、この問題が発生し、デフォルトの「ブリッジ」ネットワークを使用する代わりに、別のネットワークを使用して問題を解決しました。
docker network create test_network
docker container run -p 1433:1433 -d --name mssql -v mssql_data:/var/opt/mssql -e SA_PASSWORD=********** -e ACCEPT_EULA=Y --network=test_network Microsoft/mssql-server-linux
docker container run -p 5000:80 --rm -e ASPNETCORE_ENVIRONMENT=Development --name aspnetcore --network=test_network aspnetcore-image
また、私はそのような接続文字列を持っています:
Server=mssql;Database=master;User=sa;Password=**********;
IPアドレスを使用した接続文字列に関する以前の回答については、このアドレスは動的に変更できるため、ホスト名としてコンテナ名を使用することをお勧めします。