bat/cmd批处理连接SqlServer数据库查询脚本

所属分类: 脚本专栏 / DOS/BAT 阅读数: 1625
收藏 0 赞 0 分享

难得今天晚上9点前赶回家,而且最近草稿箱也压了不少“湿货”,就挑一篇发出来好了!不过在发文章之前先吐槽一下那个从昨天攻击张戈博客到现在还在继续的无聊蛋疼之人!

本来就算开启了云加速全缓存也是扛不住的,因为静态中混着动态请求,比如浏览计数。还好灵机一动,对这些动态做了点小手脚,现在基本毫无压力了!粗略分析一下这个攻击博客的小人,无外乎是2种人:

①、最近张戈博客流量大涨,估计遭人妒忌或者是挡人财路;
②、来张戈博客换友链被拒或被忽略的人,怀恨在心。

对于①:俗话说无人妒忌是庸才,那么无人妒忌的网站也不能算是优秀的网站。其实,你只闻到我的香水,却没看到我的汗水,你只看到了我的排名,却没看到我的用心。

建站一年多,或多或少对SEO有一些自己的见解。结合张戈博客的发展历程,我认为真正以用户体验、设身处地为用户着想的内容才是最好的“农家肥”,而不是那些短期就能看到成效的“化肥”!写文章时我会时刻想着用户是否看得懂,怎样写才能让用户更容易?总之,文章如果只是贴上你的测试过程,那这博客就真的只是印象笔记了!

所以,如果你是眼红而攻击我,那就继续吧,不把张戈博客打死你就是孬种。

对于②:怎么说呢,前面那篇文章已经说了张戈博客的友链要求,但还是有不少朋友热心的请求交换友链。可是你的网站确实还不够看,达不到我的要求,你要我怎么弄?如果都同意,那我首页不就变成导航了吗?如果是因为拒绝友链而攻击我,那么请继续,但千万别让我知道了是哪个网站,否则你懂的。。。

好了,废话说的够多的了,下面说正事。

前面也说了,我现在的新公司大部分服务器是Windows Server环境,前人都是用Python写的监控脚本,最近正好遇到了一个添加Zabbix监控项目的需求,我就琢磨着用我刚工作时拿手的bat批处理来完成这个项目。

不出意外,批处理果然可以胜任,不过要借助sqlserver命令行工具的帮助,代码如下:

@echo oFF
title Zabbix监控之数据库查询bat脚本
::名称:Zabbix监控脚本批处理版
::描述:通过osql命令行工具查询数据库,进行一些自定义监控
::支持:需要osql.exe和MSVCR71.DLL支持,可以放到脚本同级目录
::时间:2015-03-20

:: 进入脚本当前目录
cd "%~dp0"

::取得参数
set "Usg=%1"

::判断参数
if "%Usg%"=="" goto Example

::初始化连接参数
set host="10.172.10.80" 
set db="DBname"
set user="DBuser"
set pd="password"

::根据不同的参数执行不同的查询代码(自行调整)
if "%Usg2%"=="monitor1" (
  ::监控1
	set sql="sql语句1") else if "%Usg%"=="monitor2" (
	::监控2
	set sql="sql语句2" ) else if "%Usg%"=="monitor3" (
	::监控3
	set sql="sql语句3") else if "%Usg%"=="monitor4" (
	::监控4
	set sql="sql语句4"
)
::连接数据库并执行查询(此处的for是对查询到的结果做提取,所以需要按照实际情况自行搞定。。)
for /f "skip=2 delims= " %%i in ('osql.exe -S %host% -U %user% -P %pd% -d %db% -Q %sql%') do ( 
	set result=%%i
	goto :result
)

::直接不带参数执行将提示用法
:Example
echo Example:
echo=
echo %~nx0 Conditions
echo=
echo ------------------------------
echo Script will auto exit in 5s...
ping -n 5 127.1>nul
exit

::输出结果后自动退出
:result
echo %result%

使用方法:

①、验证执行:在CMD中执行【脚本.bat + 监控名】即可,比如:D:\>monitor1.bat monitor1
②、关联zabbix:zabbix中怎么设置我就不赘述了,注意下zabbix配置文件zabbix_command.conf如下添加:

UserParameter=NewMonitor[*],cmd /k c:\zabbix\NewMonitor.bat monitor1

