Linux执行SQLSERVER语句的简单方法
原创
©著作权归作者所有:来自51CTO博客作者jinanxiaolaohu6的原创作品,请联系作者获取转载授权,否则将追究法律责任
背景
因为WTF的原因.经常有人让执行各种乱七八槽的删除语句
因为产品支持了10多种数据库.
这个工作量非常复杂.
为了简单起见,想着能够批量执行部分SQL.
其他的都处理过了,但是SQLSERVER的有点问题
所以今天有点时间.想着将SQLSERVER的一起也处理掉.
方式
建议使用 sqlcmd命令的方式进行处理
通过sqlcmd 执行脚本 加参数的方式实现 数据库记录的自动删除.
注意这里模仿了一个瀚高高手的玩法
也借鉴了 51cto 里面 安装数据库的方式方法
第一步安装sqlcmd
yum 源设置
如果是linux7则使用如下
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
如果是linux8则使用如下
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/msprod.repo
第二步 yum makecache
第三步 yum install mssql-tools-14.0.2.0-1 -y
注意要多次输入 YES 同意试用协议才可以.
注意不能使用 17的版本. 会提示无法连接, 比较难搞
第二步脚本执行SQL
需要注意. 微软的安装完之后默认将二进制放到了
/opt/mssql-tools/bin/
注意 我的这个版本就是
sqlcmd-13.0.1.0
可以编写一套脚本
注意 密码带特殊字符必须用单引号括起来.
/opt/mssql-tools/bin/sqlcmd-13.0.1.0 -S 10.110.xxx.xx -d xxxxMSS -U xxxxMSS -P 'Tstxxxx!!!!' <<EOF
delete from sometable where patchcode='$1'
GO
EOF
shell处理
保存为 /deploy/deletemss
需要处理是为
/deploy/deletemss something 就可以了
只需要输入编号就可以执行删除操作.