MS SQL Server怎样在CMD命令行模式下工作:执行select,insert等等

使用:OSQL.EXE和SQLCMD.EXE工具:他们都在
SQL server2008在C:\Program Files\Microsoft SQL Server\100\Tools\Binn,有的可能在
C:\Program Files\Microsoft SQL Server\90\Tools\Binn,你自己找找。

然后看看PATH路径中有没有path=
C:\Program Files\Microsoft SQL Server\100\Tools\Binn
默认你安装了MS server就会有。
如果是sql2000的话.那么就用osql连接,如以下例子, osql -S Localhost -U sa -P 123 注意大小写 "select count(*) from sysobjects" 如果在sql2005及以上版本下,把上面脚本的OSQL改为sqlcmd是可以运行的。

我使用2008使用OSQL会出现,用SQLCMD代替的提示:

-----使用工具OSQL:

C:\Users\Administrator>osql -? //查看osql用法
C:\Users\Administrator>osql -S ZLQ-PC -U sa -P 123 ?
Microsoft (R) SQL Server Command Line Tool
Version 10.0.1600.22 NT INTEL X86
Copyright (c) Microsoft Corporation.  All rights reserved.

Note: osql does not support all features of SQL Server 2008.
Use sqlcmd instead. See SQL Server Books Online for details.usage: osql              [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-d use database name] [-l login timeout]     [-t query timeout]
  [-h headers]           [-s colseparator]      [-w columnwidth]
  [-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers]
  [-L list servers]      [-c cmdend]            [-D ODBC DSN name]
  [-q "cmdline query"]   [-Q "cmdline query" and exit]
  [-n remove numbering]  [-m errorlevel]
  [-r msgs to stderr]    [-V severitylevel]
  [-i inputfile]         [-o outputfile]
  [-p print statistics]  [-b On error batch abort]
  [-X[1] disable commands [and exit with warning]]
  [-O use Old ISQL behavior disables the following]
      batch processing
      Auto console width scaling
      Wide messages
      default errorlevel is -1 vs 1
  [-? show syntax summary]

解释

