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

图形界面方式,使用微软自己的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. bzoj 2563: 阿狸和桃子的游戏

    开始写了一些东西但是后来浏览器挂了就没有存下来简直!!!!!!!!!!!!!QAQ 不想再写一遍了...总之是简单贪心. #include <iostream> #include < ...

  2. Jtable 表格按多列排序(支持中文汉字排序)

    这两天公司让做一个Jtable表格的排序,首先按A列排序,在A列相等时按B列排序,B列相等时按C列排序,ABC三列可以任意指定,最多分三列,这样的一个需求.由于我是大神,所以必须做了出来.ok,不自恋 ...

  3. 高通AR和友盟SDK的AndroidManifest.xml合并

    高通AR和友盟SDK的AndroidManifest.xml合并 因为高通的AR在android中一开始就要启动,所有主Activity要设置为高通的Activity,即android:name=&q ...

  4. sqL编程篇(三) 游标与存储过程

    sql编程2 游标与存储过程 sql编程中的游标的使用:提供的一种对查询的结果集进行逐行处理的一种方式不用游标的处理解决方式:逐行修改工资update salar set 工资=‘新工资’ where ...

  5. nginx-nginx.conf脚本

    user www www; worker_processes ; error_log /usr/local/nginx/logs/error.log info ; pid /var/run/nginx ...

  6. 如何在Windows7上完全卸载Oracle 11g(转)

    http://blog.csdn.net/haishu_zheng/article/details/19180081

  7. 细数iOS上的那些安全防护

    细数iOS上的那些安全防护  龙磊,黑雪,蒸米 @阿里巴巴移动安全 0x00 序 随着苹果对iOS系统多年的研发,iOS上的安全防护机制也是越来越多,越来越复杂.这对于刚接触iOS安全的研究人员来说非 ...

  8. Code First开发系列之数据库迁移

    返回<8天掌握EF的Code First开发>总目录 本篇目录 开启并运行迁移 使用迁移API 应用迁移 给已存在的数据库添加迁移 EF的其他功能 本章小结 自我测试 本系列的源码本人已托 ...

  9. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  10. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析

    文章中引用的代码均来自https://github.com/vczh/tinymoe.   实现Tinymoe的第一步自然是一个词法分析器.词法分析其所作的事情很简单,就是把一份代码分割成若干个tok ...