SQL server中sqlcmd命令行工具的使用方法_第1页
SQL server中sqlcmd命令行工具的使用方法_第2页
SQL server中sqlcmd命令行工具的使用方法_第3页
SQL server中sqlcmd命令行工具的使用方法_第4页
SQL server中sqlcmd命令行工具的使用方法_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL server中sqlcmd命令行工具的使用方法SQL server2008在C:Program FilesMicrosoft SQL Server100ToolsBinn,有的可能在C:Program FilesMicrosoft SQL Server90ToolsBinn,你自己找找。然后看看PATH路径中有没有path=C:Program FilesMicrosoft SQL Server100ToolsBinn默认你安装了MS server就会有。如果是sql2000的话.那么就用osql连接,如以下例子,osql -S Localhost -U sa -P 123 注意大小写

2、"select count(*) from sysobjects" 如果在sql2005及以上版本下,把上面脚本的OSQL改为sqlcmd是可以运行的。我使用2008使用OSQL会出现,用SQLCMD代替的提示:-使用工具OSQL:C:UsersAdministrator>osql -? /查看osql用法C:UsersAdministrator>osql -S ZLQ-PC -U sa -P 123 ?Microsoft (R) SQL Server Command Line ToolVersion 10.0.1600.22 NT INTEL X86Copyr

