LinuxSQLserver数据库的(安装搭建),(备份还原),排障SQL
linux下安装sqlserver数据库有2种办法,
第⼀使⽤yum镜像安装,
第⼆使⽤rpm安装包安装
rpm安装地址为:packages.microsoft/config/rhel/po
使⽤rpm安装的话可能存在依赖问题,此处不做详细安装说明。
重点说⼀下yum⽅式安装,我们这⾥安装的版本为sqlserver2019,步骤如下:
⼀、要求
2.内存2G以上(要不然⽆法安装)
⼆、安装步骤
1.设置sqlserver安装镜像
sudo curl -o /pos.po packages.microsoft/config/rhel/po
2.执⾏安装
yum install -y mssql-server
完毕之后运⾏ sudo /opt/mssql/bin/mssql-conf setup 做相关配置
3.下⾯查看我们安装的sql server版本
rpm -qa | grep mssql
4.查看安装的路径
find / -name mssql
5.设置开机启动
systemctl enable mssql-server
6.打开1433端⼝
firewall-cmd --zone=public --add-port=1433/tcp --permanent
firewall-cmd --reload
7.⼏个命令
systemctl start mssql-server
systemctl restart mssql-server
systemctl stop mssql-server
systemctl status mssql-server
具体配置路劲为/opt/mssql/bin/mssql-conf
安装 SQL Server 命令⾏⼯具
1,添加yum⽂件
sudo curl -o /pos.po packages.microsoft/config/rhel/po
2,运⾏以下命令以安装  mssql-tools  和 unixODBC 开发⼈员包。
sudo yum install -y mssql-tools unixODBC-devel
3,为⽅便起见,请将  /opt/mssql-tools/bin/  添加到  PATH  环境变量。这样就可以在运⾏⼯具时不指定完整路径。请运⾏以下命令,以便修改登录会话和交互/⾮登录会话的  PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile  echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc  source ~/.bashrc
本地连接:
sqlcmd -S localhost -U SA -P '<YourPassword>'
创建和查询数据:
1,在 sqlcmd 命令提⽰符中,粘贴以下 Transact-SQL 命令以创建测试数据库:
CREATE DATABASE TestDB
2,在下⼀⾏中,编写⼀个查询以返回服务器上所有数据库的名称:
SELECT Name from sys.Databases
3,前两个命令没有⽴即执⾏。必须在新⾏中键⼊  GO  才能执⾏以前的命令:
GO
备份还原数据库:
Linux下备份SqlServer数据库命令
//创建数据库备份⽂件夹 mkdir -pv /usr/local/databackup
//给mussql授予/usr/local/databackup⽂件夹的权限 chown -R mssql:mssql /usr/local/databackup/
//登录数据库 sqlcmd -S 127.0.0.1 -U sa
//备份数据库到指定路径 1> backup database Test to disk='/usr/local/databackup/Test0411.bak' 2> go
Linux下还原数据库
/
/ 登录数据库 sqlcmd -S 127.0.0.1 -U sa
sql数据库备份文件// 查出备份⽂件的逻辑⽂件名(很重要不然会报错) RESTORE FILELISTONLY FROM DISK = '/usr/local/databackup/Test0411.bak'
// 这个时候会显⽰两条数据,可能在Linux下数据会很乱,你到⾥⾯的第⼀列LogicalName对应的值,我这⾥⼀个为standard,另⼀个为standard_log,standard是数据⽂件逻辑名,standard_log是⽇志⽂件逻辑名
// 然后进⾏还原
1> RESTORE DATABASE TestDB FROM DISK = '/usr/local/databackup/Test0414.bak'
#2> WITH MOVE 'standard' TO '/var/opt/mssql/data/TestDB.mdf',
#3> MOVE 'standard_log' TO '/var/opt/mssql/data/TestDB_Log.ldf'
4> go
⼀些排障sql语句:
查询SQLSERVER执⾏过的SQL记录(历史查询记录)
SELECT TOP ation_time, , (QS.statement_start_offset / 2) + 1, ((CASE QS.statement_end_offset WHEN - 1 THEN ) ELSE QS.statement_end_offset END - QS.statement_start_offset) / 2 
查看SQL server是否有阻塞,没有的话blk为0(只有sa有执⾏权限)
exec sp_who 'active'
查看当前的⽤户连接:
SELECT * FROM sys.[sysprocesses] WHERE [spid]>50 --AND DB_NAME([dbid])='gposdb'
查询SQL server的会话等待!
SELECT TOP 10 [session_id], [request_id], [start_time] AS '开始时间', [status] AS '状态', [command] AS '命令', dest.[text] AS 'sql语句', DB_NAME( [database_id] ) AS '数据库名', [blocking_session_id] AS '正在阻塞其他会话的会话ID', der.[wait_t
查询CPU占⽤情况:
SELECT TOP AS SQL_Full --⽗级完整语句 , SUBSTRING ( st.text, ( qs.statement_start_offset/ 2 ) + 1, ( ( CASE statement_end_offset WHEN - 1 THEN DATALENGTH( st.text ) ELSE qs.statement_end_offset END - qs.statement_st