如何删除Docker容器内的SQL Server数据库?
嘿,我来帮你搞定这个问题!既然你明确说不需要保留任何数据,有两种简单直接的方法可以实现,看你更倾向哪种场景:
方法一:直接在容器内删除指定数据库(保留容器)
如果还想继续用当前的SQL Server容器,只是删掉某个数据库的话,按以下步骤来:
- 首先进入运行中的SQL Server容器的SQL命令行,替换命令里的
<容器名称/ID>和<你的SA密码>(就是你部署时设置的那个):docker exec -it <容器名称/ID> /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P <你的SA密码> - 进入SQL环境后,先确认要删除的数据库名称,执行这条查询:
执行后会列出所有数据库,找到你要删的那个名字。SELECT name FROM sys.databases; - 如果目标数据库有活跃连接,先强制断开所有连接(避免删库失败):
ALTER DATABASE <你的数据库名称> SET SINGLE_USER WITH ROLLBACK IMMEDIATE; - 最后执行删除命令:
DROP DATABASE <你的数据库名称>; - 完成后输入
QUIT;退出SQL命令行就行。
方法二:删除整个容器并重新构建(彻底清空所有数据)
如果连容器本身都不需要保留,想完全从头来过,这个方法更彻底:
- 先停止运行中的SQL Server容器:
docker stop <容器名称/ID> - 删除这个容器:
docker rm <容器名称/ID> - 重要提醒:如果部署时你挂载了自定义数据卷来保存SQL数据,还要把对应的数据卷删掉,不然重新启动容器后旧数据还会存在:
不知道数据卷名称的话,可以用docker volume rm <数据卷名称>docker volume ls查看。 - 最后用你之前部署时的命令重新启动一个全新的SQL Server容器,比如(记得替换
<你的SA密码>和<容器名称>):
这里的镜像版本是2017-latest,和你之前用的保持一致就行。docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<你的SA密码>" -p 1433:1433 --name <容器名称> -d mcr.microsoft.com/mssql/server:2017-latest
内容的提问来源于stack exchange,提问作者DJ Eddie J
相关产品推荐
相关产品推荐

