sql备忘-osql 实用工具
osql 实用工具 来自msdn
语法
处理 sql语句
osql.exe -E -e -n -d "_database name" -Q "sql语句"
批量处理
osql.exe -E -e -n -d "%DatabaseName%" -i "batchsqls.sql"
等....
最后
写个批处理文件。运行...
语法
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 区分大小写。
如果 -U 选项和 -P 选项均未指定,sqlcmd 将尝试使用 Microsoft Windows 身份验证模式进行连接。身份验证基于运行 sqlcmd 的用户的 Windows 帐户。
如果 -U 选项与 -E 选项(在本主题的后面详细说明)一起使用,将生成错误消息。如果 –U 选项后有多个参数,将生成错误消息并退出程序。
-P password
用户指定的密码。密码是区分大小写的。如果未使用 -P 选项,并且未设置 SQLCMDPASSWORD 环境变量,则 sqlcmd 会提示用户输入密码。如果在命令提示符的末尾使用 -P 选项而不带密码,sqlcmd 将使用默认密码 (NULL)。
-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 环境变量。如果未指定服务器,则使用工作站名称。
-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 将生成错误消息。
-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。如果服务器列表由于缓冲区大小而被截断,则会显示错误消息。
-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,则连续的控制字符被一个空格替代。
-U login_id
用户登录 ID。登录 ID 区分大小写。
如果 -U 选项和 -P 选项均未指定,sqlcmd 将尝试使用 Microsoft Windows 身份验证模式进行连接。身份验证基于运行 sqlcmd 的用户的 Windows 帐户。
如果 -U 选项与 -E 选项(在本主题的后面详细说明)一起使用,将生成错误消息。如果 –U 选项后有多个参数,将生成错误消息并退出程序。
-P password
用户指定的密码。密码是区分大小写的。如果未使用 -P 选项,并且未设置 SQLCMDPASSWORD 环境变量,则 sqlcmd 会提示用户输入密码。如果在命令提示符的末尾使用 -P 选项而不带密码,sqlcmd 将使用默认密码 (NULL)。
-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 环境变量。如果未指定服务器,则使用工作站名称。
-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 将生成错误消息。
-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。如果服务器列表由于缓冲区大小而被截断,则会显示错误消息。
-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,则连续的控制字符被一个空格替代。
处理 sql语句
osql.exe -E -e -n -d "_database name" -Q "sql语句"
批量处理
osql.exe -E -e -n -d "%DatabaseName%" -i "batchsqls.sql"
等....
最后
写个批处理文件。运行...