在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容
一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅。
图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接(系统自带,建立一个后缀为.udl的文件即可体验),进行可视化的操作。

Figure 1使用ConnMaker.exe创建的可视化连接查询实例
不过这次用户的需求是因为他们在尝试进行连接到SQL服务器集群的时候仅仅是他的那个实例会偶尔出现连接失败的问题,为了验证是外网环境而非集群本身的问题,我们需要建立一个类似的环境(非本机的异机客户端连接)去模拟并记录这些事情。
这时候使用图形化界面可能太过于直观,所以本次操作使用命令行方式进行连接,测试,并输出。
同其他数据库软件提供商类似,微软也提供了基于命令行方式的连接,在安装有SQL Server服务器的环境下可以直接使用SQLPS这个命令来进行命令行操作,而对于题目要求的非SQL客户端环境下我们同样也有对策,使用SQLCMD即可。
软件很小巧,可以直接从微软的网站上下载获取,Microsoft® Command Line Utilities 11 for SQL Server®是SQLCMD对应的产品名称。如果出现安装失败,请先安装对应的新版ODBC驱动:Microsoft® ODBC Driver 11 for SQL Server® - Windows然后在尝试安装SQLCMD即可,请注意,软件有32位与64位之分,请根据自己的机器进行下载。
关于SQLCMD的更详细使用说明可以参考MSDN的官方支持:使用 sqlcmd 实用工具
本实例中使用到了利用系统自身验证(Integrated Security)连接数据,并在指定数据库的特定表内查询,返回一些查询结果,用这个结果来判断是否连接中断,以及是否完成正常查询。
设置任务计划,编写批处理,每天每小时延时一个随机时间(0~59秒)执行,输出后查看结果。

Figure 2在这里进行设置任务计划的随机延迟与间隔时间
##最小化执行脚本##
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",)(window.close)&&exit
:begin
##设置日期时间##
set ntime=%TIME: =%
set stamp=%date:~,%%date:~,%%date:~,%%ntime:~,%%ntime:~,%
set sq=%time:~,%
##输出生成T-SQL脚本语句,依据秒随机生成一个需要返回的行数,并在总输出前加1确保好识别##
@echo SELECT TOP %sq% [AreaId] >%~dp0\%stamp%.sql
@echo ,[AreaName] >>%~dp0\%stamp%.sql
@echo ,[number_ps] >>%~dp0\%stamp%.sql
@echo FROM [SXSystemSTS].[dbo].[Area] >>%~dp0\%stamp%.sql
##执行sqlcmd,并输出查询内容##
sqlcmd -S 10.5.70.50\ypcgzx -I -i "%~dp0%stamp%.sql" -o "%~dp0ypcgzx%stamp%.1%sq%.txt"
##删除过往的t-sql脚本语句##
del /F /Q %~dp0*.sql
上面是批处理命令,最终的输出效果是每到定时的时间执行一次,并输出成txt文本进行方便查阅。

Figure 3检查是否有出错信息可以仅查看文件大小为1KB的文件即可

Figure 4如果出现连接错误,会生成这三行错误记录,而对应的文件大小约等于1KB,因此这样可以减少排查范围
在制作脚本的过程中遇到了一个小问题就是来自于系统的time命令,有意思的是当他输出时间,且在的小时的时候1~9不会输出成01~09,因此给脚本带来了一些不便:

Figure 5因为生成的文件名中间有空格,而不能被sqlcmd所识别,即便是引号也是无济于事
因此需要自己定义一个新的函数ntime,具体操作见上面的批处理内容。

