SQL server 2008 R2 数据迁移到 2008

发布于 2024-05-16 23:37:49 字数 1676 浏览 23 评论 0

今天,特意查阅了一下为什么在 sql server 2008 R2 上建的数据库迁移到 sql server 2008 上就出错,问题的关键在于如何保留原有表结构的主键、外键等,分两个情况,对于数据库数据量小的,可以很方便的解决。

第一种:小数据的情况

  1. 先在低版本的服务器上建立同名的数据库.
  2. 在高版本的服务器上右键点击目标数据库->任务->生成脚本.
  3. 在选择对象->选择特定数据库对象.
  4. 选择表、视图、存储过程,然后下一步.
  5. 关键在这,这一步里,请选择”高级“,选项里选择[编写 DROP 和 Create 脚本]项的”编写 DROP 和 Create 脚本“.
  6. 选择服务器数据库版本.
  7. 选择[编写脚本和数据类型]项的“架构和数据".
  8. 保存脚本,在低版本的数据库下执行脚本即可.

第二种:大数据的情况

按理应该也可以通过类似包含架构和数据的方式来做,但是由于包含大数据的时候脚本文件太大,无法在分析器里执行,所以我们得绕一下.

  1. 1~4 步和小数据情况相同.
  2. 这步我们选择”高级“,选项里选择[编写 DROP 和 Create 脚本]项的”编写 DROP 和 Create 脚本“,以及[为服务器版本编写脚本] sql server 2008(具体看数据库的版本),最后选[编写脚本和数据类型]项的“架构".
  3. 保存脚本.
  4. 在低版本的数据下执行脚本,注意(ALTER TABLE 表名 WITH CHECK ADD CONSTRAINT [外键名] FOREIGN KEY(字段)REFERENCES 表名(字段)) 这个先不要执行.
  5. 现在可以通过导入导出任务先将表的内容导入到低版本的数据库内.
  6. 再执行脚本内(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

琴流音

暂无简介

文章
评论
589 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文