在SQLServer数据库当中,除了大家熟知的基于SSMS来管理SQLserver数据库之外,还有一个很强大的命令行工具sqlcmd。该命令行工具基本等同于Oracle SQL*Plus以及 MySQL命令提示符下以实现相关的运维管理工作。尤其是需要多个脚本执行的时候,sqlcmd便派上用场了。本文描述了sqlcmd的一些常规用法以及给出如何通过批处理方式执行脚本的示例。

一、获取sqlcmd帮助

C:\>sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 12.0.2000.8 NT   %当前版本为SQLserver2014 12.0%
Copyright (c) 2014 Microsoft. All rights reserved.usage: Sqlcmd            [-U login id]          [-P password][-S server]            [-H hostname]          [-E trusted connection][-N Encrypt Connection][-C Trust Server Certificate][-d use database name] [-l login timeout]     [-t query timeout][-h headers]           [-s colseparator]      [-w screen width][-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers][-c cmdend]            [-L[c] list servers[clean output]][-q "cmdline query"]   [-Q "cmdline query" and exit][-m errorlevel]        [-V severitylevel]     [-W remove trailing spaces][-u unicode output]    [-r[0|1] msgs to stderr][-i inputfile]         [-o outputfile]        [-z new password][-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit][-k[1|2] remove[replace] control characters][-y variable length type display width][-Y fixed length type display width][-p[1] print statistics[colon format]][-R use client regional setting][-K application intent][-M multisubnet failover][-b On error batch abort][-v var = "value"...]  [-A dedicated admin connection][-X[1] disable commands, startup script, environment variables [and exit]][-x disable variable substitution][-? show syntax summary]

二、最常用的选项

服务器选项(-S),用于标识 sqlcmd 连接到的 Microsoft SQL Server 实例。
身份验证选项(-E、-U 和 -P),用于指定 sqlcmd 连接到 SQL Server 实例所使用的凭据。-E 选项为默认选项,毋须指定。输入选项(-Q、-q 和 -i),用于标识 sqlcmd 输入的位置。
输出选项 (-o),用于指定 sqlcmd 输出所在的文件。  

三、常见用法

使用 Windows 身份验证连接到默认实例,以交互方式运行 Transact-SQL 语句:sqlcmd -S <ComputerName>上述示例中,未指定 -E,因为它是默认选项,而且 sqlcmd 使用 Windows 身份验证连接到默认实例。使用 Windows 身份验证连接到命名实例,以交互方式运行 Transact-SQL 语句:sqlcmd -S <ComputerName>\<InstanceName>  或者  sqlcmd -S .\<InstanceName>使用 Windows 身份验证连接到命名实例,并指定输入和输出文件:sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>使用 Windows 身份验证连接到本地计算机上的默认实例,执行查询,并在查询运行完毕后使 sqlcmd 保持运行状态:sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person"使用 Windows 身份验证连接到本地计算机上的默认实例,执行查询,将输出定向到某个文件,并在查询运行完毕后使 sqlcmd 退出:sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt使用 SQL Server 身份验证连接到命名实例,以交互方式运行 Transact-SQL 语句,并由 sqlcmd 提示输入密码:sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>

四、交互用法

交互方式,在请在未使用 -Q、-q、-Z 或 -i 选项指定任何输入文件或查询的情况下运行实用工具。例如:sqlcmd -S <ComputerName>\<InstanceName>交互方式2个常用的命令GO + Enter   : 将语句发送到SQLserver服务器并执行Exit 或 QUIT : 退出sqlcmd命令行工作方式:REST        : 清除语句缓存,键入 ^C 将使 sqlcmd 退出,在发出 GO 命令后,还可以用 ^C 停止语句缓存的执行。:ED          : 使用编辑器编写SQL示例      C:\>sqlcmd -U sa -P Sqlserve -H HQ16361> use testdb;2> go已将数据库上下文更改为 'testdb'。1> select * from t2;2> goid          id2         ename----------- ----------- -------------------1           1 NULL1        NULL NULL1           2 John(3 rows affected)1> exit 

五、使用sqlcmd运行SQL脚本

这个是比较管用的。对于熟悉Oracle SQL*Plus或者MySQL命令行的童鞋来说,有这个工具执行脚本,尤其是多个脚本需要执行的情绪,那个爽啊,不说了,直接看用法。

1、执行单个脚本