3、ight (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   

4、60;      -P password  -S server            -H hostname          -E trusted connection  -d use database name -l login timeout     -t query timeout

5、  -h headers           -s colseparator      -w columnwidth  -a packetsize        -e echo input        -I Enable Quoted Identifiers  -L list

6、servers      -c cmdend            -D ODBC DSN name  -q "cmdline query"   -Q "cmdline query" and exit  -n remove numbering  -m errorlevel  -r msgs to stderr  

7、60; -V severitylevel  -i inputfile         -o outputfile  -p print statistics  -b On error batch abort  -X1 disable commands and exit with warning  -O use Old ISQL behavior disables the following      <EOF&g

8、t; batch processing      Auto console width scaling      Wide messages      default errorlevel is -1 vs 1  -? show syntax summary解释:参数-?         显示   osql   开关的

9、语法摘要。         -L         列出在本地配置的服务器和在网络上广播的服务器的名称。         -U   login_id         用户登录   ID。登录   ID  

10、; 区分大小写。         -P   password         是用户指定的密码。如果未使用   -P   选项,osql   将提示输入密码。如果在命令提示符的末尾使用   -P   选项而不带密码,osql   使用默认密码   (NULL)。密码区分大小写。&

11、#160;       OSQLPASSWORD   环境变量使您得以为当前会话设置默认密码。因此,不需要通过硬编码来在批处理文件中设置密码。         如果没有为   -P   选项指定密码,osql   首先检查   OSQLPASSWORD   变量。如果未设置值,osql   使用默认密码 &#

12、160; (NULL)。以下示例在命令提示符处设置   OSQLPASSWORD   变量,然后访问   osql   实用工具:        C:>SET   OSQLPASSWORD=abracadabra     C:>osql           -E &#

13、160;       使用信任连接而不请求密码。         -S   server_nameinstance_name         指定要连接的   Microsoft&reg;   SQL   Server&#8482;   2000 

14、60; 实例。在该服务器上指定   server_name   以连接到   SQL   Server   的默认实例。在该服务器上指定   server_nameinstance_name   以连接到一个已命名的   SQL   Server   2000   的实例。如果未指定服务器,osql   将连接到本地计算机上的   SQL

15、   Server   默认实例。从网络上的远程计算机执行   osql   时,此选项是必需的。         -H   wksta_name         是工作站名称。工作站名称存储在   sysprocesses.hostname   中并由   sp_who

16、0;  显示。如果未指定此选项,则采用当前计算机名称。        -d   db_name         启动   osql   时发出一个   USE   db_name   语句。         -l   t

17、ime_out         指定   osql   登录超时之前的秒数。登录到   osql   的默认超时为   8   秒。         -t   time_out         指定命令超时之前的秒数。如

18、果未指定   time_out   值,则命令不会超时。         -h   headers         指定要在列标题之间打印的行数。默认为每一查询结果集打印一次标题。用   1   指定不打印标题。如果使用   -1,则在参数和设置之间一定不能有空格(可以是   -h-1,不能是

19、60;  -h   1)。        -s   col_separator         指定列分隔符字符,其默认为空格。若要使用对操作系统有特殊含义的字符(例如   |   ;   &   <   >),请将该字符用双引号   (")

20、0;  引起来。        -w   column_width         允许用户设置屏幕输出的宽度。默认为   80   个字符。当输出行达到其最大屏幕宽度时,会拆分为多个行。         -a   packet_size   

21、60;     使您得以请求不同大小的数据包。packet_size   的有效值在   512   到   65535   之间。osql   的默认值为服务器的默认值。数据包大小的增加可以提高较大脚本执行的性能,在这种执行中   GO   命令之间   SQL   语句的数量很重要。Microsoft   的测试表明 

22、60; 8192   是大容量复制操作典型的最快设置。可以请求更大的数据包大小,但如果请求不能得到批准,则   osql   默认为服务器的默认值。        -e         回显输入。         -I       

23、0; 设置   QUOTED_IDENTIFIER   连接选项为开启。         -D   data_source_name         连接到用   Microsoft   SQL   Server   的   ODBC   驱动程序定义的

24、60;  ODBC   数据源。osql   连接使用该数据源中指定的选项。                说明     该选项不适用于其它驱动程序定义的数据源。             -c   cmd_end

25、0;        指定命令终止符。默认情况下,通过单独在一行中输入   GO   来终止命令并将其发送到   SQL   Server   2000。在重置命令终止符时,不要使用对操作系统有特殊含义的   Transact-SQL   保留字或字符,无论其前面是否有反斜杠。        -q  

26、 "query"         启动   osql   时执行查询,但是在查询完成时不退出   osql。(注意查询语句不应包含   GO)。如果从批处理文件中发出查询,请使用   %variables   或环境   %variables%。例如:        SET &#

27、160; table   =   sysobjects     osql   /q   "Select   *   from   %table%"         将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。        

28、 -Q   "query"         执行查询并立即退出   osql。将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。         -n         从输入行中删除编号和提示符号   (>)。    

29、60;    -m   error_level         自定义错误信息的显示。显示指定的或更高严重级别错误的消息数、状态和错误级别。不显示严重级别低于指定级别的错误的任何信息。用   -1   指定与消息一起返回所有标题,即使是信息类的消息。如果用   1,则在参数和设置之间不能有空格(可以是   -m-1,不能是   -m   -1)。&

30、#160;       -r   0   |   1         将消息输出重定向到屏幕   (stderr)。如果未指定参数,或指定参数为   0,则仅重定向严重级别为   17   或更高的错误信息。如果指定参数为   1,则将重定向所有消息输出(包括   "p

31、rint")。        -i   input_file         标识包含一批   SQL   语句或存储过程的文件。小于   (<)   比较运算符可以用来代替   i。         -o   o

32、utput_file         标识从   osql   接收输出的文件。大于   (>)   比较运算符可以用来代替   o。         如果   input_file   不是   Unicode   并且没有指定  

33、 -u,则   output_file   将存储为   OEM   格式。如果   input_file   是   Unicode   或者指定了   -u,则   output_file   将存储为   Unicode   格式。        -p 

34、        打印性能统计。         -b         指定发生错误时   osql   退出并返回一个   DOS   ERRORLEVEL   值。当   SQL   Server   错误信

35、息的严重级别为   10   或更高时,返回给   DOS   ERRORLEVEL   变量的值为   1;否则返回   0。Microsoft   MS-DOS&reg;   批处理文件可以测试   DOS   ERRORLEVEL   的值并适当处理错误。        -u

36、         指定   output_file   存储为   Unicode   格式,而不管   input_file   为何种格式。         -R         指定在将货币、日期和时间数据转换为字符数据时 

37、  SQL   Server   ODBC   驱动程序使用客户端设置。         -O         为与   isql   的早期版本行为匹配,指定停用某些   osql   功能。下列功能停用:       

38、;    EOF   批处理             控制台宽度自动调整             宽信息       同时还将   DOS   ERRORLEVEL   的默认值设置为

39、60;  1。         注释     osql   实用工具从操作系统直接启动,并且使用本文中列出的区分大小写的选项。启动后,osql   接受   SQL   语句并将它们交互地发送到   SQL   Server。结果被格式化并显示在屏幕上   (stdout)。可使用   QUIT &

40、#160; 或   EXIT   退出   osql。        如果启动   osql   时未指定用户名,SQL   Server   2000   将检查环境变量并使用它们,例如   osqluser=(user)   或   osqlserver=(server)。如果未设置环境变量,则使用工作站

41、用户名。如果未指定服务器,则使用工作站名称。        如果   -U   或   -P   选项都没有使用,则   SQL   Server   2000   将尝试使用   Windows   身份验证模式进行连接。身份验证基于运行   osql   的   M

42、icrosoft   Windows   NT&reg;   用户帐户。交互性使用   osql    若要交互性使用   osql,请在命令提示符处键入   osql   命令(以及任何选项)。         可以通过键入类似下行的命令,在包含由   osql   执行的查询的文件(例如 

43、;  Stores.qry)中进行读取:         osql   /U   alma   /P   /i   stores.qry         该文件必须包含命令终止符。           可以通过键入类似下行的命令,

44、在包含查询的文件(例如   Titles.qry)中进行读取并将结果导向另一文件:         osql   /U   alma   /P   /i   titles.qry   /o   titles.res         交互性使用   osql&#

45、160;  时,为把操作系统文件读入到命令缓冲区,可使用:r   file_name。不要在文件中包含命令终止符;在完成编辑后交互输入终止符。  举例:C:UsersAdministrator>osql -S ZLQ-PC -U sa -P 123  -q "select count(*) as  count from sysobjects"   count -        1999(1

46、row affected)/如果想继续执行SQL查询,输入关键字goC:UsersAdministrator>osql -S ZLQ-PC -U sa -P 123 -d test1  -q "select *  fromstudent" sno         sname                sage

47、                    ssex - - - -           1 张三                 &

48、#160; 1980-01-23 00:00:00.000 男           2 李四                   1982-12-12 00:00:00.000 女           3 张飒 

49、;                  1981-09-09 00:00:00.000 男           4 莉莉                 

50、0; 1983-03-23 00:00:00.000 女           5 王弼                   1982-06-21 00:00:00.000 男           6 王丽 &#

51、160;                 1984-10-10 00:00:00.000 女           7 刘香                  

52、1980-12-22 00:00:00.000 女(7 rows affected)1> select * from teacher2> go / go 是立即执行该缓存语句 tno         tname - -           1 张老师           2 王

53、老师           3 李老师           4 赵老师           5 刘老师           6 向老师     

54、0;     7 李文静           8 叶平(8 rows affected)1>-使用工具SQLCMD:使用sqlcmd:C:UsersAdministrator>sqlcmd  -?Microsoft (R) SQL Server Command Line ToolVersion 10.0.1600.22 NT INTEL X86Copyright (c) Microsoft Corporation.  All

55、 rights reserved.usage: Sqlcmd            -U login id          -P password  -S server            -H hostname     &#

56、160;    -E trusted connection  -d use database name -l login timeout     -t query timeout  -h headers           -s colseparator      -w screen width  -a packetsize  

57、      -e echo input        -I Enable Quoted Identifiers  -c cmdend            -Lc list serversclean output  -q "cmdline query"   -Q "cmdline query&quo

58、t; and exit  -m errorlevel        -V severitylevel     -W remove trailing spaces  -u unicode output    -r0|1 msgs to stderr  -i inputfile         -o outputfile  

59、0;     -z new password  -f <codepage> | i:<codepage>,o:<codepage> -Z new password and exit  -k1|2 removereplace control characters  -y variable length type display width  -Y fixed length type display width  -p1 print statisticscolon form

60、at  -R use client regional setting  -b On error batch abort  -v var = "value".  -A dedicated admin connection  -X1 disable commands, startup script, enviroment variables and exit  -x disable variable substitution  -? show syntax summary举例:C:UsersAdministr

61、ator>sqlcmd -S zlq-pc -U sa -P 123 -d test11> select * from teacher2> gotno         tname- -          1 张老师          2 王老师      

62、60;   3 李老师          4 赵老师          5 刘老师          6 向老师          7 李文静      

63、60;   8 叶平(8 rows affected)1>C:UsersAdministrator>sqlcmd -S zlq-pc -U sa -P 1231> use test12> select top 10 * from sc3> goChanged database context to 'test1'.sno         cno         score

64、- - -          1           1          80          1           2&#

65、160;         86          1           3          83          1  &#

66、160;        4          89          2           1          50   &#

67、160;      2           2          36          2           4    

68、60;     59          3           1          50          3      

69、60;    2          96          3           4          69(10 rows affected)1>下面的内容是详细介绍sqlcmd的,有兴趣的

70、朋友可以看看  因为公司的业务需要,所以采集了一个2W多条的数据,都是insert语句,生成一个200多M的数据,谁料在通过sql server 2005不能直接打开,导入也存在问题,用记事本也打不开,复制贴也不行,最后还是一同学提了个醒用命令在dos下执行.sql文件,才有了办法,同时也 在一热心网友的帮助下完成了这个让我头疼半天的活,下面我对这些做一下介绍,应该对有这样需要的朋友很好的帮助。如果装的是2000版的sql那用的命令是osql,05的用sqlcmd其实用法很简单,任何技术,一旦说穿就失去了它的神秘,这有点像生活中的很多事,好了废话了半天,还是切入正题,开工吧

71、:其实就是一句很简单的话句:sqlcmd -i sqlfile.sql -d databasename -s 这个sql文件要放在c:下就这么简单.sqlcmd 使用笔记登录sqlcmd命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678"直接执行SQL Script命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码 -d 数据库 -i SQL Script示例 sqlcmd -S "HOM

72、ESQLEXPRESS" -U "sa" -P "12345678" -d "Database" -i "E:My Documentstest.sql"查询当前服务器上的数据库(*) 可能需要 Use Master1. Select Name From sysdatabases2. sp_helpdb查询当前数据库的表和存储过程表:select * from sysobjects where status >=0 and xtype='U'存储过程:select * from sys

73、objects where status >=0 and xtype='P'-1、你可以用SQLCMD执行交互式动作,如:C:sqlcmd>sqlcmd1> SELECT name from sys.databases2> GO你也可以试着键入如下命令,现实服务器列表1>:ServerListSERVERS:WUYZ1>如果想看其他命令的使用,可以键入:Help /?2、执行SQL脚本文件你可以在SQLCMD命令上加入参数I来执行SQL脚本文件,例如:C:sqlcmd>sqlcmd -i test.sql上面的I选项允许你执行一个脚本文

74、件,另外,你也可以指定O选项,把命令的输出导出到指定文件,当然,我们也可以在代码中指定输出结果,如下C:sqlcmd>sqlcmd1> :out output.txt2> :r test.sql3、在脚本中使用变量SQLCMD支持可以在脚本中接收用户传入的变量信息,如下面语句:SET NOCOUNT ONSelect $(Cols) from $(tablename)GO上面语句请求2个参数,我们可以通过指定相应的参数信息传给脚本,如下:C:sqlcmd>sqlcmd -i test.sql -o Output.txt -v cols="name,object

75、_id,create_date" tablename="sys.objects"上面语句的用途是:执行TEST.SQL脚本文件,并把输出的信息输出到OUTPUT.TXT文件中,并分别指定了COLS,TABLENAME的参数值4、在脚本中设置变量的值除了通过外部传入参数的值外,还可以在内部设置参数的值,如下面例子e:sqlcmdbackuptemplate.sqluse masterbackup database $(db) to disk='$(file)'e:sqlcmdbackupsingle.sql:setvar db msdb:setvar

76、 file c:tempmsdb.bak:r e:sqlcmdbackuptemplate.sql如果你想知道当然定义了哪些变量,可以使用:listvar命令来显示。主要命令汇总::r filename:ServerList:List:Listvar:Error filename | STDOUT | STDERR:Out filename | STDOUT | STDERR:Perftrace filename | STDOUT | STDERR:Connect serverinstance timeout user_namepassword :On Error exit | ignore:

77、SetVar variable value:Help:XML ON | OFF主要环境变量汇总:-a SQLCMDPACKETSIZE-d SQLCMDDBNAME-H SQLCMDWORKSTATION-h SQLCMDHEADERS-l SQLCMDLOGINTIMEOUT-m SQLCMDERRORLEVEL-P SQLCMDPASSWORD-S SQLCMSSERVER-s SQLCMDCOLSEP-t SQLCMDSTATTIMEOUT-U SQLCMDUSER-w SQLCMDCOLWIDTH-T-SQL还原数据库备份restore database TionkDatabase f

78、rom disk='E:工作讯客项目讯客直销代码db20080521'width move "源文件" to "目标文件位置"-使用 T-SQL 执行还原RESTORE 命令有两种形式显示如下:RESTORE DATABASE 还原完整的资料库、档案或档案群组。RESTORE LOG 还原交易记录档。RESTORE 陈述式执行完整资料库还原时 RESTORE 陈述式的语法如下:RESTORE DATABASE database_name FROM backup_device WITH options 这个陈述式只要求资料库的档案名称和备份

79、所在的位置。执行档案和档案群组还原时陈述式的语法如下:RESTORE DATABASE database_name FILE = file_name FILEGROUP = filegroup_name FROM backup_device WITH options 这个陈述式只要求资料库名称、档案名称或档案群组名称和备份所在的位置。执行交易记录还原时陈述式的语法如下:RESTORE LOG database_name FROM backup_device WITH options 就如同其他的命令,database_name 是还原将要执行的资料库名称。backup_device 参数可以是

80、逻辑备份装置名称或实体装置的名称。如果要指定一个实体装置,必须限定它的装置类型也就是说,装置名称前面必须加上 DISK=、TAPE= 或 PIPE=。可以指定一个或多个装置,中间以逗号隔开。如果没有提供 FORM 子句,还原将无法进行,而且仍然会执行回复(除非执行NORECOVERY 选项)。这项技术可以用来将资料库设定为回复模式,而不还原其他附加资料。例如,可以执行多个差异还原操作,然后执行 RESTORE 陈述式,不需要 FORM 子句来将资料库设定为回复模式,就能够启动回复过程。选项选项        

81、60;               说明RESTRICTED_USER             设定新还原资料库的安全性,只有 db_owner、dbcreater 和 sysadmin 角色成员才能存取该资料库。FILE = file_number      

82、;    如果在储存媒体中有多个备份集,可用来识别所使用的备份集。例如设定该数值为2,则使用磁带上的第二个备份集。PASSWORD = password         指定储存备份的密码。MEDIANAME =media_name       指定媒体的名称。MEDIAPASSWORD = password    指定储存媒体的密码。MOVE 'l

83、ogical_file_name' TO 'OS_file_name'更改还原档案的位置,例如:MOVE 'Northwind' TO 'D:dataNorthwind.mdf'。如果旧的磁碟无法使用,而需要还原到新的磁碟上时,可以使用这个选项。NORECOVERY |RECOVERY | STANDBY = undo_fileNORECOVERY 指定在还原后,交易将无法退回或重新进行。如果将还原其他的备份(差异式备份或交易记录档备份),则需要用到这个选项。REVOVERY 为预设选项,它指定执行回复操作,并退回每个没有提交的变更。ST

84、ANDBY 指定在还原需要还原情况下,建立还原(undo)档案。KEEP_REPLICATION 指定当资料库还原时复制设定要保存下来。NOUNLOAD | UNLOAD NOUNLOAD 指定在还原完成后不卸载储存媒体(例如,覆写备份磁带并弹出)。UNLOAD 为预设选项,指定在还原完成后卸载储存媒体。REPLACE 指出即使资料档案已经存在,SQL Server 仍将还原这些档案。现存的档案将被删除和覆写。如果没有指定 REPLACE,那麼 SQL Server 将会核对 database_name 是否已经存在。如果已经存在,那麼将终止还原操作。这个安全特性帮助避免无意地将还原覆写正在工

85、作的资料库。RESTART 指定 SQL Server 在还原操作被中断后重新启动还原操作。STATS = percentage 在还原操作完成了指定的百分率后显示讯息。如果需要监控操作的过程,这个选项将会很有用。PARTIAL 指定执行部份还原。STOPAT = date_time(log restore only) 指定资料库回复到 data_time 指定时刻的资料状态(只对记录档还原有效)。STOPATMARK = 'mark' 指定还原操作进行到标记处。STOPBEFOREMARK = 'mark' 指定还原操作进行到标记之前。 通

86、过OSQL命令执行SQL SERVER批SQL通过System.Data.SqlClient命名空间只能执行单条SQL,或多个内容中间用;分开,不能执行类似等命令,有没有一种方法能类似查询分析器一样执行一些批命令呢,答案是通过OSQL来执行。OSQL详细用法:通地进程来调用: C#代码 1         / <summary> 2         / 执

87、行OSQL命令 3         / </summary> 4         public static  void ExcuteOsqlCmd(string cmd, string errorFile, string filePath) 5  

88、0;       6              System.Diagnostics.Process p = new System.Diagnostics.Process(); 7  8              p.StartInfo.FileName = "osql" 9              p.StartInfo.Arguments =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论