Ps:主要是注意,需要添加一个cmd /k前置,否则zabbix执行不了,也得不到数据。

最后附几个 osql.exe 命令的实用参数及相关下载地址:

-U login_id 
 用户登录 ID。登录 ID 区分大小写。 
 
-P password 
 是用户指定的密码。如果未使用 -P 选项,osql 将提示输入密码。如果在命令提示符的末尾使用 -P 选项而不带密码,osql 使用默认密码 (NULL)。密码区分大小写。

-S server_name[\instance_name] 
 指定要连接的 Microsoft® SQL Server™ 2000 实例。在该服务器上指定 server_name 以连接到 SQL Server 的默认实例。在该服务器上指定 server_name\instance_name 以连接到一个已命名的 SQL Server 2000 的实例。如果未指定服务器,osql 将连接到本地计算机上的 SQL Server 默认实例。从网络上的远程计算机执行 osql 时,此选项是必需的。 

-d db_name 
 启动 osql 时发出一个 USE db_name 语句。

-Q "query" 
 执行查询并立即退出 osql。将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。

-q "query" 
 启动 osql 时执行查询,但是在查询完成时不退出 osql。(注意查询语句不应包含 GO)。如果从批处理文件中发出查询,请使用 %variables 或环境 %variables%。
例如: 
 SET table = sysobjects 
 osql /q "Select * from %table%"

sqlserver命令行连接查询工具osql下载地址:https://www.jb51.net/database/308702.html

转载请注明: bat/cmd批处理连接SqlServer数据库查询脚本

更多精彩内容其他人还在看

XP下WORKSTATION启动慢导致系统启动时间过长问题的解决方法

通常安装过VMwareWorkstation导致系统启动过慢,经分析后,发现WORKSTATION服务启动时间较长,禁用后效果明显,可WORKSTATION是WINDOWS的共享基础服务,像我就离不开这个服务的,所以只需下面的脚本就可以解决问题了
收藏 0 赞 0 分享

IP动态切换bat脚本

因为公司办公室要设置固定IP才行,而家里的IP段和公司是不一样的,家里采用了DHCP机制,这样每次就得改IP设置,很是不方便,就写了这个脚本来动态切换,很流畅的说! WINXP,WIN7测试通过
收藏 0 赞 0 分享

奥汀管理员不切换bat脚本 V1.0-Design by Adobo

很多程序不能在管理员权限下运行,尤其是一些破解的程序。所以写了这个脚本,不影响正常的管理员,也不用切换到USERS账户~
收藏 0 赞 0 分享

cmd NTSD命令用法详解

ntsd 是一条dos命令,功能是用于结束一些常规下结束不了的死进程
收藏 0 赞 0 分享

win2003下杀任何进程的命令(taskkill,ntsd)

才能关掉一个用任务管理器关不了的进程?大多数人想到的都是专门工具,如IceSword。其实用Windows自带的工具就能杀大部分进程
收藏 0 赞 0 分享

Windows和 Linux下生成以当前时间命名文件的方法

在 Windows、Linux 操作系统,分别利用BAT批处理文件和Shell脚本,生成类似“20110228_082905.txt”以“年月日_时分秒”命名的文件
收藏 0 赞 0 分享

用批处理去掉快捷方式上的小箭头图案的代码

用批处理去掉快捷方式上的小箭头图案的代码,需要的朋友可以参考下。
收藏 0 赞 0 分享

xcopy 实现批处理拷贝文件或文件夹

xcopy 是一个很有用的doc命令,应该学习学习,XCOPY 还有众多的功能, 是加参数来完成的。上面的/s /e 参数的作用分别是把子目录和空目录都复制过去
收藏 0 赞 0 分享

安全工具netsh IPSec使用方法[ip安全策略]

IPSec的全称是Internet Protocol Security,翻译成中文就是Internet协议安全性。它的作用主要有两个:一个是保护 IP 数据包的内容,另外一点就是通过数据包筛选并实施受信任通讯来防御网络攻击
收藏 0 赞 0 分享

注册表危险组件删除功能批处理

用批处理实现的删除注册表危险组件的代码,主要应用于服务器,个人电脑不建议使用。
收藏 0 赞 0 分享
查看更多