Linux执行SQLSERVER语句的简单方法

linux,执行,sqlserver,语句,简单,方法 · 浏览次数 : 432

小编点评

## 批量删除数据库记录的方法 **步骤 1:安装 sqlcmd 工具** * 首先,使用以下命令安装 sqlcmd 工具,注意版本号可能不同,请根据实际情况进行修改: ```bash ./opt/mssql-tools/bin/sqlcmd-13.0.1.0 -S 10.110.xxx.xx -d xxxxMSS -U xxxxMSS -P 'Tstxxxx!!!!' <<EOFdelete from sometable where patchcode='$1' GOEOFshell处理保存为 /deploy/deletemss ``` * 此命令将下载并安装 sqlcmd 工具,并指定执行命令的 IP 地址、端口号、数据库名称和用户名。 **步骤 2:准备脚本** * 创建一个名为 `delete_records.sql` 的脚本,内容如下: ```sql -- 循环遍历数据库表,删除指定表中的记录 DECLARE @table_name VARCHAR(255); DECLARE @sql_statement VARCHAR(500); SET @sql_statement = N'delete from ' + @table_name + ' where patchcode = '$1';'; -- 执行 SQL 语句 EXEC sp_executesql @sql_statement; -- 打印执行语句 PRINT 'Deleted records from ' + @table_name; ``` * 脚本中循环遍历 `sometable` 表,并使用 `@sql_statement` 变量存储删除语句。 * 每个数据库表的名字 `@table_name` 可以通过参数传递到脚本中。 **步骤 3:执行脚本** * 在命令行中运行脚本: ```bash sqlcmd-13.0.1.0 -S 10.110.xxx.xx -d xxxxMSS -U xxxxMSS -P 'Tstxxxx!!!!' delete_records.sql ``` * 此命令将遍历 `sometable` 表,并根据 `patchcode` 值执行删除操作。 **注意:** * 此脚本需要在执行之前修改 `@table_name` 和 `@sql_statement` 的变量值。 * 确保 `sqlcmd` 工具的版本与数据库版本兼容。 * 请仔细阅读脚本中的 SQL 语句,并确保其安全。

正文

背景

因为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 就可以了
只需要输入编号就可以执行删除操作. 
复制

与Linux执行SQLSERVER语句的简单方法相似的内容:

Linux执行SQLSERVER语句的简单方法

背景 因为WTF的原因.经常有人让执行各种乱七八槽的删除语句 因为产品支持了10多种数据库. 这个工作量非常复杂. 为了简单起见,想着能够批量执行部分SQL. 其他的都处理过了,但是SQLSERVER的有点问题 所以今天有点时间.想着将SQLSERVER的一起也处理掉. 方式 建议使用 sqlcmd

[转帖]Linux中执行shell脚本的4种方法总结

https://www.jb51.net/article/53924.htm 这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下 bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件

Linux上执行内存中的脚本和程序

在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序。 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一个文件描述符,Linux会在/proc/self/fd/<文件描述符>这个路径上创建一个对应描述符的

[转帖]远程执行Linux命令和使用for循环执行Linux命令

记录:363 场景:在CentOS 7.9操作系统上,在主机A上远程执行主机B上的Linux命令。使用for循环执行Linux命令,比如把主机A的/etc/yum.repos.d目录下文件,分发到集群其它节点。 1.使用for循环执行Linux命令 场景:把k8s-master01主机文件分发(拷贝

pwn杂项之linux命令执行

通常pwn题目,时常会考到对Linux命令的一些使用,比如当cat被禁用的时候,可以使用tac,或者别的命令代替 下面是buu上的应该题目,考察的就是对liunx命令的理解,以及对程序的分析。 题目地址:BUUCTF在线评测 (buuoj.cn) 扩展:1.当我们输入第一个命令之后加上;然后后面

[转帖]Linux环境使用apt-get安装telnet、curl、ifconfig、vim、ping等工具

https://www.cnblogs.com/east7/p/15834866.html 当在Linux服务器执行Telnet命令时,如果提示command not found: telnet,说明服务器上并未安装Telnet命令,需要安装此命令。下面介绍在linux服务器如何安装telnet、c

[转帖]Linux之Shell 脚本执行三种方式

什么是Shell? Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash ShellShell也是一门编程语言<解释型的编程语言>,即shell脚本一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支

Linux:进程模型和进程管理

在Linux系统中,执行一个程序或命令就可以触发一个进程,系统会给予这个进程一个ID,称为PID,同时根据触发这个进程的用户与相关属性关系,基于这个PID一组有效的权限设置。举个常见的例子,我们要操作系统的时候通常是利用ssh连接程序或直接在主机上登录,然后获取shell。默认的shell是bash,对应的路径为/bin/bash,那么同时间的每个人登录都是执行/bin/bash,不过每个人获取的

如何优雅地退出程序

在Linux系统中执行操作时,进程可以通过发送和接收信号与其他进程进行通信。信号是用于通知进程发生特定事件或请求进程采取特定动作的软件中断。 以下是Linux系统中常见的一些信号及其含义: 1. **SIGINT (2)**:中断信号,通常由终端用户按下`Ctrl + C`发送给前台进程。该信号用于

[转帖]Linux中最全shell命令&常用注意事项

在编辑linux脚本中不断的会用到复杂的脚本编辑,写文章记录。 Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 目录 推荐书籍: Linux常用命令 Linux 常用命令 在linux shell脚本中root切换到普通用户执行脚本 Linux—shell中$(( ))、$(