代码改变世界

用SQLCMD命令行工具执行SQL查询

2011-01-31 12:05  bingcaihuang  阅读(11004)  评论(0编辑  收藏  举报

该命令运行在命令提示符下,且必须安装了SQLServer客户端工具。
注意参数区分大小写。

用法: Sqlcmd  参数          
  [-U 登录 ID]         
  [-P 密码]
  [-S 服务器]            
  [-H 主机名]          
  [-E 可信连接]
  [-d 使用数据库名称] 
  [-l 登录超时值]     
  [-t 查询超时值]
  [-h 标题]           
  [-s 列分隔符]      
  [-w 屏幕宽度]
  [-a 数据包大小]        
  [-e 回显输入]        
  [-I 允许带引号的标识符]
  [-c 命令结束]            
  [-L[c] 列出服务器[清除输出]]
  [-q "命令行查询"]   
  [-Q "命令行查询" 并退出]
  [-m 错误级别]        
  [-V 严重级别]     
  [-W 删除尾随空格]
  [-u unicode 输出]    
  [-r[0|1] 发送到 stderr 的消息]
  [-i 输入文件]         
  [-o 输出文件]        
  [-z 新密码]
  [-f <代码页> | i:<代码页>[,o:<代码页>]] 
  [-Z 新建密码并退出]
  [-k[1|2] 删除[替换]控制字符]
  [-y 可变长度类型显示宽度]
  [-Y 固定长度类型显示宽度]
  [-p[1] 打印统计信息[冒号格式]]
  [-R 使用客户端区域设置]
  [-b 出错时中止批处理]
  [-v 变量 = "值"...]  
  [-A 专用管理连接]
  [-X[1] 禁用命令、启动脚本、环境变量[并退出]]
  [-x 禁用变量情况]
  [-? 显示语法摘要]

下面是一个执行sql语句文件进行创建数据库、创建表、输入测试数据的批处理。


“::”是批处理文件的一种注释语法,由两个半角英文冒号组成
“echo”是输出字符串到屏幕
“@echo off”是关闭“执行时输出命令语句到屏幕”
其他说明请看“::”后面的注释

@echo off
echo ************** 执行SQL数据库环境配置 ****************
echo.
echo _____________________________________________________
echo ------------------ 启动SQL2005服务 ------------------
::如果没有启动sql服务,会先启动sql服务。“$”后面的是数据库实例名
net start mssql$sql2005
echo _____________________________________________________
echo.
echo _____________________________________________________
echo -------------- 执行T-SQL语句文件设置数据库 ----------
:: 执行T-SQL语句文件请按照下面的格式写

:: 第一种执行方式
:: 使用了Windows信任连接执行,
:: “".\sql2005"”是“服务器\实例名”
:: “"bbsDB_T-SQL\上机2.sql"”是输入的SQL语句脚本文件存放物理路径,可以是绝对路径或相对本批处理文件路径
sqlcmd -S ".\sql2005" -i "bbsDB_T-SQL\上机2.sql"

:: 第二种执行方式
:: 使用了SqlServer账户连接执行
:: “".\sql2005"”是“服务器\实例名”
:: “-U”后面的“sqlAdminName”是SQLSqlServer账户
:: “-P”后面的“sqlAdminPwd” 是SQLSqlServer账户的密码
:: “"bbsDB_T-SQL\上机2.sql"”是输入的SQL语句脚本文件存放物理路径,可以是绝对路径或相对本批处理文件路径
sqlcmd -U sqlAdminName -P sqlAdminPwd -S ".\sql2005"  -i "bbsDB_T-SQL\上机2.sql"
echo.
echo 任务执行完毕
:: 最后给个暂停命令,便于检查是否出错,不加的话,上面的执行完后不管是否出错都会自动退出
pause