SQL里面的!!代表什么?
还有sql里面的sqlcmd模式有什么功能。

解决方案 »

  1.   

    SQL里面的!!代表什么?不知道,没见过这么用的.sqlcmd模式?
    命令模式?输入语句,执行各种功能?就是查询分析器或osql等东西?
      

  2.   

    sqlcmd模式下, 若要执行操作系统命令,请用两个感叹号 (!!) 开始一行,后面输入操作系统命令。
     例如:
    :!! Dir 
    ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/sqlcmpt9/html/e1728707-5215-4c04-8320-e36f161b834a.htm
      

  3.   


              SQL Server 2005 联机丛书  
     
    sqlcmd 实用工具  发送反馈 
      请参阅    
     全部折叠全部展开 语言筛选器: 全部语言筛选器: 多语言语言筛选器: Visual Basic语言筛选器: C#语言筛选器: C++语言筛选器: J#语言筛选器: JScript 
     
     Visual Basic(Declaration) 
     C#
     C++
     J#
     JScript使用 sqlcmd 实用工具可以在命令提示符处输入 Transact-SQL 语句、系统过程和脚本文件。此实用工具使用 OLE DB 执行 Transact-SQL 批处理。重要事项:  
    在常规模式和 SQLCMD 模式下,SQL Server Management Studio 使用 .NET SqlClient 执行。从命令行运行时,SQLCMD 将使用 OLE DB 访问接口。由于可以应用不同的默认选项,因此在 SQL Server Management Studio SQLCMD 模式下以及在 SQLCMD 实用工具中执行相同的查询时,可能会获得不同的行为。
     
    语法
     
    sqlcmd [
    { { -U login_id [ -P password ] } | –E }
    ]
    [-S server_name [ \ instance_name ] ] [ -H wksta_name ] [ -d db_name ]
    [ -l time_out ] [ -t time_out ] [ -h headers ]
    [ -s col_separator ] [ -w column_width ] [ -a packet_size ]
    [ -e ] [ -I ]
    [ -c cmd_end ] [ -L [ c ] ] [ -q "query" ] [ -Q "query" ]
    [ -m error_level ] [ -V ] [ -W ] [ -u ] [ -r [ 0 | 1 ] ]
    [ -i input_file ] [ -o output_file ]
    [ -f < codepage > | i: < codepage > [ < , o: < codepage > ] 
    [ -k [ 1 | 2 ] ]
    [ -y display_width ] [-Y display_width ]
    [ -p [ 1 ] ] [ -R ] [ -b ] [ -v ] [ -A ] [ -X [ 1 ] ] [ -x ]
    [ -? ]
    ]
     参数
    -U login_id 
    用户登录 ID。登录 ID 区分大小写。注意:  
    为实现向后兼容性而保留了 OSQLUSER 环境变量。SQLCMDUSER 环境变量优先于 OSQLUSER 环境变量;这意味着 sqlcmd 和 osql 可以彼此相邻使用而不会相互干扰。而且旧式脚本可以继续使用。
     
    如果 -U 选项和 -P 选项均未指定,sqlcmd 将尝试使用 Microsoft Windows 身份验证模式进行连接。身份验证基于运行 sqlcmd 的用户的 Windows 帐户。如果 -U 选项与 -E 选项(在本主题的后面详细说明)一起使用,将生成错误消息。如果 –U 选项后有多个参数,将生成错误消息并退出程序。 -P password 
    用户指定的密码。密码是区分大小写的。如果未使用 -P 选项,并且未设置 SQLCMDPASSWORD 环境变量,则 sqlcmd 会提示用户输入密码。如果在命令提示符的末尾使用 -P 选项而不带密码,sqlcmd 将使用默认密码 (NULL)。 安全性 注意:  
    请不要使用空密码。建议使用强密码。有关详细信息,请参阅强密码。
     
    通过向控制台打印密码提示,可以显示密码提示,如下所示: 复制代码 
    Password: 
     隐藏用户输入,这意味着将不会显示任何输入的内容,光标保留原位不动。使用 SQLCMDPASSWORD 环境变量可以为当前会话设置默认密码。因此,无需将密码硬编码到批处理文件中。 以下示例首先在命令提示符处设置 SQLCMDPASSWORD 变量,然后访问 sqlcmd 实用工具。在命令提示符下,键入: 复制代码 
    SET SQLCMDPASSWORD=abracadabra
     
    安全性 注意:  
    任何可以看到计算机监视器的人均可看到密码。 
     
    在以下命令提示符处键入: 复制代码 
    sqlcmd 
     如果用户名和密码组合不正确,OLE DB 访问接口将生成错误消息。注意:  
    为实现向后兼容性而保留了 OSQLPASSWORD 环境变量。SQLCMDPASSWORD 环境变量优先于 OSQLPASSWORD 环境变量;这意味着 sqlcmd 和 osql 可以彼此相邻使用而不会相互干扰,并且旧式脚本可以继续使用。
     
    如果将 -P 选项与 -E 选项一起使用,将生成错误消息。如果 –P 选项后有多个参数,将生成错误消息并退出程序。 -E 
    使用可信连接而不是用户名和密码登录 SQL Server。默认情况下,sqlcmd 将使用可信连接选项。-E 选项会忽略可能的用户名和密码环境变量设置,例如 SQLCMDPASSWORD。如果将 -E 选项与 -U 选项或 -P 选项一起使用,将生成错误消息。 -S server_name [ \instance_name ] 
    指定要连接的 SQL Server 的实例。它设置 sqlcmd 脚本变量 SQLCMDSERVER 指定 server_name 将连接到该服务器中 SQL Server 的默认实例。指定 server_name\instance_name 将连接到该服务器中 SQL Server 的命名实例。如果未指定服务器,sqlcmd 将连接到本地计算机上的 SQL Server 的默认实例。从网络上的远程计算机执行 sqlcmd 时,此选项是必需的。如果在启动 sqlcmd 时未指定用户名,SQL Server 将检查并使用 SQLCMDSERVER 环境变量。如果未指定服务器,则使用工作站名称。注意:  
    为实现向后兼容性而保留了 OSQLSERVER 环境变量。SQLCMDSERVER 环境变量优先于 OSQLSERVER 环境变量;这意味着 sqlcmd 和 osql 可以彼此相邻使用而不会相互干扰,并且旧式脚本可以继续使用。
     
    -H wksta_name 
    工作站的名称。此选项设置 sqlcmd 脚本变量 SQLCMDWORKSTATION。该工作站名称在 sys.processes 目录视图的 hostname 列中列出,并可使用存储过程 sp_who 返回。如果未指定此选项,则使用当前计算机名称。此名称可用来标识不同的 sqlcmd 会话。-d db_name 
    启动 sqlcmd 时发出一个 USE db_name 语句。此选项设置 sqlcmd 脚本变量 SQLCMDDBNAME。它指定初始数据库。如果数据库不存在,则生成错误消息且 sqlcmd 退出。-l time_out 
    指定 sqlcmd 到 OLE DB 访问接口的登录超时时间。此选项设置 sqlcmd 脚本变量 SQLCMDLOGINTIMEOUT。登录 sqlcmd 的默认超时时间为 8 秒。登录超时设定必须是介于 0 和 65534 之间的数字。如果提供的值不是数值或不在此范围内,sqlcmd 将生成错误消息。该值为 0 时,则允许无限制等待。-t time_out 
    指定命令(或 SQL 语句)超时的时间。此选项设置 sqlcmd 脚本变量 SQLCMDSTATTIMEOUT。如果未指定 time_out 值,则命令将不会超时。登录 time_out 必须是介于 1 和 65535 之间的数字。如果提供的值不是数值或不在此范围内,则 sqlcmd 将生成错误消息。 注意:  
    实际的超时值可能会与指定的 time_out 值相差几秒。
     
    -h headers 
    指定要在列标题之间打印的行数。系统默认为每组查询结果打印一次标题。此选项设置 sqlcmd 脚本变量 SQLCMDHEADERS。使用 -1 指定不能打印标题。如果使用 -1,则在参数和设置之间没有空格(可以是 -h-1,但不能是 -h -1)。任何无效的值都将导致 sqlcmd 生成错误消息,然后退出。-s col_separator 
    指定列分隔符字符。默认为空格。此选项设置 sqlcmd 脚本变量 SQLCMDCOLSEP。若要使用对操作系统有特殊含义的字符(如 and 字符 (&) 或分号 (;)),请将该字符用双引号 (") 引起来。列分隔符可以是任意 8 位字符。-w column_width 
    指定用于输出的屏幕宽度。此选项设置 sqlcmd 脚本变量 SQLCMDCOLWIDTH。该列宽必须是介于 8 和 65536 之间的数字。如果指定的列宽不在此范围内,则 sqlcmd 将生成错误消息。默认宽度为 80 个字符。在输出行超出指定的列宽时,将转到下一行。-a packet_size 
    需要不同大小的数据包。该选项设置 sqlcmd 脚本变量 SQLCMDPACKETSIZE。packet_size 必须是介于 512 和 32767 之间的值。如果脚本的两个 GO 命令之间包含大量 SQL 语句,则使用较大的数据包可以提高脚本执行的性能。您可以请求更大的数据包,但如果请求被拒绝,sqlcmd 将默认为服务器默认的数据包大小。-e 
    将输入脚本打印到标准输出设备 (stdout)。-I 
    将 SET QUOTED_IDENTIFIER 连接选项设置为 ON。默认情况下,将其设定为 OFF。有关详细信息,请参阅 SET QUOTED_IDENTIFIER (Transact-SQL)。-c cmd_end 
    指定批处理终止符。默认情况下,通过单独在一行中键入“GO”来终止命令并将其发送到 SQL Server。重置批处理终止符时,不要使用对操作系统具有特殊意义的 Transact-SQL 保留关键字或字符,即便它们前面有反斜杠也是如此。-L [ c ] 
    列出在本地配置的服务器和在网络上广播的服务器的名称。此参数不能与其他参数结合使用。可以列出的服务器的最大数目是 3000。如果服务器列表由于缓冲区大小而被截断,则会显示错误消息。注意:  
    由于网络广播的本质,sqlcmd 可能无法及时接收到所有服务器的响应,因此,每次调用此选项时,返回的服务器列表可能会有所不同。
     
    如果指定可选参数 c,则输出不会显示 Servers: 标题行,且列出的每个服务器行都没有前导空格。这称为清除输出。清除输出可以提高脚本语言的处理性能。 -q " query " 
    启动 sqlcmd 时执行查询,但是在查询完成时不退出 sqlcmd。将查询用引号引起来,如下例所示。 在命令提示符下,键入: 复制代码 
    sqlcmd -d AdventureWorks -q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%'"
     
    重要事项:  
    请不要在查询中使用 GO 终止符。
     
    如果与此选项同时指定了 -b(在下文介绍),sqlcmd 在遇到错误时将退出。-Q " query " 
    执行查询并立即退出 sqlcmd。 注意:  
    请使用引号 (" ") 将查询引起来。
     
    如果与此选项同时指定了 -b(在下文介绍),sqlcmd 在遇到错误时将退出。-m error_level
    自定义错误消息的显示。显示高于指定严重级别的错误的消息号、状态和错误级别。而不显示严重级别低于指定级别的错误的信息。用 -1 指定与消息一起返回所有标题,即使是信息性的消息。如果指定了 -1,则在参数和设置之间不能有空格(例如,可以是 -m-1,但不能是 -m -1)。此选项设置 sqlcmd 脚本变量 SQLCMDERRORLEVEL。-V 
    指定 sqlcmd 报告的最低严重级别。Transact-SQL 脚本中发生错误时,仅当严重级别大于或等于由 -V 开关指定的值时,才报告严重级别。如果严重级别低于该值,则报告 0。命令提示符批处理文件可以测试 ERRORLEVEL 的值并适当处理错误。-W
    此选项删除列的尾随空格。在准备要导出到另一应用程序的数据时,请将此选项和 -s 选项结合使用。不能与 -y 或 -Y 选项结合使用。-u 
    指定无论 input_file 为何种格式,output_file 都以 Unicode 格式进行存储。 -r [ 0 | 1] 
    将错误消息输出重定向到屏幕 (stderr)。如果未指定参数或指定参数为 0,则仅重定向严重级别为 17 或更高的错误消息。如果指定参数为 1,则将重定向所有消息输出(包括 PRINT)。-i input_file[,input_file2...] 
    标识包含一批 SQL 语句或存储过程的文件。可以指定要按顺序读取和处理的多个文件。文件名之间不要使用任何空格。sqlcmd 将首先检查所有指定的文件是否都存在。如果有一个或多个文件不存在,sqlcmd 将退出。-o output_file 
    标识从 sqlcmd 接收输出的文件。如果指定了 -u,则 output_file 以 Unicode 格式存储。包含空格的文件名必须用引号引起来。如果文件名无效,将生成一个错误消息,并且 sqlcmd 将退出。sqlcmd 不支持向同一文件并发写入多个 sqlcmd 进程。文件输出将损坏或不正确。有关文件格式的详细信息,请参阅 -f 开关。 -f < codepage > | i: < codepage > [ < , o: < codepage > ] 
    指定输入和输出代码页。代码页页码是指定已安装的 Windows 代码页的数值。 -k [ 1 | 2 ]
    删除输出中的所有控制字符,例如制表符和换行符。这会在返回数据时保留列格式。如果指定了 1,则控制字符被一个空格替代。如果指定了 2,则连续的控制字符被一个空格替代。-y display_width 
    限制为较大的可变长度数据类型返回的字符数:varchar(max)
    nvarchar(max)
    varbinary(max)
    xml
    UDT(用户定义的数据类型)
    text
    ntext
    image
    注意:  
    根据实现,UDT 可以使用固定的长度。如果此固定长度 UDT 的长度比 display_width 短,则返回的 UDT 值将不会受影响。但是,如果此长度比 display_width 长,则输出将会被截断。
     
    如果 display_width 为 0,则输出将会在 1-MB 处截断。重要事项:  
    使用 -y 0 选项时要特别注意,因为根据返回的数据量大小,此选项可能导致服务器和网络上出现严重性能问题。
     
    -Y display_width
    限制为以下数据类型返回的字符数:char
    nchar
    varchar(n),其中 1<n<8000
    nvarchar(n) 其中 1<n<4000
    sql_variant
    -p [ 1 ] 
    打印每个结果集的性能统计信息。以下示例是性能统计信息的格式:  复制代码 
    Network packet size (bytes): n
    x xact[s]:
    Clock Time (ms.): total       t1  avg       t2 (t3 xacts per sec.)
     其中 x = SQL Server 处理的事务数。t1 = 所有事务的总时间。t2 = 单个事务的平均时间。 t3 = 每秒的平均事务数。 所有时间均以毫秒表示。如果指定了可选参数 1,则统计信息的输出格式为以冒号分隔的格式,此格式可以由脚本轻松导入到电子表格中或进行处理。如果可选参数是除 1 之外的任何值,则将生成错误并且 sqlcmd 将退出。 -R 
    设置 SQL Server OLE DB 访问接口,使其在将货币、日期和时间数据转换为字符数据时使用客户端区域设置。-b 
    指定错误发生时 sqlcmd 退出并返回一个 DOS ERRORLEVEL 值。当 SQL Server 错误消息的严重级别高于 10 时,返回给 DOS ERRORLEVEL 变量的值为 1;否则返回的值为 0。如果除 -b 选项外还设置了 -V 选项,则当严重等级低于使用 -V 设置的值时,sqlcmd 将不报告错误。命令提示符批处理文件可以测试 ERRORLEVEL 的值并适当处理错误。sqlcmd 不对严重级别 10 报告错误(信息性消息)。如果 sqlcmd 脚本包含错误的注释、语法错误或缺少脚本变量,则返回的 ERRORLEVEL 为 1。-v var=" value"[ var="value"...] 
    创建可用于 sqlcmd 脚本中的 sqlcmd 脚本变量。如果该值包含字符,则将其用引号引起来。可以指定多个 var="values" 值。如果指定的任何值中有错误,sqlcmd 会生成错误消息,然后退出。-A 
    使用专用管理员连接 (DAC) 登录到 SQL Server。此类型连接用于排除服务器故障。这只适用于支持 DAC 的服务器。如果 DAC 不可用,sqlcmd 会生成错误消息,然后退出。有关 DAC 的详细信息,请参阅使用专用管理员连接。-X [ 1 ] 
    从批处理文件执行 sqlcmd 时,将禁用可能危及系统安全的命令。禁用的命令仍然可以被识别;sqlcmd 发出警告消息并继续。如果指定了可选参数 1,则 sqlcmd 将生成错误消息,然后退出。使用 -X 选项时,将禁用以下命令:ED
    !! command
    如果指定 -X 选项,它会阻止将环境变量传递给 sqlcmd。同时该选项还会阻止执行通过使用 SQLCMDINI 脚本变量指定的启动脚本。有关 sqlcmd 脚本变量的详细信息,请参阅将 sqlcmd 与脚本变量结合使用。-x
    导致 sqlcmd 忽略脚本变量。当脚本中包含多个 INSERT 语句,并且这些语句可能包含格式与常规变量,如 $(variable_name) 相同的字符串时,这一选项很有用。-? 
    显示 sqlcmd 选项的语法摘要。备注
    在返回多个结果时,sqlcmd 在批处理中的每个结果集之间打印一个空行。此外,如果没有应用于已执行的语句,则“<x> 行受影响”消息不会出现。若要交互使用 sqlcmd,请在命令提示符处使用上述任意选项键入 sqlcmd。有关详细信息,请参阅使用 sqlcmd 交互式执行 Transact-SQL 语句。注意:  
    请不要使用 -L、-Q 或 -i 等选项,因为它们会导致 sqlcmd 退出。
     
    sqlcmd 命令
    除 sqlcmd 中的 Transact-SQL 语句之外,还可使用以下命令。GO [count]
     :List
     
    [:] RESET
     :Error
     
    [:] ED
     :Out
     
    [:] !!
     :Perftrace
     
    [:] QUIT
     :Connect
     
    [:] EXIT
     :On Error
     
    :r
     :Help
     
    :ServerList
     :XML [ON | OFF]
     当使用 sqlcmd 命令时,请记住下列事项: 除 GO 以外,所有 sqlcmd 命令必须以冒号 (:) 为前缀。重要事项:  
    为了保持对旧的 osql 脚本的向后兼容性,有些命令会被视为不带冒号。这由 [:] 指示。
     
    sqlcmd 命令只有出现在一行的开头时,才能够被识别。
    所有 sqlcmd 命令都不区分大小写。
    每个命令都必须位于单独的行中。命令后面不能跟随 Transact-SQL 语句或其他命令。
    GO [count] 
    GO 在批处理和执行任何缓存 Transact-SQL 语句结尾时会发出信号。在为 count 指定一个值时,缓存的语句会被作为单个批处理执行 count 次。[:] RESET 
    清除语句缓存。[:] ED 
    启动文本编辑器。该编辑器可以用来编辑当前的批处理或上次执行的批处理。若要编辑上次执行的批处理,必须在上一批处理执行完之后立即键入 ED 命令。文本编辑器由 SQLCMDEDITOR 环境变量定义。默认编辑器为“Edit”。若要更改编辑器,请设置 SQLCMDEDITOR 环境变量。例如,若要将编辑器设置为 Microsoft 记事本,请在命令提示符处键入: 复制代码 
    SET SQLCMDEDITOR=notepad
     [:] !!< command> 
    执行操作系统命令。若要执行操作系统命令,请用两个感叹号 (!!) 开始一行,后面输入操作系统命令。例如: 复制代码 
    :!! Dir
     
    注意:  
    该命令在运行 sqlcmd 的计算机上执行。
     
    来自帮助文档。
      

  4.   


    汗一个,没"!!"这种用法,sqlcmd模式,没听说什叫模式,命令行就命令行了,cmd -> sqlcmd /? -> OK
      

  5.   

    楼上的兄弟 windows版混的太多了 呵呵 不过我也是习惯叫命令行
      

  6.   

    SQL里面的新建查询里面可以执行cmd里面的部分命令。