参数-?  
   
  显示   osql   开关的语法摘要。  
   
  -L  
   
  列出在本地配置的服务器和在网络上广播的服务器的名称。  
   
  -U   login_id  
   
  用户登录   ID。登录   ID   区分大小写。  
   
  -P   password  
   
  是用户指定的密码。如果未使用   -P   选项,osql   将提示输入密码。如果在命令提示符的末尾使用   -P   选项而不带密码,osql   使用默认密码   (NULL)。密码区分大小写。  
   
  OSQLPASSWORD   环境变量使您得以为当前会话设置默认密码。因此,不需要通过硬编码来在批处理文件中设置密码。  
   
  如果没有为   -P   选项指定密码,osql   首先检查   OSQLPASSWORD   变量。如果未设置值,osql   使用默认密码   (NULL)。以下示例在命令提示符处设置   OSQLPASSWORD   变量,然后访问   osql   实用工具:  
   
  C:\>SET   OSQLPASSWORD=abracadabra  
  C:\>osql    
   
  -E  
   
  使用信任连接而不请求密码。  
   
  -S   server_name[\instance_name]  
   
  指定要连接的   Microsoft®   SQL   Server™   2000   实例。在该服务器上指定   server_name   以连接到   SQL   Server   的默认实例。在该服务器上指定   server_name\instance_name   以连接到一个已命名的   SQL   Server   2000   的实例。如果未指定服务器,osql   将连接到本地计算机上的   SQL   Server   默认实例。从网络上的远程计算机执行   osql   时,此选项是必需的。  
   
  -H   wksta_name  
   
  是工作站名称。工作站名称存储在   sysprocesses.hostname   中并由   sp_who   显示。如果未指定此选项,则采用当前计算机名称。  
   
  -d   db_name  
   
  启动   osql   时发出一个   USE   db_name   语句。  
   
  -l   time_out  
   
  指定   osql   登录超时之前的秒数。登录到   osql   的默认超时为   8   秒。  
   
  -t   time_out  
   
  指定命令超时之前的秒数。如果未指定   time_out   值,则命令不会超时。  
   
  -h   headers  
   
  指定要在列标题之间打印的行数。默认为每一查询结果集打印一次标题。用   –1   指定不打印标题。如果使用   -1,则在参数和设置之间一定不能有空格(可以是   -h-1,不能是   -h   –1)。  
   
  -s   col_separator  
   
  指定列分隔符字符,其默认为空格。若要使用对操作系统有特殊含义的字符(例如   |   ;   &   <   >),请将该字符用双引号   (")   引起来。  
   
  -w   column_width  
   
  允许用户设置屏幕输出的宽度。默认为   80   个字符。当输出行达到其最大屏幕宽度时,会拆分为多个行。  
   
  -a   packet_size  
   
  使您得以请求不同大小的数据包。packet_size   的有效值在   512   到   65535   之间。osql   的默认值为服务器的默认值。数据包大小的增加可以提高较大脚本执行的性能,在这种执行中   GO   命令之间   SQL   语句的数量很重要。Microsoft   的测试表明   8192   是大容量复制操作典型的最快设置。可以请求更大的数据包大小,但如果请求不能得到批准,则   osql   默认为服务器的默认值。  
   
  -e  
   
  回显输入。  
   
  -I  
   
  设置   QUOTED_IDENTIFIER   连接选项为开启。  
   
  -D   data_source_name  
   
  连接到用   Microsoft   SQL   Server   的   ODBC   驱动程序定义的   ODBC   数据源。osql   连接使用该数据源中指定的选项。  
   
   
   
  说明     该选项不适用于其它驱动程序定义的数据源。  
   
   
  -c   cmd_end  
   
  指定命令终止符。默认情况下,通过单独在一行中输入   GO   来终止命令并将其发送到   SQL   Server   2000。在重置命令终止符时,不要使用对操作系统有特殊含义的   Transact-SQL   保留字或字符,无论其前面是否有反斜杠。  
   
  -q   "query"  
   
  启动   osql   时执行查询,但是在查询完成时不退出   osql。(注意查询语句不应包含   GO)。如果从批处理文件中发出查询,请使用   %variables   或环境   %variables%。例如:  
   
  SET   table   =   sysobjects  
  osql   /q   "Select   *   from   %table%"  
   
  将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。  
   
  -Q   "query"  
   
  执行查询并立即退出   osql。将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。  
   
  -n  
   
  从输入行中删除编号和提示符号   (>)。  
   
  -m   error_level  
   
  自定义错误信息的显示。显示指定的或更高严重级别错误的消息数、状态和错误级别。不显示严重级别低于指定级别的错误的任何信息。用   -1   指定与消息一起返回所有标题,即使是信息类的消息。如果用   –1,则在参数和设置之间不能有空格(可以是   -m-1,不能是   -m   -1)。  
   
  -r   {0   |   1}  
   
  将消息输出重定向到屏幕   (stderr)。如果未指定参数,或指定参数为   0,则仅重定向严重级别为   17   或更高的错误信息。如果指定参数为   1,则将重定向所有消息输出(包括   "print")。  
   
  -i   input_file  
   
  标识包含一批   SQL   语句或存储过程的文件。小于   (<)   比较运算符可以用来代替   –i。  
   
  -o   output_file  
   
  标识从   osql   接收输出的文件。大于   (>)   比较运算符可以用来代替   –o。  
   
  如果   input_file   不是   Unicode   并且没有指定   -u,则   output_file   将存储为   OEM   格式。如果   input_file   是   Unicode   或者指定了   -u,则   output_file   将存储为   Unicode   格式。  
   
  -p  
   
  打印性能统计。  
   
  -b  
   
  指定发生错误时   osql   退出并返回一个   DOS   ERRORLEVEL   值。当   SQL   Server   错误信息的严重级别为   10   或更高时,返回给   DOS   ERRORLEVEL   变量的值为   1;否则返回   0。Microsoft   MS-DOS®   批处理文件可以测试   DOS   ERRORLEVEL   的值并适当处理错误。  
   
  -u  
   
  指定   output_file   存储为   Unicode   格式,而不管   input_file   为何种格式。  
   
  -R  
   
  指定在将货币、日期和时间数据转换为字符数据时   SQL   Server   ODBC   驱动程序使用客户端设置。  
   
  -O  
   
  为与   isql   的早期版本行为匹配,指定停用某些   osql   功能。下列功能停用:    
   
  EOF   批处理  
   
   
  控制台宽度自动调整  
   
   
  宽信息    
  同时还将   DOS   ERRORLEVEL   的默认值设置为   –1。  
   
  注释  
  osql   实用工具从操作系统直接启动,并且使用本文中列出的区分大小写的选项。启动后,osql   接受   SQL   语句并将它们交互地发送到   SQL   Server。结果被格式化并显示在屏幕上   (stdout)。可使用   QUIT   或   EXIT   退出   osql。  
   
  如果启动   osql   时未指定用户名,SQL   Server   2000   将检查环境变量并使用它们,例如   osqluser=(user)   或   osqlserver=(server)。如果未设置环境变量,则使用工作站用户名。如果未指定服务器,则使用工作站名称。  
   
  如果   -U   或   -P   选项都没有使用,则   SQL   Server   2000   将尝试使用   Windows   身份验证模式进行连接。身份验证基于运行   osql   的   Microsoft   Windows   NT®   用户帐户。交互性使用   osql  
  若要交互性使用   osql,请在命令提示符处键入   osql   命令(以及任何选项)。  
   
  可以通过键入类似下行的命令,在包含由   osql   执行的查询的文件(例如   Stores.qry)中进行读取:  
   
  osql   /U   alma   /P   /i   stores.qry  
   
  该文件必须包含命令终止符。    
   
  可以通过键入类似下行的命令,在包含查询的文件(例如   Titles.qry)中进行读取并将结果导向另一文件:  
   
  osql   /U   alma   /P   /i   titles.qry   /o   titles.res  
   
  交互性使用   osql   时,为把操作系统文件读入到命令缓冲区,可使用:r   file_name。不要在文件中包含命令终止符;在完成编辑后交互输入终止符。  
举例:

C:\Users\Administrator>osql -S ZLQ-PC -U sa -P 123  -q "select count(*) as  count
 from sysobjects"
   count
 -----------
        1999

(1 row affected)

//如果想继续执行SQL查询,输入关键字go

C:\Users\Administrator>osql -S ZLQ-PC -U sa -P 123 -d test1  -q "select *  from
student"
 sno         sname                sage                    ssex
 ----------- -------------------- ----------------------- ----
           1 张三                   1980-01-23 00:00:00.000 男
           2 李四                   1982-12-12 00:00:00.000 女
           3 张飒                   1981-09-09 00:00:00.000 男
           4 莉莉                   1983-03-23 00:00:00.000 女
           5 王弼                   1982-06-21 00:00:00.000 男
           6 王丽                   1984-10-10 00:00:00.000 女
           7 刘香                   1980-12-22 00:00:00.000 女

(7 rows affected)

1> select * from teacher
2> go // go 是立即执行该缓存语句
 tno         tname
 ----------- --------------------
           1 张老师
           2 王老师
           3 李老师
           4 赵老师
           5 刘老师
           6 向老师
           7 李文静
           8 叶平

(8 rows affected)
1>



-----使用工具SQLCMD:

使用sqlcmd:

C:\Users\Administrator>sqlcmd  -?
Microsoft (R) SQL Server Command Line Tool
Version 10.0.1600.22 NT INTEL X86
Copyright (c) Microsoft Corporation.  All rights reserved.

usage: Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-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 | i:[,o:]] [-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]
  [-b On error batch abort]
  [-v var = "value"...]  [-A dedicated admin connection]
  [-X[1] disable commands, startup script, enviroment variables [and exit]]
  [-x disable variable substitution]
  [-? show syntax summary]

举例:

C:\Users\Administrator>sqlcmd -S zlq-pc -U sa -P 123 -d test1
1> select * from teacher
2> go
tno         tname
----------- --------------------
          1 张老师
          2 王老师
          3 李老师
          4 赵老师
          5 刘老师
          6 向老师
          7 李文静
          8 叶平

(8 rows affected)
1>


C:\Users\Administrator>sqlcmd -S zlq-pc -U sa -P 123
1> use test1
2> select top 10 * from sc
3> go
Changed database context to 'test1'.
sno         cno         score
----------- ----------- -----------
          1           1          80
          1           2          86
          1           3          83
          1           4          89
          2           1          50
          2           2          36
          2           4          59
          3           1          50
          3           2          96
          3           4          69

(10 rows affected)
1>


sqlcmd详细介绍在:

http://blog.163.com/llsh2010@126/blog/static/1691895692011615113838734/

你可能感兴趣的:(SQL,sql,server,工作,insert,cmd,microsoft,variables)