在 Azure DevOps 中,我用来更新SQL Server数据库的方式是使用 Entity Framework Core,使用两个任务:
问题是,现在我使用PostgreSQL数据库,我找不到一种简单而干净的方法来以相同的方式更新数据库。我看到MySQL 的另一个任务与我在 SQL Server 上的发布管道任务完全相同,但 PostgreSQL 没有任何任务。
所以我认为我基本上可以dotnet ef update database在管道中执行(设置适当的选项),但我想知道是否真的有一种方法可以像我以前那样顺利地更新数据库。
我正在尝试从秘密中设置我的 MSSQL 密码,但我不知道为什么我似乎没有正确地将我的秘密设置为密码。
这是我的 YAML 文件:
version: '3.7'
services:
notguiridb:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD_FILE: /run/secrets/mysecret4
secrets:
- source: mysecret4
target: mysecret4
secrets:
mysecret4:
external: true
Run Code Online (Sandbox Code Playgroud)
然后我检查了这个秘密是否是我所期望的,但即使这样做它也说登录失败,所以我怀疑环境变量MSSQL_SA_PASSWORD_FILE并没有真正起作用。
$ docker exec -it 5fd bash
$ mssql@5fd8471a22c4:/$ cat /run/secrets/mysecret4
"Pa55W0rd!1234*"
$ docker exec -it 5fd /opt/mssql-tools/bin/sqlcmd -U sa -P Pa55w0rd!1234*
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user 'sa'..
$ docker exec -it 5fd /opt/mssql-tools/bin/sqlcmd -U sa -P "Pa55w0rd!1234*"
Sqlcmd: Error: Microsoft ODBC …Run Code Online (Sandbox Code Playgroud)