sql-server - 在 docker 中运行 MS SQL 服务器拒绝连接
问题描述
我在将 MSSQL Server Management Studio 连接到正在运行的 docker 容器时遇到问题。
docker 初学者。
我创建了以下docker-compose.yml
文件:
version: '3.4'
services:
sqlserver:
image: "mcr.microsoft.com/mssql/server:2017-latest"
volumes:
- /var/lib/docker/volumes/sql_volume/_data
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "pa55w0rd!"
MSSQL_PID: "Express"
ports:
- "1533:1534"
adventureworks_service:
image: ${DOCKER_REGISTRY-}adventureworksservice
build:
context: .
dockerfile: AdventureWorks_Service/Dockerfile
这个 docker 文件应该启动一个 MSSQL 数据库和位于我的解决方案中的 Adventureworks_service 项目。
这个 docker-compose 位于它自己的 Docker 项目中,在解决方案中。使用“添加 docker 支持”为我的 Web API 项目创建
假设一切设置正确,我应该能够连接到 sql server localhost:1533
,使用 SQL server authentication with loginExpress
和 password pa55w0rd!
。
尝试连接后立即出现以下错误(没有超时等)
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider : TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host) (Microsoft SQL Server, Error: 10054)
有谁知道我如何访问这个服务器/容器?
提前致谢
解决方案
mssql中的端口应该是1433
而不是1534
,试试这个
version: '3.4'
services:
sqlserver:
image: "mcr.microsoft.com/mssql/server:2017-latest"
volumes:
- /var/lib/docker/volumes/sql_volume/_data
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "pa55w0rd!"
MSSQL_PID: "Express"
ports:
- "1433:1433" # the port behind should always be 1433
adventureworks_service:
image: ${DOCKER_REGISTRY-}adventureworksservice
build:
context: .
dockerfile: AdventureWorks_Service/Dockerfile
那么你的连接字符串应该是这样的
Data Source=sqlserver,1433;User Id=SA;Password=pa55w0rd!
推荐阅读
- javascript - Vue 命名插槽注意事项?
- ruby - 开始:Heroku 与 Ruby (Windows 7)
- bash - 如何在while循环中抑制丢失文件的错误
- c# - 聚合和分组
- json - 来自 json 的嵌套结构,解析为结构
- maven - 从命令行指定 Maven 插件存储库
- python - Python Loop 正在从 MYSQL 数据库打印结果两次
- r - 如何使用 str_detect 边界(tidyr 包)
- db2 - 无法使用 ADMIN_DROP_SCHEMA 存储过程在 DB2 中删除模式
- javascript - 调用 API 时如何使用 Redux 设置加载组件