比如以前是从DB1导入到db2,现在想从db3导入db4,这4个数据库的结构是一样的。
做dts设计时是从db1到db2的导入,但是想从db3导入db4时就不能用了,虽然我在dts设计器中将连接的源、目标数据库都改成db3和db4了,但是"转换数据任务属性“里的SQL语句还是SELECT ... From db1.dbo.table1 等,
怎样将这些db1全部改成db3?

解决方案 »

  1.   

    我将db3的数据库名改成db1,导出完成后再修改回去是可以的,有没有办法不修改数据名直接修改DTS属性就可以完成新的导入的?
      

  2.   

    --SQL Server 2000 好象必须修改 转换数据任务属性.
      

  3.   

    联机丛书 中有这样的话:如果在两个连接之间定义了转换,而您需要更改源连接或目的连接,则转换可能不再有效。因此,DTS 设计器提示您是否将转换属性重置为默认值。如果决定重置转换,每个与该连接关联的转换的属性均将被删除。然而,查找不会受影响。是不是我要的这种办法无法实现呀
      

  4.   

    @ zlp321002
    thanks! 关键是我的DTS中有100+表需要转换,如果是这样的话就需要修改100+次,这样的话用修改数据库名的方法还来的快一些有没有通过编程的方法批量修改 转换数据任务属性 的可能?
      

  5.   

    研究了一下,发现还是可以通过VB.NET代码进行修改的,大概下面这个样子:      Dim p As New DTS.Package2
          p.LoadFromSQLServer(".", "sa", "1", DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, "", "", "", "dts_old", "")        Dim t As DTS.Task 
            Dim ct As DTS.DataPumpTask2
            t = p.Tasks.Item(2)
            ct = t.CustomTask
            ct.SourceSQLStatement = ct.SourceSQLStatement.Replace("tcyc_data_old", "tcyc_data")        p.Tasks.Remove(2)
            p.Tasks.Add(t)        p.SaveToSQLServerAs("dts_new", ".", "sa", "1", DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default)
      

  6.   

    有这么麻烦吗 动态任务属性就是干这事的 做一个INI文件 将数据库名字写里面去 在INI文件里更改,每次它会去找INI文件