脚本内容如下C:\>type E:\temp\Testsql.sqlUSE testdb;GOSELECT * FROM t2;GO执行脚本C:\>sqlcmd -U sa -P Sqlserve -H HQ1636 -i E:\temp\Testsql.sql -o E:\temp\Testresult.txtC:\>type E:\temp\Testresult.txt已将数据库上下文更改为 'testdb'。id          id2         ename----------- ----------- --------------------1           1 NULL1        NULL NULL1           2 John(3 rows affected)   

2、通过专用管理连接使用sqlcmd

下面使用专用连接方式杀死特定的sessionC:\>sqlcmd -U sa -P Sqlserve -H HQ1636 -A1> SELECT blocking_session_id FROM sys.dm_exec_requests WHERE blocking_session_id<>0;2> goblocking_session_id-------------------54(1 rows affected)1> kill 54;2> go

3、使用 sqlcmd 执行存储过程

C:\>type E:\temp\TestProc.sqlCREATE PROC proc_query_t2 @ename VARCHAR(20)ASSELECT  *FROM    t2WHERE   ename = @ename;GOC:\>sqlcmd -U sa -P Sqlserve -H HQ1636 -i E:\temp\TestProc.sqlC:\>sqlcmd -U sa -P Sqlserve -H HQ16361> :setvar ename robin1> exec testdb.dbo.proc_query_t2 $(ename)2> goid          id2         ename----------- ----------- --------------------1           1 Robin(1 rows affected)

4、使用 sqlcmd 进行数据库日常管理

C:\>type E:\temp\DB_bak.sqlUSE master;GOBACKUP DATABASE [$(db)] TO DISK='$(bakfile)'C:\>sqlcmd -U sa -P Sqlserve -H HQ16361> :setvar db testdb1> :setvar bakfile e:\temp\testdb01.bak1> :r e:\temp\DB_bak.sql已将数据库上下文更改为 'master'。1> go已为数据库 'testdb',文件 'testdb' (位于文件 1 上)处理了 368 页。已为数据库 'testdb',文件 'testdb_log' (位于文件 1 上)处理了 5 页。BACKUP DATABASE 成功处理了 373 页,花费 0.377 秒(7.729 MB/秒)。

5、sqlcmd 对多个实例执行代码

2> :connect 192.168.1.194 -U robin -P xxSqlcmd: Successfully connected to server '192.168.1.194'.1> select getdate()2> go-----------------------2016-03-17 13:31:16.390(1 rows affected)1> :connect 192.168.1.207,2433 -U sa -P 123Sqlcmd: Successfully connected to server '192.168.1.207,2433'.1> select getdate()2> go-----------------------2016-03-17 13:32:25.787(1 rows affected)

6、使用批处理方式执行任务

这个对于运维的童鞋来说实在是幸福,可以将脚本封装到批处理.bat文件以及加到windows计划任务。C:\>type e:\temp\batch.bat@echo offsqlcmd -U sa -P Sqlserve -H HQ1636 -i e:\temp\all.sql -b -o e:\temp\out.logC:\>type e:\temp\all.sql:r e:\temp\driver.sql:r e:\temp\hostinfo.sqlC:\>type e:\temp\hostinfo.sqlPRINT 'Below is host info.';PRINT '=================================';USE [master];GOEXEC xp_msver;GOC:\>type e:\temp\driver.sqlPRINT 'Below is drive info.';PRINT '=================================';USE master;GOEXEC xp_fixeddrives;GOC:\>e:\temp\batch.bat    %执行批处理脚本%Below is drive info.=================================已将数据库上下文更改为 'master'。drive MB 可用空间    ----- -----------C           99784D          138623E           26783F          217172(4 rows affected)Below is host info.=================================已将数据库上下文更改为 'master'。Index  Name                             Internal_Value Character_Value                                           ------ -------------------------------- -------------- --------------------------------------------------1 ProductName                                NULL Microsoft SQL Server                                      2 ProductVersion                           786432 12.0.2000.8                                               3 Language                                   2052 中文(简体,中国)                                          4 Platform                                   NULL NT x64                                                    5 Comments                                   NULL SQL                                                       6 CompanyName                                NULL Microsoft Corporation                                     7 FileDescription                            NULL SQL Server Windows NT - 64 Bit                            8 FileVersion                                NULL 2014.0120.2000.08 ((SQL14_RTM).140220-1752)               9 InternalName                               NULL SQLSERVR                                                  10 LegalCopyright                             NULL Microsoft Corp. All rights reserved.                      11 LegalTrademarks                            NULL Microsoft SQL Server is a registered trademark            12 OriginalFilename                           NULL SQLSERVR.EXE                                              13 PrivateBuild                               NULL NULL                                                      14 SpecialBuild                          131072008 NULL                                                   15 WindowsVersion                        131072008 6.1 (7601)                                             16 ProcessorCount                                4 4                                                      17 ProcessorActiveMask                        NULL                f                                       18 ProcessorType                              8664 NULL                                                   19 PhysicalMemory                            16297 16297 (17088618496)                                    20 Product ID                                 NULL NULL  

