你可以先把这个包存成visual basic格式。仔细研究这个bas文件:),然后改造成visual basic项目或者vbscirpt脚本。sql语句可以写到生成dts包的过程中,或在包外先执行。删除远程表的方法:1、用链接数据库;2、用opendatasource(参照sql帮助)。

解决方案 »

  1.   

    to BenDan2002 
    可不可以详细一些呢?
      

  2.   

    DTS传入连接参数估计不好做, BenDan2002(笨蛋) 的想法到是可以一试,只是这样做后就不再是DTS包了.
      

  3.   

    我想你的dts包是在设计器中做的吧?
    1.新建一个ActiveX解本任务,然后在其中定义接收各种连接参数的变量,并赋值,用的时候,直接在参数后选择该变量即可
    在以后如果要更新的话,就直接更改其中的值就好了
    2.新建一个执行SQL语句的任务,然后把你要执行的语句写在其中,即可delete server名.kmain..client
    where kcode in
    (select kcode from kmain..client)insert server名.kmain..client(kcode,字段列表)
    select kcode,字段列表 from kmain..client3.是写到程序中还是sqlserver要看你的需要而定
    如果是频繁的大数据量的操作,写到sqlserver中比较好,以减少客户端与服务器端的数据交换量
      

  4.   

    只是给你一个方法参考,生成的BAS文件可能会很长,主要是将各个CONNECTION的属性修改一下,作为参数传递进去。
    --------------------------------------------------
    另外可以直接写SQL语句段,用opendatasource方式拷贝数据表。
      

  5.   

    PACKAGE.SAVE可以存成DTS包。如果存成DTS文件,可以用VB修改其中的链接属性:
    Set oPackage = New DTS.Package
    oPackage.LoadFromStorageFile DTS文件名, Empty, , , DTS包名
    DTSModify = False
    For I = 1 To oPackage.Connections.Count
        If oPackage.Connections(I).Name = "连接2" Or oPackage.Connections(I).Name = "连接4" Then
            oPackage.Connections(I).DataSource = SqlServerName1
            DTSModify = True
        End If
        If oPackage.Connections(I).Name = "连接1" Or oPackage.Connections(I).Name = "连接3" Then
            oPackage.Connections(I).DataSource = SqlServerName2
            DTSModify = True
        End If
    Next I
    If DTSModify Then oPackage.SaveToStorageFile DTS文件名
      

  6.   

    现在暂不考虑与远程服务器交换数据的事.
    急的是如果方便更改与服务器的连接参数!!!!!!
    刚才试着做 新建一个ActiveX解本任务 ,里面的东东不知如何下手呀!!!真的这么难呀!??!
      

  7.   

    建议你还是先存成bas文件吧,仔细研究一下,慢慢来,不要急。因为由于dts包不同,各个bas文件也千差万别,所以不能给你例子文件。
      

  8.   

    联接服务器到可以判断,if not exists(select 1 from master.dbo.sysservers where srvname = 'server1')
        EXEC sp_addlinkedserver 'server1','','MSDASQL',NULL,NULL,@connstrto21
    select @str = N'select top 1 * from server1.database1.dbo.table1'
    exec sp_executesql @str
    exec sp_droplinkedsrvlogin  'server1','sa'
    exec sp_dropserver  'server1'
      

  9.   

    我用VB的格式试了下,执行一次时,什么反应都没有!不知是什么呢!to: BenDan2002 
    如果用 oPackage.LoadFromStorageFile DTS文件名, Empty, , , DTS包名
    倒是可以更改里面的参数,可再用 dts 设计器打开这个包时,每更改一次就会多一个版本出来,这是为什么呢?可不可以始终只保持最新一个版本呢?
      

  10.   

    不可,确实是这样的,每次增加新版本。
    另外:你单步调试vb程序,应该不会的,是否忘了package.execute语句?
      

  11.   

    检查了一下,有package.execute 呀!!!原来就有的呀。
    奇怪!!???
      

  12.   

    实在不行,你先package.save到sql server中,然后看看那个包有什么问题。
      

  13.   

    算了,我这里还是不适合dts!
    谢谢 BenDan2002 !!
    结帖啦!