sqlcmd 使用

1. 使用 sqlserver 账户进行查询
D:\>SQLCMD -Usa -Pmypass -Q "SELECT * FROM AdventutrWorks2008.Production.Location"

注意:

  1. -U 用于指定登录账号
  2. -P 用于指定 -U 对应账号的密码
  3. -Q 用于指定查询语句
2. 使用 windows 账户进行查询
D:\>SQLCMD -E -Q "SELECT * FROM AdventutrWorks2008.Production.Location"

注意:

  1. -E 指定使用 windows 账户进行身份验证。-E 不能与 -U 或者 -P 选项一起使用
3. 读取文件中的 SQL 语句进行查询

首先,在 cmd 中使用 copy 命令创建一个空的文本文件

D:\>copy con testsql.sql

这样讲转入一个空行。在 cmd 中输入下列代码:

D:\>select * from AdventureWorks2008.Production.Location

然后按 F6 键和回车键(结束文本文件的创建)。这时可以得到这样一条消息:

已复制一个文件。

这时使用 -i 命令执行文件中的 sql。

D:\>SQLCMD -Usa -Pmypass -i testsql.sql

所得到的结果与使用 -Q 运行查询时所得到的一样。

注意:

  1. -i 用于指定查询 sql 来源的文件
4. 将 sql 查询结果写入 文件中
D:\>SQLCMD -Usa -Pmypass -i testsql.sql -o data.txt

这样查询到的结果不再显示在屏幕上,而是直接写入文件中。

注意:

  1. -i 用于指定查询结果写入的文件
5. 执行文件夹下的所有 sql

新建 bat 文件,并输入如下代码:

@ECHO OFF

SET SQLCMD="C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.EXE"
SET PATH="C:\Users\Nash\Desktop\others\test\"
SET SERVER="Nash"
SET DB="Test2"
SET LOGIN="sa"
SET PASSWORD="password"
SET OUTPUT="D:\OutputLog.txt"

ECHO %date% %time% > %OUTPUT%

for /r %PATH% %%i in (*.sql) do (
%SQLCMD% -S %SERVER% -d %DB% -U %LOGIN% -P %PASSWORD% -i %%i >> %OUTPUT%
)

双击执行 bat 文件,这个目录下的 sql 就执行完了,相关信息写入 OutputLog.txt

注意:-S 用于指定要连接的 SQL Server 实例,可以在 SQL Server 中打开一个查询窗口,使用 select @@SERVERNAME 获取。如果 SQLServer 服务器的主机名发生了改变,可能导致无法找到该 SQL Server 实例(此时,@@servername 获取到的还是旧的服务名,serverproperty(‘servername’) 获取到的改变后的服务名,两者不一致)。

这时可以执行下面的 SQL, 执行完成之后重启 SQL Server 服务,就可以了。

if serverproperty('servername') <> @@servername 
begin 
  declare @server sysname 
  set @server = @@servername 
  exec sp_dropserver @server = @server 
  set @server = cast(serverproperty('servername') as sysname) 
  exec sp_addserver @server = @server , @local = 'LOCAL' 
end

本文参考:

  1. BAT遍历所有文件夹及其子文件夹 http://blog.51cto.com/laokaddk/655409
  2. SQLCMD备忘录:执行文件夹所有Sql文件 http://www.cnblogs.com/lixiaobin/p/SqlCmdRun.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值