首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

急数据库复制有关问题

2012-04-17 
急-数据库复制问题环境为 sqlserver 2000现在有a和b两个库a库中有数据,b库为新建的数据库我想要将a库中的,

急-数据库复制问题
环境为 sqlserver 2000
现在有a和b两个库
a库中有数据,b库为新建的数据库
我想要将a库中的,表,结构,存储过程,视图,自定义函数等等等(不含数据)复制到库b中

目前,我能想到的思路是
1,delete from tablename 挨个儿删除,但是这样工作量非常大,另外涉及到外键的地方也很麻烦
2,truncate table tablename 这个虽然和上面的delete类似,除了工作量更大一下之外,速度和其他方面比delete要好,但是,
问题是涉及到外键的地方,就报错了,哎...因为数据库比较复杂,生怕弄错了
3,所谓导出sql,这个我倒是导出来了,如何导进去呢? 倒进去还是有几个表要修复.....


求查看表外键,关闭和打开外键相关代码

求思路,求方法,求步骤


[解决办法]

SQL code
--查询外键约束select FK_Name as [外键名],Parent_Tab_Name as [外键表],    [外键列]=stuff((select ','+[Parent_Col_Name] from (        select    FK.name as FK_Name,Parent_Tab.Name as Parent_Tab_Name,Parent_Col.Name as Parent_Col_Name,                Referenced_Tab.Name as Referenced_Tab_Name,Referenced_Col.Name as Referenced_Col_Name        from sys.foreign_keys FK        inner join sys.foreign_key_columns Col on FK.Object_ID = Col.constraint_object_id        inner join sys.objects Parent_Tab ON  Col.parent_object_id = Parent_Tab.Object_ID and Parent_Tab.TYPE = 'U'        inner join sys.columns Parent_Col on Parent_Tab.Object_ID = Parent_Col.object_id                                             and  Col.parent_column_id = Parent_Col.column_id        inner join sys.objects Referenced_Tab ON  Col.referenced_object_id = Referenced_Tab.Object_ID and Referenced_Tab.TYPE = 'U'        inner join sys.columns Referenced_Col on Referenced_Tab.Object_ID = Referenced_Col.object_id                                             and  Col.referenced_column_id = Referenced_Col.column_id    )t where FK_Name=tb.FK_Name  and Parent_Tab_Name = tb.Parent_Tab_Name and Referenced_Tab_Name = tb.Referenced_Tab_Name   for xml path('')), 1, 1, ''),    Referenced_Tab_Name as  [主键表],    [主键列]=stuff((select ','+[Referenced_Col_Name] from (        select    FK.name as FK_Name,Parent_Tab.Name as Parent_Tab_Name,Parent_Col.Name as Parent_Col_Name,                Referenced_Tab.Name as Referenced_Tab_Name,Referenced_Col.Name as Referenced_Col_Name        from sys.foreign_keys FK        inner join sys.foreign_key_columns Col on FK.Object_ID = Col.constraint_object_id        inner join sys.objects Parent_Tab ON  Col.parent_object_id = Parent_Tab.Object_ID and Parent_Tab.TYPE = 'U'        inner join sys.columns Parent_Col on Parent_Tab.Object_ID = Parent_Col.object_id                                             and  Col.parent_column_id = Parent_Col.column_id        inner join sys.objects Referenced_Tab ON  Col.referenced_object_id = Referenced_Tab.Object_ID and Referenced_Tab.TYPE = 'U'        inner join sys.columns Referenced_Col on Referenced_Tab.Object_ID = Referenced_Col.object_id                                             and  Col.referenced_column_id = Referenced_Col.column_id    )t where FK_Name=tb.FK_Name  and Parent_Tab_Name = tb.Parent_Tab_Name and Referenced_Tab_Name = tb.Referenced_Tab_Name   for xml path('')), 1, 1, '')    --as [外键列]from (    select    FK.name as FK_Name,Parent_Tab.Name as Parent_Tab_Name,Parent_Col.Name as Parent_Col_Name,            Referenced_Tab.Name as Referenced_Tab_Name,Referenced_Col.Name as Referenced_Col_Name    from sys.foreign_keys FK    inner join sys.foreign_key_columns Col on FK.Object_ID = Col.constraint_object_id    inner join sys.objects Parent_Tab ON  Col.parent_object_id = Parent_Tab.Object_ID and Parent_Tab.TYPE = 'U'    inner join sys.columns Parent_Col on Parent_Tab.Object_ID = Parent_Col.object_id                                         and  Col.parent_column_id = Parent_Col.column_id    inner join sys.objects Referenced_Tab ON  Col.referenced_object_id = Referenced_Tab.Object_ID and Referenced_Tab.TYPE = 'U'    inner join sys.columns Referenced_Col on Referenced_Tab.Object_ID = Referenced_Col.object_id                                         and  Col.referenced_column_id = Referenced_Col.column_id)tbgroup by FK_Name,Parent_Tab_Name,Referenced_Tab_Name--1.查出所有有外键的表--2.删除外键表中的数据--3.删除主键表中数据--4.备份 还原
------解决方案--------------------


右击数据库-任务-生成脚本 这个里面就有的,你可以自己选择!这样只是把表的结构,储存过程的语句就生成出来了。
[解决办法]

探讨
语句现在生成出来了,问题是如何导入?
sql查询分析器里面执行出错
服务器: 消息 1921,级别 16,状态 1,行 2
指定的文件组 'BASDAT' 无效。

文件组很多....

[解决办法]
探讨
SQL code

--1.禁用所有表的外键约束
sp_MSforeachtable @command1 = 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'

--2.删除所有表的数据
sp_MSforeachtable @command1 = 'DELETE FROM ?'
--或
sp_MSforeachtable @command1 = 'TRU……

[解决办法]
探讨
用了下12楼脚本,执行sp_MSforeachtable @command1 = 'DELETE FROM ?'没有问题。
sp_MSforeachtable @command1 = 'TRUNCATE TABLE ?'这个会出现错误。

[解决办法]
探讨
引用:
用了下12楼脚本,执行sp_MSforeachtable @command1 = 'DELETE FROM ?'没有问题。
sp_MSforeachtable @command1 = 'TRUNCATE TABLE ?'这个会出现错误。


呃,好像是这样的...


SQL code

--1.禁用所有表的外键约束
sp_MSf……

热点排行