.mdf和.ldf数据转储(初次)
按照步骤即可
1 .首先,你需要从Docker Hub上获取SQL Server镜像。打开终端并运行以下命令来拉取SQL Server镜像:
docker pull mcr.microsoft.com/mssql/server:2019-latest
- 接下来,使用以下命令创建并运行一个SQL Server容器实例:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrongPassword>" -p 1433:1433 --name sql_server -v /mnt:/var/opt/mssql/data -d mcr.microsoft.com/mssql/server:2019-latest
请将替换为一个强密码。此命令将映射端口1433,将数据文件和日志文件挂载到容器内的适当位置,并使用最新的SQL Server镜像创建一个名为sql_server的容器。
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
sudo yum install -y mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
接下来,使用sqlcmd连接到SQL Server实例,并附加数据库:
sqlcmd -S localhost,1433 -U SA -P "<YourStrongPassword>"
- 在sqlcmd提示符下,执行以下命令以附加数据库:
EXEC sp_attach_db @dbname='jsYsShow',
@filename1='/var/opt/mssql/data/jsYsShow.mdf',
@filename2='/var/opt/mssql/data/jsYsShow_log.ldf';
GO
附图
- 现在,你可以使用任何支持SQL Server的客户端工具连接到你的数据库实例。连接信息如下:
服务器地址: localhost
端口: 1433
用户名: SA
密码: <YourStrongPassword>
请确保将<YourStrongPassword>替换为之前设置的强密码。完成这些步骤后,你应该能够连接到数据库并查看数据。
至此已经完成,后面便是持续迭代。
备注
- 这里需要将filename.mdf和filename.ldf这两个文件放到主机 /mnt 目录下, 可根据实际情况调整,注意命令也要调整。
持续更新(新的转储文件)
举例比如更新 jsYsShow 数据库
- 首先,你需要将新的 jsYsShow.mdf 和 jsYsShow_log.ldf 文件复制到 /mnt 目录下。这样,新的文件就会被映射到 Docker 容器的 /var/opt/mssql/data 目录下。
- 然后,你需要连接到 SQL Server 容器并执行以下 SQL 命令来分离当前的数据库:
EXEC sp_detach_db @dbname='jsYsShow'; GO
- 最后,你可以使用你之前的命令来附加新的数据库文件:
EXEC sp_attach_db @dbname='jsYsShow',
@filename1='/var/opt/mssql/data/jsYsShow.mdf',
@filename2='/var/opt/mssql/data/jsYsShow_log.ldf';
GO
这样,你的数据库就会更新为新的 jsYsShow.mdf 和 jsYsShow_log.ldf 文件了。
注意:在执行这些操作时,确保没有任何活动连接正在使用 jsYsShow 数据库,否则你可能无法分离数据库。
意外错误
- Database ‘jsYsShow’ cannot be upgraded because it is read-only, has read-only files or the user does not have permissions to modify some of the files. Make the database or files writeable, and rerun recovery.
- 如果遇到这个错误。你需要在你的宿主机中将你的
.mdf
和.ldf
文件进行权限修改。例如:chmod 666 /mnt/jsYsShow.mdf
,这样你的所有用户都将拥有读写权限。注意两个文件都需要执行。
- 如果遇到这个错误。你需要在你的宿主机中将你的