用alter table 或alter trigger不行吗?

解决方案 »

  1.   

    对比一下两地的syscolumns和sysobjects,然后再相应的alter或create。
    如果表多的话你写可以写一个自动生成更新脚本的语句啊。
      

  2.   

    多谢chiff的指点,这个办法较为严谨!
    我想再问,sql server中有没有复制结构而不覆盖数据的复制方法么?
      

  3.   

    DTS里有不覆盖数据的方法,但结构还是得用程序ALTER的吧.
      

  4.   

    想到以下方法:
    1,export data,使用transfer object and data方式,不选copy data,将整个数据库A导进一新生成的数据库C,该步骤完成结构的复制;2,export data,使用copy tables方式,由B至C,选上所有的table,数据copy方式使用默认的append row方式;3,由于外键的约束关系,步骤2无法一次成功,重复步骤2,数据copy方式仍旧使用append row方式,直到所有的copy任务都失败为止,此时说明两个数据库中数据已经达到一致;4,删除B,将C数据库改名为B。理论上,该方法能够更新结构而不破坏数据,目前需要考虑的是,如何找一种方式来验证B和C是否真正完全一致?
      

  5.   

    刚刚发现:
    1,如果存在不设主键的table,反复的data copy会出现冗余;
    2,如果包含数据行数为0的table,那么该table的复制结果不会失败,所以判断步骤2是否可以结束的方法是观察任务失败的table数是否稳定为一个不变的数字。
      

  6.   

    TO:ICEVI,偶正是这样做的啊~
    A是结构改动后的DB,B是未经改动且带有数据的DB。
      

  7.   

    sql2k支持对表架构更改的复制
    不过只支持通过存储过程进行的修改,而且存储过程也要复制
      

  8.   

    想到一个问题:
    倘若某些table带有更新其他table的触发器,列如table TA 的内容为单据数据,带有更新table TB (内容为库存数据)的触发器,那么,在data copy中,如果TB的更新晚于TA,没有什么问题,如果早于TA,那么data copy是否会触发trigger引起对TB的更新,引起TB中的数据错误?所以,使用sql server中 export data或者 import data时会不会触发trigger?
      

  9.   

    okay,偶再自说自话,重新整理一下整套步骤。
    数据库具体情形以及操作目的请看第一贴。1,使用dts的export  data,使用transfer object and data,由A至C,C为新建的db,不选择copy data,选择transfer all objects,不使用default option,不选择其中的transfer primary and foreign key,(避免在下面的数据复制步骤时因为外键的关系而无法一次成功,虽然可以通过反复复制的方法将数据全部复制过去,但是那些无主键的table因此将会有重复的冗余数据),也可以不选择transfer trigger,(但经我实验,实际上trigger还是会复制过去,幸好data copy时不会触发trigger,因此避免数据因trigger产生错误);2,复制数据,使用dts的export data ,(copy table 方式和transfer object and data方式均可,但是后一种方式要注意只选copy data 而不选create destination object,建议使用第一种方式)由B至C,这一步骤应该可以成功,只要C(A)能够兼容B的话,只复制一次,避免无主键的table出现冗余;3,复制主键和外键,使用dts的export data,transfer object and data方式,注意不选copy  data,选择transfer all object,不使用default option,只选择transfer primary and foreign key;目前的问题是找一种方法判断这种方法是否严谨?