日期:2014-05-17  浏览次数:20436 次

求救,我把数据库B给合到数据库A里,但是B的表关系没了,怎么办,B里的表有很多主键,外键,索引等,到了A数据库全都没了。这样不行啊,必须有个简单的办法
求救,我把数据库B给合到数据库A里,我用的“导入导出”
但是B里的表关系没了,怎么办,B里的表有很多主键,外键,索引等,
到了A数据库全都没了。这样不行啊,等于没用了,必须有个简单的办法啊,
高手帮帮我谢谢了!!!

------解决方案--------------------

select  'alter table ['+c.name+']  add constraint '+b.name+' foreign key ('+d.name+') references '+  e.name +' ('+f.name+')'
from sysforeignkeys a
inner join sysobjects b  on a.constid=b.id
inner join sysobjects c  on a.fkeyid=c.id
inner join syscolumns d on a.fkeyid=d.id and a.fkey=d.colid
inner join sysobjects e  on a.rkeyid=e.id
inner join syscolumns f on a.rkeyid=f.id and a.rkey=f.colid
或者不检查约束
select  'alter table ['+c.name+'] with nocheck add constraint '+b.name+' foreign key ('+d.name+') references '+  e.name +' ('+f.name+')'
from sysforeignkeys a
inner join sysobjects b  on a.constid=b.id
inner join sysobjects c  on a.fkeyid=c.id
inner join syscolumns d on a.fkeyid=d.id and a.fkey=d.colid
inner join sysobjects e  on a.rkeyid=e.id
inner join syscolumns f on a.rkeyid=f.id and a.rkey=f.colid


------解决方案--------------------
建议步骤:
1.产生数据库B的建表脚本.
  数据库B-->右键-->Tasks-->Generate Scripts-->选择所有表-->Advanced-->Script Indexes设为True.
  
  注: Script Indexes默认为False,设为True使产生的脚本中含有建索引脚本.

2.在数据库A中执行建表脚本. 含主键,外键,索引等.
  完成后,数据库A中即有对应的空表.

3.传送数据,使用导出导入工具或手工执行TSQL脚本传送数据到数据库A.