Figure 6系统自带time命令被改造成可以进行双位数显示的小时
希望上面的一些总结能帮助大家进行更好的自动化任务。
部分信息来自于:http://www.larmib.com/2011/dos-command-to-get-the-2-digit-hour-minute-and-second/、http://msdn.microsoft.com/zh-cn/library/ms180944.aspx、http://technet.microsoft.com/zh-cn/library/cc748841(v=ws.10).aspx
-=EOB=-
在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容的更多相关文章
- SQL Server2008 R2命令行启动及停止SQL服务的方法
===================================================== 在 SQL Server中,想要启动或停止SQL Server服务,通过SQL Server ...
- Jmeter命令行方式启动
在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...
- mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)
原文链接https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/73805962 Mysql导入导出sql,txt,excel 首先我们通过命令行 ...
- Ubuntu下几个命令行方式使用的图片浏览工具
想找几个Ubuntu下可以以命令行方式使用的图片浏览工具. Google了一些资料,找到下面几个web: 1.pho:轻巧的命令行图片查看器 其中介绍了工具pho,其功能特点,见下面的转帖内容: ph ...
- 使用cmd命令行方式登录ftp上传下载数据
部分用户在使用ftp工具登录空间上传下载过程中经常会遇到各种问题,如主动模式,被动模式,以及其他导致无法登陆ftp .上传数据.下载数据的问题,这时候不妨使用一下命令行方式.命令行下可以避免很多由于f ...
- iOS:命令行方式使用OSChina托管私有代码
一.介绍 在项目开发中,使用版本控制工具是必不可少的开发工具,它可以帮助我们程序员写完代码后及时提交备份,防止因个人操作导致代码被误删除了或者丢失了,安全可靠.同时,使用版本控制器工具也可以很方便的进 ...
- 个人软件过程5 git命令行方式超简洁教程
虽然许多IDE对git的支持不错,但用命令行方式,有助于对git本身的理解.这里对实际工作中,使用git的流程,以及与其相关的命令 小结一下,基本上,掌握这些命令,就能自如的在工作中使用. 1.git ...
- JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)
1.命令行方式 dos命令行,常见的命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd/:退回到根目录 del:删除文 ...
- linux命令行下导出导入.sql文件
一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1.导出数据和表结构(以管理员身份运行): ------------------------------------ ...
随机推荐
- JavaMail和James的秘密花园
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micros ...
- 基于TCP协议的socket通信
一.服务器端 1.创建serverSocket,即服务器端的socket,绑定指定的端口,并侦听此端口 ServerSocket server = new ServerSocket(8888); 2. ...
- web程序的路径笔记
"/"与”\“区别:”/“是unix系统区分文件层级的标志,因为当前web应用程序在服务器端大都使用基于unix系统开发的操作系统,所以web程序包括浏览器里url都遵以”/“来区 ...
- 安卓学习之--UI控件用法 单选 按钮 下拉框
1.单选 .RadioGroup 可将各自不同的RadioButton ,设限于同一个Radio 按钮组,同一个RadioGroup 组里的按钮,只能做出单一选择(单选题). <RadioGro ...
- wdk中ramdisk代码解读
入口函数,即驱动加载函数 NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) ...
- like语句百分号前置会使用到索引吗?
like语句百分号前置会使用到索引吗? 前几天看了这篇文章:谈SQL Server对like '%关键词%' 处理时的索引利用问题 看完了之后,我很想知道这篇文章是不是临时工写的?还是网站的主人写的, ...
- TaintDroid剖析之File & Memiry & Socket级污点传播
TaintDroid剖析之File & Memiry & Socket级污点传播 作者:简行.走位@阿里聚安全 1.涉及到的代码文件 TaintDroid在File, Memory以及 ...
- ABP理论学习之工作单元(Unit of Work)
返回总目录 本篇目录 公共连接和事务管理方法 ABP中的连接和事务管理 仓储类 应用服务 工作单元 工作单元详解 关闭工作单元 非事务的工作单元 工作单元方法调用其它 工作单元作用域 自动保存 IRe ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- ASP.Net开发基础温故知新学习笔记
申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页. 一.一般处理程序基础 (1)表单提交注意点: ①GET通过URL,POST通过报文体: ②需在H ...