基于sqlcmd命令行工具管理SQL server相关推荐

  1. Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控

    Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控 2-1 JVM的参数类型 标准参数 x参数 XX参数 2-2 查看JVM运行时参数 2-3 jstat查看JVM统计信息 2- ...

  2. query登录linux命令,在Linux系统中使用sqlcmd命令连接与查询SQL Server

    本文根据微软官方手册整理完成 This topic provides connection requirements and guidance for SQL Server vNext CTP 1.3 ...

  3. shell打开wifi命令_MacWiFi:一款管理Mac系统WIFI的命令行工具(包含交互式Shell)...

    今天给大家介绍的是一款名叫mac-wifi的命令行工具,它可以管理macOS系统的无线网络,并且还提供了交互式Shell. mac-wifi mac-wifi脚本可以查询或管理macOS平台上的WiF ...

  4. 图解sql server 命令行工具sqlcmd的使用

    一 操作实例 安装了sql server后此工具已经有了: 以sa登录: 打个命令,没反映: 可执行操作系统命令:加上!!即可: 查看帮助: 再打命令,也没反映:查询结果不显示: 要加上go,才行: ...

  5. 命令行管理sql server

    给客户发布个项目,基于sql server数据库的,布署的时候嫌安装sql server安装麻烦,而且还不是正版,开始想装个MSDE得了,后来考虑到只支持到2000,所以还是决定装个sql serve ...

  6. MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

    这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter.它支持在SQL Server.Azure SQL DB以及Azure SQL DW中为数据库生成 ...

  7. 基于Fluent Terminal和Cmder打造一个美观的Windows命令行工具

    前言   相信有很多小伙伴跟我一样,觉得Windows的原生命令行工具具有很多缺点:传统的黑底白字(Windows PowerShell则是蓝底白字)极不美观,复制文本不方便,不支持多Tab页导致多窗 ...

  8. 使用命令行工具(hpssacli/storcli)对LSI阵列卡进行高效管理

    LSI公司(LSI Corporation)(NASDAQ:LSI)(中文:艾萨华)是一家总部位于加利福尼亚州米尔皮塔斯 (Milpitas) 的半导体和软件领先供应商,其主要产品包括:RAID控制器 ...

  9. 在服务器上备份文件的命令行,使用 Stsadm 命令行工具备份服务器场 (Search Server 2008)...

    使用 Stsadm 命令行工具备份服务器场 (Search Server 2008) 06/16/2015 本文内容 更新时间: 2009年6月 应用到: Microsoft Search Serve ...

最新文章

  1. python时间序列指数平滑预测_时间序列分析预测实战之指数平滑法
  2. 杭电1856More is better
  3. Openstack rabbitMQ 安装与配置
  4. JAVA——仿Linux命令行文件管理系统命令的简单实现
  5. GDCM:iU22原始数据提取器的测试程序
  6. HIVE时间戳错误unix_timestamp时间不同环境相差8小时
  7. 信息学奥赛C++语言:判断奇偶
  8. KEIL, MDK 关于C99结构体变量初始化
  9. requests-get请求
  10. Firebug 入门指南
  11. android 连接蓝牙耳机 的判断代码,如何验证Android上是否连接了蓝牙耳机?
  12. PhysX碰撞检测之onContact和onTrigger
  13. 周爱民:真正的架构师是没有title的
  14. python获取大小写字母、数字,各种字符
  15. 【pandas】统计指标
  16. 前端面试总结——http、html和浏览器篇
  17. 图书馆管理系统课程设计
  18. Transformer 中 比较晦涩难懂的东西
  19. 使用AFN上传图片 下载图片
  20. [转]网易云音乐API分析

热门文章

  1. 文凭-决定的人生成败?上
  2. 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
  3. 百度eCharts体验
  4. Java中的JSON
  5. Javascript Java C++系列
  6. VMware vSphere简介
  7. 用远线程实现文件自删除
  8. 阿里云数据库POLARDB技术沙龙火热报名中,李飞飞,曹伟 众大神齐到场,200个席位先到先得!...
  9. P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…
  10. mac环境下安装xampp