关于在.net程序中执行SQL数据库的DTS包
借首页问个问题,希望管理员允许我暂放一下,也希望各位兄弟帮我解答解答。
一个项目中,客户有一台oracle数据库以及一个sql数据库,我将它们搭建成异构数据库。其中后台要实现的一个功能叫“数据初始化”,要将oracle中的数据导入到sql数据库中。因此我使用了sql数据库的DTS导入,创建的DTS包在sql的企业管理器中已经被证明是可以成功执行的,可以成功地导入oracle的近百万的数据。
接着我开始用程序实现,代码如下:
这个程序在客户那里可以执行,不会出错,但是它中间的DTS包并没有被运行。究竟是哪里出了问题呢?大家可以指点一下吗?
客户的系统环境是window 2000 ad server+sql server 2000,数据库所在盘的文件格式为NTFS。
一个项目中,客户有一台oracle数据库以及一个sql数据库,我将它们搭建成异构数据库。其中后台要实现的一个功能叫“数据初始化”,要将oracle中的数据导入到sql数据库中。因此我使用了sql数据库的DTS导入,创建的DTS包在sql的企业管理器中已经被证明是可以成功执行的,可以成功地导入oracle的近百万的数据。
接着我开始用程序实现,代码如下:
string DB_String = CConst.DBConnectString;
Regex ServerRegex = new Regex("Server=(?<server>[^;]+);");
Regex UserRegex = new Regex("UID=(?<user>[^;]+);*");
Regex PasswordRegex = new Regex("PWD=(?<password>\\w*);*");
Match m = ServerRegex.Match(DB_String);
string server_name = m.Groups["server"].Value;
m = UserRegex.Match(DB_String);
string user_name = m.Groups["user"].Value;
m = PasswordRegex.Match(DB_String);
if(!m.Success)
{
Trace.Warn("失败啦"+DB_String);
}
string password = m.Groups["password"].Value;
string package_name = "导入oracle核心数据库";
string DTSCommandText = string.Format(@"/S {0} /U {1} /P {2} /N {3}", server_name, user_name, password, package_name);
Trace.Warn(DTSCommandText);
Process myProc = new Process();
myProc.StartInfo.FileName = @"dtsrun.exe";
myProc.StartInfo.Arguments = DTSCommandText;
myProc.StartInfo.CreateNoWindow = true;
myProc.Start();
this.Button1.Enabled = false;
this.LabelResult.Text = "DTS作业已经开始运行";
this.LabelResult.Visible = true;
Regex ServerRegex = new Regex("Server=(?<server>[^;]+);");
Regex UserRegex = new Regex("UID=(?<user>[^;]+);*");
Regex PasswordRegex = new Regex("PWD=(?<password>\\w*);*");
Match m = ServerRegex.Match(DB_String);
string server_name = m.Groups["server"].Value;
m = UserRegex.Match(DB_String);
string user_name = m.Groups["user"].Value;
m = PasswordRegex.Match(DB_String);
if(!m.Success)
{
Trace.Warn("失败啦"+DB_String);
}
string password = m.Groups["password"].Value;
string package_name = "导入oracle核心数据库";
string DTSCommandText = string.Format(@"/S {0} /U {1} /P {2} /N {3}", server_name, user_name, password, package_name);
Trace.Warn(DTSCommandText);
Process myProc = new Process();
myProc.StartInfo.FileName = @"dtsrun.exe";
myProc.StartInfo.Arguments = DTSCommandText;
myProc.StartInfo.CreateNoWindow = true;
myProc.Start();
this.Button1.Enabled = false;
this.LabelResult.Text = "DTS作业已经开始运行";
this.LabelResult.Visible = true;
这个程序在客户那里可以执行,不会出错,但是它中间的DTS包并没有被运行。究竟是哪里出了问题呢?大家可以指点一下吗?
客户的系统环境是window 2000 ad server+sql server 2000,数据库所在盘的文件格式为NTFS。