一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅。

图形界面方式,使用微软自己的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.aspxhttp://technet.microsoft.com/zh-cn/library/cc748841(v=ws.10).aspx

-=EOB=-

在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容的更多相关文章

  1. SQL Server2008 R2命令行启动及停止SQL服务的方法

    ===================================================== 在 SQL Server中,想要启动或停止SQL Server服务,通过SQL Server ...

  2. Jmeter命令行方式启动

    在性能测试过程中,我们常常遇到这样的问题,使用Jmeter的GUI界面进行大并发量的性能测试时,界面容易卡死,无法继续进行性能测试.通过使用命令行方式启动jmeter是一个不错的方式.下面就简单介绍一 ...

  3. mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)

    原文链接https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/73805962 Mysql导入导出sql,txt,excel 首先我们通过命令行 ...

  4. Ubuntu下几个命令行方式使用的图片浏览工具

    想找几个Ubuntu下可以以命令行方式使用的图片浏览工具. Google了一些资料,找到下面几个web: 1.pho:轻巧的命令行图片查看器 其中介绍了工具pho,其功能特点,见下面的转帖内容: ph ...

  5. 使用cmd命令行方式登录ftp上传下载数据

    部分用户在使用ftp工具登录空间上传下载过程中经常会遇到各种问题,如主动模式,被动模式,以及其他导致无法登陆ftp .上传数据.下载数据的问题,这时候不妨使用一下命令行方式.命令行下可以避免很多由于f ...

  6. iOS:命令行方式使用OSChina托管私有代码

    一.介绍 在项目开发中,使用版本控制工具是必不可少的开发工具,它可以帮助我们程序员写完代码后及时提交备份,防止因个人操作导致代码被误删除了或者丢失了,安全可靠.同时,使用版本控制器工具也可以很方便的进 ...

  7. 个人软件过程5 git命令行方式超简洁教程

    虽然许多IDE对git的支持不错,但用命令行方式,有助于对git本身的理解.这里对实际工作中,使用git的流程,以及与其相关的命令 小结一下,基本上,掌握这些命令,就能自如的在工作中使用. 1.git ...

  8. JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)

    1.命令行方式 dos命令行,常见的命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd/:退回到根目录 del:删除文 ...

  9. linux命令行下导出导入.sql文件

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1.导出数据和表结构(以管理员身份运行): ------------------------------------ ...

随机推荐

  1. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  2. java反射技术详解

    反射: 其实就是动态的从内存加载一个指定的类,并获取该类中的所有的内容. 反射的好处:大大的增强了程序的扩展性. 反射的基本步骤: 1. 获得Class对象,就是获取到指定的名称的字节码文件对象. 2 ...

  3. Des与3Des加密解密

    /// <summary> /// Des和3Des算法 /// </summary> public class Des { /// <summary> /// D ...

  4. HTML+CSS中的一些小知识

    今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...

  5. (转载)H.264码流的RTP封包说明

    H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) ...

  6. python读取文本文件

    1. 读取文本文件 代码: f = open('test.txt', 'r') print f.read() f.seek(0) print f.read(14) f.seek(0) print f. ...

  7. "SQL Server does not handle comparison of NText, Text, Xml, or Image data types."

    "SQL Server does not handle comparison of NText, Text, Xml, or Image data types." sql2000 ...

  8. Expert 诊断优化系列------------------锁是个大角色

    前面几篇已经陆续从服务器的几个大块讲述了SQL SERVER数据库的诊断和调优方式.加上本篇可以说已经可以完成常规的问题诊断及优化,本篇就是SQL SERVER中的锁.为了方便阅读给出系列文章的导读链 ...

  9. Lesson 10 Not for jazz

    Text We have an old musical instrument. It is called a clavichord. It was made in Germany in 1681. O ...

  10. ASP.NET Web API的Controller是如何被创建的?

    Web API调用请求的目标是定义在某个HttpController类型中的某个Action方法,所以消息处理管道最终需要激活目标HttpController对象.调用请求的URI会携带目标HttpC ...