#############安装mssqlserver需要至少2000M的内存###############
# 拉取镜像(在docker hub中搜索要拉取的镜像,也可以从其他一些镜像仓库,比如自己的阿里云)
docker pull microsoft/mssql-server-linux
# 启动一个sqlserver(-v sqlvolume:/var/opt/mssql 这一部分, 用于为这个sql server创建一个volume
# 名为sqlvolume,并且这个容器的位置在docker虚拟的linux的/var/opt/mssql中),-h(to explicitly set
# the container hostname, if you don't specify it, it defaults to the container ID which is a randomly
# generated system GUID.),方便后面识别
# 注意,需要先删除已有的sqlvolume,否则创建出来的container状态会由up变为exit
# 跑sqlserver需要至少2000M,vagrantfile需配置
# config.vm.provider "virtualbox" do |vb|
# vb.memory = "3072"
# vb.cpus = 2
# end
docker run -it -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Kmj123456' -p 1433:1433 -v sqlvolume:/var/opt/mssql --name mssql -h mssql -d microsoft/mssql-server-linux [/bin/bash]
# 查看创建的volume
docker volume ls
# 删除volume
docker volume rm volumeName
# 停止/启动容器
docker stop/start container
# 删除容器
docker rm -f containerid [containerid]
# 查看某个container的日志
docker logs container
# 进入到container中
docker exec -it c4396fe6e95e bash
# 进入sqlcmd命令行
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Kmj123456"
# 进行一些查询
获取所有数据库名:
SELECT Name FROM Master..SysDatabases ORDER BY Name
/*1.查询SQLSERVER中的所有数据库*/
use master
go
select * from sysdatabases where dbid>4/*where条件用来去掉系统数据库*/
go
/*2.查询SQLSERVER中的所有数据库(存储过程)*/
exec sp_helpdb
/*3.查询指定数据库中的表*/
use 数据库名
go
select * from sysobjects where xtype='u'/*where条件用来去掉系统表*/
go
/*4.显示当前数据库所有表的详细信息*/
use 数据库名
go
SELECT
表名=case when a.colorder=1 then d.name else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主键=case when exists
(
SELECT 1 FROM sysobjects where xtype='PK' and name in
(
SELECT name FROM sysindexes WHERE indid in
(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
)
)
)
then '√' else '' end,
类型=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case when a.isnullable=1 then '√' else '' end,
默认值=isnull(e.text,''),
字段说明=isnull(g.[value],'')/*此列在绑定GridView时,如选择动态生成列,始终无法绑定.手动指定列后正常,原因不详*/
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
//SQL2005中用left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
left join sysproperties g on a.id=g.id and a.colid=g.smallid
where d.name='要查询的表'
order by a.id,a.colorder
go
/*5.删除字段*/
alter table tb_commonLog --表名
drop
column l_test, --去掉字段1
column l_test2, --去掉字段2
constraint pk_name --去掉主键
go
# 导入数据
docker cp <Host path> <Container ID>:<Container path>
docker cp /Users/kanmeijie/Workspace/project/company/NalcoWaterExpert/api/src/main/resources/db/nalco_db.sql c4396fe6e95e:/var/opt/mssql/nalco_db.sql
# 进入容器,用命令行执行sql脚(er hub文档中说明image中有命令行工具,可以在containier中直接使用)
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Kmj123456" -i /var/opt/mssql/nalco_db.sql
# 至此安装结束,可以直接用Navicat或者idea连接(jdbc:sqlserver://localhost:1433;database=naclo_water
docker-安装使用mssqlserver实战
最新推荐文章于 2023-05-10 14:54:26 发布