日期:2014-05-18  浏览次数:20595 次

求助:在批处理中如何操作sql server数据库?
我想要通过这个bat文件来创建和初始化数据库:

@Echo Off

set SERVER=127.0.0.1
set LOGIN=sa
set PWD=white220
set DBNAME=JR

osql -S %SERVER% -U %LOGIN% -P %PWD% -d JR -i "F:\AutoDeployTest\CreateDB_JR.sql"

pause


文件“CreateDB_JR.sql”是我写的创建和初始化数据库脚本;

运行结果提示:'osql' 不是内部或外部命令,也不是可运行的程序或批处理文件。

改成iSqlw也不行,究竟启动sql解释器在windows批处理下用什么命令??

------解决方案--------------------
SQL code
很多情况下,需要给客户更新数据库,不值得

跑一趟,客户自己也不懂得如何操作,远程操作网速还跟不上...这时可以把要更新的sql语句保存成文件,写一个批处理在命令行状

态下调用查询分析器来执行这个sql文件里的语句。


下面就是sqlserver帮助里对于查询分析器(isqlw)命令行参数的解释:

isqlw 实用工具(SQL 查询分析器)使您得以输入 Transact-SQL 语句、系统存储过程和脚本文件。通过设置快捷方式或创建批处理

文件,可以启动预配置的 SQL 查询分析器。

语法
isqlw
    [-?] |
     [
         [-S server_name[instance_name]]
         [-d database]
         [-E] [-U user] [-P password]
         [{-i input_file} {-o output_file} [-F {U|A|O}]]
         [-f file_list]
         [-C configuration_file]
         [-D scripts_directory]
         [-T template_directory]
     ]

参数 
-?

显示用法信息。

-S server_name[instance_name]:

指定要连接到的 Microsoft® SQL Server? 2000 实例。指定用于连接到该服务器上的 SQL Server 2000 默认实例的 server_name。

指定用于连接到该服务器上的 SQL Server 2000 命名实例的 server_nameinstance_name。如果未指定服务器,isqlw 将连接到本地

计算机上的 SQL Server 默认实例。从网络上的远程计算机执行 isqlw 时,此选项是必需的。

-d database

当启动 isqlw 时,发出一个 USE database 语句。默认值为用户的默认数据库。

-E

使用信任连接而不请求密码。

-U user

用户登录 ID。登录 ID 区分大小写。

-P password

是登录密码。默认设置为 NULL。

-i input_file

标识包含一批 SQL 语句或存储过程的文件。必须同时指定 -i 和 -o 选项。如果指定 -i 和 -o 选项,将执行输入文件中的查询,并

将结果保存到输出文件中。在查询执行过程中不显示用户接口。当执行完成后,进程退出。

-o output_file

标识接收来自 isqlw 的输出的文件。必须同时指定 –i 和 –o 选项。如果指定 -i 和 -o 选项,将执行输入文件中的查询,并将结

果保存到输出文件中。在查询执行过程中不显示用户接口。当执行完成后,进程退出。如果未使用 -F 指定文件格式,则输出文件使用

与输入文件相同的类型。

-F {U|A|O}

是输入文件和输出文件的格式。值包括 Unicode、ANSI 和 OEM。如果未指定 -F,则使用自动模式(如果文件标为 Unicode 格式,则

以 Unicode 格式打开;否则,以 ANSI 格式打开文件)。

-f file_list

将列出的文件装载到 SQL 查询分析器中。使用 -f 选项,可以装载一个或多个文件(文件名以单个空格分开)。如果指定了多个文件

,则以相同的连接上下文将这些文件打开。文件名可以包含该文件所驻留的目录路径。可以使用通配符,如 C:Test*.sql 中的星号

(*)。

-C configuration_file

使用配置文件中指定的设置。其它在命令提示下显式指定的参数将重写相应配置文件中的设置。

-D scripts_directory

重写在注册表中或在用 –C 指定的配置文件中指定的默认存储脚本目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析

器中查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。

-T template_directory

重写在注册表中或在用 –C 指定的配置文件中指定的默认模板目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析器中

查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。



注释
有用户界面或没有用户界面时都可使用 isqlw 实用工具。若要在没有用户界面的情况下运行 isqlw,请指定有效登录信息(具有信任

连接或有效登录 ID 及密码的 SQL Server 2000 实例)和输入及输出文件。isqlw 将执行输入文件的内容,并将结果保存到输出文件

中。

如果没有指定输入和输出文件,isqlw 将交互运行并启动 SQL 查询分析器。如果指定了有效登录信息,isqlw 将直接连接 SQL

Server 2000 实例。如果指定的连接信息不充足,将出现"连接到 SQL Server"对话框。

isqlw 和 SQL 查询分析器使用 ODBC API。该实用工具使用 SQL-92 的 Microsoft® SQL Server ODBC 驱动程序默认设置。

示例
A. 执行 SQL 语句

本例使用 Windows 身份验证连接到 MyServer 上的 pubs 数据库,并执行 Input.sql 文件。结果保存在 Output.txt 文件中。这些

文件以 Unicode 文件方式打开。

isqlw -S MyServer -d pubs -E -i input.sql -o output.txt -FU



B. 使用通配符

本例将两个文件装载到 SQL 查询分析器中。将使用 Windows 身份验证连接到本地服务器。

isqlw -d pubs -E -f "c:Program FilesMicrosoft SQL ServerMSSQLInstallinstpubs.sql" "c:Program FilesMicrosoft

SQL ServerMSSQLInstallinstcat.sql"



C. 装载多个文件

本例将所有 .sql 文件装载到 SQL 查询分析器中。所有连接均使用 Windows 身份验证并指向本地服务器上的 pubs 数据库。

isqlw -d pubs -E -f "c:Program FilesMicrosoft SQL ServerMSSQLInstall*.sql"



D. 使用 Unicode 文件
本例连接到 MyServer(pubs 数据库),并执行 input_file 中的 SQL 语句,执行结果存储在 output_file 中。

isqlw -S MyServer -d pubs -U sa -P -i input_file -o output_file