随笔-48  评论-309  文章-0  trackbacks-3
借首页问个问题,希望管理员允许我暂放一下,也希望各位兄弟帮我解答解答。

一个项目中,客户有一台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;

这个程序在客户那里可以执行,不会出错,但是它中间的DTS包并没有被运行。究竟是哪里出了问题呢?大家可以指点一下吗?

客户的系统环境是window 2000 ad server+sql server 2000,数据库所在盘的文件格式为NTFS。
posted on 2005-03-01 09:58 湘南和也 阅读(1297) 评论(6)  编辑 收藏 所属分类: .net技术

评论:
#1楼  2005-03-02 09:13 | 吕震宇      
胡言乱语一番:

是不是没有给该托管代码足够的权限?
  回复  引用  查看    
#2楼 [楼主] 2005-03-03 09:59 | 湘南和也      
to 吕大哥:

我也估计有这么个可能,我在自己的开发机上测试是可以的。我的开发机的文件格式是FAT32。
但怎样才能给它足够的权限呢?


  回复  引用  查看    
#3楼  2005-07-05 16:53 | niming [未注册用户]
請問 CConst.DBConnectString 中的字串是怎樣的格式?
  回复  引用    
#4楼 [楼主] 2005-07-06 10:02 | 湘南和也      
就是普通的类似"Server=127.0.0.1;Database=dbACTI;UID=uACTI;PWD=123"这样的字符串。
上面的代码用了正则表达式来取出各个参数
  回复  引用  查看    
#5楼  2005-07-06 19:32 | niming [未注册用户]
Match m = ServerRegex.Match(DB_String);
if(m.Success)
server_name = m.Groups["server"].Value;
但是我這樣調 m.Success 一直是false; m.Groups.count=0
  回复  引用    
#6楼 [楼主] 2005-07-07 10:19 | 湘南和也      
前面的政则表达式你写了没有?
Regex ServerRegex = new Regex("Server=(?<server>[^;]+);");

另外你把你的连接字符串贴出来看看
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: