web-dev-qa-db-ja.com

Dockerコンテナ内のsqlserverの接続文字列

ドットネットコアおよび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.
19
user2695433

これに関するブログ記事を書きました。 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
";
18
rjminchuk

ほとんどの場合、サーバー名はlocalhostおよびポート1401(Dockerコンテナーセットアップのデフォルトです)です。したがって、次の接続文字列を使用する必要があります。

"Default": "Server=localhost,1401; Database=ERPDb; User=sa; Password =******;"
9

今日、この問題が発生し、デフォルトの「ブリッジ」ネットワークを使用する代わりに、別のネットワークを使用して問題を解決しました。

  1. docker network create test_network

  2. 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

  3. 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アドレスを使用した接続文字列に関する以前の回答については、このアドレスは動的に変更できるため、ホスト名としてコンテナ名を使用することをお勧めします。

0