下面是使用C#调用cmd来执行osql实现脚本的执行。




using System;


using System.Data;


using System.Collections;


using System.Xml;


using System.IO;


using System.Text;


using System.Diagnostics;




namespace ZZ


{


public class ZZConsole


{


[STAThread]


static void Main(string[] args)


{


string sqlQuery = "osql.exe /uSa /p123 /s192.192.132.229 /dNorthWind /i yoursql.sql";


string strRst = ExeCommand(sqlQuery);


Console.WriteLine(strRst);


Console.ReadLine();


}




public static string ExeCommand(string commandText)


{


Process p = new Process();


p.StartInfo.FileName = "cmd.exe";


p.StartInfo.UseShellExecute = false;


p.StartInfo.RedirectStandardInput = true;


p.StartInfo.RedirectStandardOutput = true;


p.StartInfo.RedirectStandardError = true;


p.StartInfo.CreateNoWindow = true;


string strOutput = null;


try


{


p.Start();


p.StandardInput.WriteLine(commandText);


p.StandardInput.WriteLine("exit");


strOutput = p.StandardOutput.ReadToEnd();


p.WaitForExit();


p.Close();


}


catch(Exception e)


{


strOutput = e.Message;


}


return strOutput;


}


}


}




对于osql命名的参数如下:


=====================




用法: osql [-U login id] [-P password]


[-S server] [-H hostname] [-E trusted connection]


[-d use database name] [-l login timeout] [-t query timeout]


[-h headers] [-s colseparator] [-w columnwidth]


[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]


[-L list servers] [-c cmdend] [-D ODBC DSN name]


[-q "cmdline query"] [-Q "cmdline query" and exit]


[-n remove numbering] [-m errorlevel]


[-r msgs to stderr] [-V severitylevel]


[-i inputfile] [-o outputfile]


[-p print statistics] [-b On error batch abort]


[-X[1] disable commands [and exit with warning]]


[-O use Old ISQL behavior disables the following]


[-? show syntax summary]


具体参考 


http://www.588188.com/netbook/sqlserver2000/coprompt/cp_osql_1wxl.htm


或者sql server 2000帮助文档