pfclnt80.dll pfuttl80.dll semsfc.dll sqlgui.dll sqlqry.dll sqlresld.dll sqlsvc.dll sqlunirl.dll OBJMGR.DLL | 目录Resources 目录1033 isqlw.rll pfclnt80.rll pfuttl80.rll semsfc.rll sqlgui.rll sqlqry.rll sqlsvc.rll OBJMGR.RLL 目录2052 isqlw.rll pfclnt80.rll pfuttl80.rll semsfc.rll sqlgui.rll sqlqry.rll sqlsvc.rll OBJMGR.RLL
Isqlw运行的语法参数如下: 语法 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 实例。 -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。 -F {U|A|O}是输入文件和输出文件的格式。值包括 Unicode、ANSI 和 OEM。如果未指定 -F,则使用自动模式(如果文件标为 Unicode 格式,则以 Unicode 格式打开;否则,以 ANSI 格式打开文件)。 -f file_list将列出的文件装载到 SQL 查询分析器中。使用 -f 选项,可以装载一个或多个文件(文件名以单个空格分开)。如果指定了多个文件,则以相同的连接上下文将这些文件打开。文件名可以包含该文件所驻留的目录路径。可以使用通配符,如 C: /*.sql 中的星号 (*)。 -C configuration_file使用配置文件中指定的设置。其它在命令提示下显式指定的参数将重写相应配置文件中的设置。 -D scripts_directory重写在注册表中或在用 –C 指定的配置文件中指定的默认存储脚本目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析器中查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。 -T template_directory重写在注册表中或在用 –C 指定的配置文件中指定的默认模板目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析器中查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。ISQLW调用方法使用信任连接调用Isqlw格式如下: isqlw.exe -S "" -d "master" -E 使用SQL认证连接调用Isqlw格式如下: isqlw.exe -S "" -d "ii" -U "sa" -P "" 用命令行从后台执行Sql脚本 isqlw.exe -S "" -d "ii" -U "sa" -P "" -i "c:/1.sql" -o "c:/output.txt" 参数i是要执行的sql脚本,参数o是输出执行结果,有了参数i则o不能省略。 特别注意:参数S是大写,S后的""表示数据库服务器为本机,参数E是大写.
6.3.2 使用DOS重定位技术执行isqlw 将上述在命令行使用isqlw的方法在dos下重定位,具体的代码如下: [c++] CString CSQLDebug::ExecSQL() { HANDLE hMutex=NULL; CString TmpStr; HANDLE hRead=NULL; CString StrSQLFile,StrSQLResult,CurrPath; CurrPath=GetBasePath()+"//"+GetStudentID(); StrSQLFile=CurrPath+"//"+GetStudentID()+"_P"+GetID()+".sql";//源代码的路径 StrSQLResult=CurrPath+"//"+GetStudentID()+"_P"+GetID()+".txt";//结果路径 CString Evn=GetBasePath()+"//sqlDebug//isqlw"; SetCurrentDirectory(CurrPath); SetEnvironment();//设置环境变量 ServerName.TrimLeft(" "); DataBaseName.TrimLeft(" "); UserPwd.TrimLeft(" "); UserName.TrimLeft(" "); CString StrServerName="/""+ServerName+"/""; CString StrDataBaseName="/""+DataBaseName+"/""; CString StrUserName="/""+UserName+"/""; CString StrUserPwd="/""+UserPwd+"/""; CString StrInput="/""+StrSQLFile+"/""; CString StrOutput="/""+StrSQLResult+"/""; CString command;//,TmpStr; command="Cmd.exe /C isqlw -S "+StrServerName+" -d "+ StrDataBaseName+" -U "+StrUserName+" -P "+ StrUserPwd+" -i "+StrInput+" -o "+StrOutput; char *cmd=command.GetBuffer(command.GetLength()); SECURITY_ATTRIBUTES sa; HANDLE hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe(&hRead,&hWrite,&sa,0)) { AfxMessageBox("创建管道失败!",MB_OK); return ""; } STARTUPINFO si; PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; //把创建进程的标准错误输出重定向到管道输入 si.hStdOutput = hWrite; //把创建进程的标准输出重定向到管道输入 si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; if (!CreateProcess(NULL, cmd,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) { CloseHandle(hWrite); CloseHandle(hRead); AfxMessageBox("进程创建失败!/r请尝试再次编译!",MB_OK); return ""; } CloseHandle(hWrite); CloseHandle(hRead); //将结果读取出来 CString StrOutPut=ReadOutPutFile(StrSQLResult.GetBuffer(StrSQLResult.GetLength())); SetSaveOutPut(StrOutPut); return StrOutPut; } 摘自 chenjieb520--两片森林的技术博客
|