sql-server - 如何使用 .NET Core 应用程序在 Docker 中填充 SQL Server 数据库?
问题描述
我有一个 .NET Core 应用程序,当通过dotnet run
命令运行它时,它会根据其自动填充数据库ConnectionString
,appSettings.json
如下所示:
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,21433;Initial Catalog=DemoDb;User Id=demo;Password=******;"
},
由于我的 Docker 容器中已经有一个 SQL Server 数据库,因此我想使用现有的服务器容器并将新数据库填充到 Docker 中。当我运行应用程序时,新数据库已填充,但应用程序未初始化。
我使用与上述相同的端口号,ConnectionString
但是在运行应用程序时会抛出“底层异常消息是'无法建立连接,因为目标机器主动拒绝它。(localhost:4200)'”错误。我认为这与在此容器中使用与其他数据库相同的端口有关。
在这一步:
我应该为这个新数据库创建一个新容器,还是为两个数据库使用相同的 SQL Server 容器?
我可以使用与之前在 Docker 上安装的数据库相同的端口吗?或者我应该用连接字符串中的另一个端口来改变它吗?
抱歉,我是 Docker 新手。
解决方案
Docker 的性质表明,如果数据库不相关,那么它们应该存在于单独的容器中。
如果需要在数据库之间进行交互,那么将它们放在同一个容器内的同一个实例上就可以了。
该端口用于实例 - 不是单个数据库,但您需要在代码中包含一些标识所需数据库的内容 - 无论是USE
T-SQL 代码中的语句还是到新数据库的显式连接。
您将用户定义在什么范围内?它是包含的数据库用户吗?如果是这样,那么您必须在连接字符串中指定正确的数据库 - 如果它在实例级别作为登录名,那么没关系,但它必须映射到该登录名的新数据库中的数据库用户。
推荐阅读
- sql - 如何在 SQLite 全文搜索(fts5)中排除字段
- git - 什么是`git restore`命令,`git restore`和`git reset`有什么区别?
- math - 图中有多少个组件?
- swift - 更改宽度常量后,Swift setGradientBackground 不起作用
- react-native - 我的项目在执行“react-native log-android”时遇到问题
- sqlite - 可以像临时“表”一样分配查询结果吗?
- python - 基于文本的 RPG 重复伤害完成
- google-apps-script - 有没有比使用谷歌应用脚本的 getValues() 函数更快地从谷歌电子表格获取值的方法?
- javascript - 将错误数据从 Firebase 或服务器响应传递给 Formik
- angular - 获取并设置formControl,失控