当前位置: 代码迷 >> Sql Server >> 怎样把数据库DB1里面的全部和数据库本身的相关内容(表,视图,函数,存储过程)复制到另一个空数据库DB2(新建)里?并替换掉所有varchar/nvarchar
  详细解决方案

怎样把数据库DB1里面的全部和数据库本身的相关内容(表,视图,函数,存储过程)复制到另一个空数据库DB2(新建)里?并替换掉所有varchar/nvarchar

热度:273   发布时间:2016-04-24 09:10:18.0
怎样把数据库DB1里面的所有和数据库本身的相关内容(表,视图,函数,存储过程)复制到另一个空数据库DB2(新建)里?并替换掉所有varchar/nvarchar
怎样把数据库DB1里面的所有和数据库本身的相关内容(表,视图,函数,存储过程)复制到另一个空数据库DB2(新建)里?并且要把所有varchar和nvarchar的数据类型的值替换成XXXXX

比如DB1里有3个表, 2个视图,3个函数,10个储存过程; 表如下:
User
Name(varchar), UserID (GUID), Birthday(date)

Result
UserID (GUID), Chinese(int), English(int), Math(int), Class (nvarchar)

Feedback
UserID (GUID), Feedbacks(xml)

结果应该是DB2里面也存在同样的和数据库本身的相关内容(3x表,2x视图,3x函数,10x存储过程),但是表中的内容 User.Name 和 Result.Class 被替换成了XXXXX.

注意,表的数量可能是上百个,情况也会复杂,上面只是个例子。
------解决思路----------------------
你可以备份还原过去后,然后再像修改本数据库一样修改那些
------解决思路----------------------
这个想法可否:
大致分两步:
1、将Source库的对象(包括:表、视图、存储过程、表结构、约束、触发等等)生成T-SQL脚本。
2、手动修改T-SQL需要改变的内容。
------------------------------------------------------------
如果库的对象比较多并且修改规则也复杂,那么工作量会比较大;如果修改规则简单,可以使用查找-替换。
------解决思路----------------------
你先说你能做什么操作吧。
至少要有建表权限吧,让管理器自动生成建表、视图、函数、存储过程的脚本,在新库中创建好结构。
然后按下面的格式复制数据
INSERT INTO db2..User
SELECT 'XXXXXX' Name, UserID , Birthday
  FROM db1..User;

INSERT INTO db2..Result
SELECT UserID, Chinese, English, Math, N'XXXXXX' Class
  FROM db1..Result;

INSERT INTO db2..Feedback
SELECT UserID, Feedbacks
  FROM db1..Feedback;
  相关解决方案