SQL server 2008 R2 数据迁移到 2008
今天,特意查阅了一下为什么在 sql server 2008 R2 上建的数据库迁移到 sql server 2008 上就出错,问题的关键在于如何保留原有表结构的主键、外键等,分两个情况,对于数据库数据量小的,可以很方便的解决。
第一种:小数据的情况
- 先在低版本的服务器上建立同名的数据库.
- 在高版本的服务器上右键点击目标数据库->任务->生成脚本.
- 在选择对象->选择特定数据库对象.
- 选择表、视图、存储过程,然后下一步.
- 关键在这,这一步里,请选择”高级“,选项里选择[编写 DROP 和 Create 脚本]项的”编写 DROP 和 Create 脚本“.
- 选择服务器数据库版本.
- 选择[编写脚本和数据类型]项的“架构和数据".
- 保存脚本,在低版本的数据库下执行脚本即可.
第二种:大数据的情况
按理应该也可以通过类似包含架构和数据的方式来做,但是由于包含大数据的时候脚本文件太大,无法在分析器里执行,所以我们得绕一下.
- 1~4 步和小数据情况相同.
- 这步我们选择”高级“,选项里选择[编写 DROP 和 Create 脚本]项的”编写 DROP 和 Create 脚本“,以及[为服务器版本编写脚本] sql server 2008(具体看数据库的版本),最后选[编写脚本和数据类型]项的“架构".
- 保存脚本.
- 在低版本的数据下执行脚本,注意(ALTER TABLE 表名 WITH CHECK ADD CONSTRAINT [外键名] FOREIGN KEY(字段)REFERENCES 表名(字段)) 这个先不要执行.
- 现在可以通过导入导出任务先将表的内容导入到低版本的数据库内.
- 再执行脚本内(ALTER TABLE 表名 WITH CHECK ADD CONSTRAINT [外键名] FOREIGN KEY(字段) REFERENCES 表名(字段)) 这样的语句,此处将表的外键附加上.
SQL Server 修改数据表名前的用户
1.只修改表前用户
EXEC sp_MSforeachtable 'exec sp_changeobjectowner "?","dbo" '
2.用户表/存储过程/视图/触发器/自定义函数一起改
declare tb cursor local for select 'sp_changeobjectowner ''['+replace(user_name(uid),']',']]')+'].['+replace(name,']',']]')+']'',''dbo''' from sysobjects where xtype in('U','V','P','TR','FN','IF','TF') and status>=0 open tb declare @s nvarchar(4000) fetch tb into @s while @@fetch_status=0 begin exec(@s) fetch tb into @s end close tb deallocate tb
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 如何实施敏捷开发?
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论