我已经从Docker Hub下载了Microsoft SQL Server Express映像。我试图通过添加空数据库的空数据库来扩展它,并将该输出作为一个图像,然后我可以在整个项目中使用它。
如何运行以下SQL脚本?
initdb.sql
USE MASTER
GO
CREATE DATABASE MyDB1
GO
CREATE TABLE [dbo].[MyTable1]
(
[Id] INT NOT NULL,
[Name] NVARCHAR(256) NOT NULL,
)
CREATE TABLE [dbo].[MyTable2]
(
[Id] INT NOT NULL,
[Name] NVARCHAR(256) NOT NULL,
)
GO
-- Create database and tables for Clinical
CREATE DATABASE MyDB2
GO
CREATE DATABASE MyDB3
GO
这是我到目前为止的Dockerfile:
FROM microsoft/mssql-server-windows-express AS base
WORKDIR /app
ENV ACCEPT_EULA Y
ENV sa_password supersecretpassword
FROM base AS final
WORKDIR /app
我不知道是否使用CMD
命令或以某种方式调用SQLCMD
,但我没有正确的方法来做到这一点。
任何帮助将不胜感激。
希望有人会有比这更好的解决方案,但我最终写了一个小C#函数来做到这一点。由于我正在使用SQL docker来进行一些基于C#的自动化测试,因此添加它并不是什么大不了的事情,这在:
private bool SqlServerScript(string connection, string filename) {
try {
using (SqlConnection sqlConnection = new SqlConnection(connection)) {
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand(File.ReadAllText(filename), sqlConnection);
sqlCommand.ExecuteNonQuery();
return true;
}
} catch {
}
return false;
}
(错误处理留给读者练习)