sql2005 导数据到 sql2000

dming4 2009-06-12 02:30:01
我的现在数据库是2005

里面存有数据.每个表里面几乎有自增标识


现在我把表结构通过语句在2000下创建成功

最后一步从sql 2005 导入数据到 sql2000数据库

sql 2000里面的自增标识都被改了


比如我的 客户表A

里面的id 为自增列,
CustomerID CustomerName
1 客户一
3 客户三
5 客户五
因为我的客户二和客户四被我删除了,所以数据如上所示


导入到2000里面的客户表A
它的数据是

CustomerID CustomerName
1 客户一
2 客户三
3 客户五

它竟然把 自增列重新排了....

现在问题出来了,如果我别的地方有引用客户的话,现在就找不到了,或者找到了也可能是错误的数据

有没解决办法
...全文
196 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷月孤峰 2009-06-12
  • 打赏
  • 举报
回复
试试3楼的方法!
dming4 2009-06-12
  • 打赏
  • 举报
回复
我好多表啊,每个都把自增标识去掉,工作量有点大

不知道还有没有好的办法



所以我想原原本来的数据全部导过去。



寻求最好的解决办法
l1ka1lz8 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 claro 的回复:]
去除客户表A自增标识,导入数据,再开启自增标识。
[/Quote]
没问题,我试过了!并且改后插入数据的ID列会以最后一条记录的ID值增加一!
ai_li7758521 2009-06-12
  • 打赏
  • 举报
回复
一楼的办法可以试试:去除客户表A自增标识,导入数据,再开启自增标识。
htl258_Tony 2009-06-12
  • 打赏
  • 举报
回复
针对楼主的问题,可以先关闭标识列自增属性,显式插入值,然后再开启标识列属性。

--测试数据
if object_id('[tb]') is not null drop table [tb]
go
create table tb(id int identity,col varchar(10))
go
insert tb select 'abc'
union all select 'def'
union all select 'ghi'

select * from tb
/*
id col
----------- ----------
1 abc
2 def
3 ghi

(3 行受影响)
*/
--关闭标识列自增属性

set identity_insert tb on

--显式插入值
insert tb(id,col) select 10,'abc'
union all select 11,'def'
union all select 12,'ghi'

--如果隐式插入就不行了,请看:

insert tb select 110,'abc'
union all select 111,'def'
union all select 112,'ghi'
/*
消息 8101,级别 16,状态 1,第 1 行
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'tb'中的标识列指定显式值。
*/

--然后再开启标识列自增属性:

set identity_insert tb off

--再插入一行数据看结果

insert tb select 'aaa'

--结果
select * from tb
/*
id col
----------- ----------
1 abc
2 def
3 ghi
10 abc
11 def
12 ghi
13 aaa

(7 行受影响)
*/
l1ka1lz8 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 claro 的回复:]
去除客户表A自增标识,导入数据,再开启自增标识。
[/Quote]
貌似是这样!
htl258_Tony 2009-06-12
  • 打赏
  • 举报
回复
参考资料先发个:
2005转到2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- 勾选"为所选数据库中的所有对象编写脚本"
-- 在接下来的"选择脚本选项"中, 将”编写创建数据库的脚本”设为True,找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件

2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库

3. 将数据从2005导到2000
打开SQL Server 2000的企业管理器
-- 右键要导入数据的数据库
-- 任务
-- 导入数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择数据源"步骤中, 连接到 2005, 并选择源数据库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成
水族杰纶 2009-06-12
  • 打赏
  • 举报
回复
通過導入導出直接導呢~~
claro 2009-06-12
  • 打赏
  • 举报
回复
去除客户表A自增标识,导入数据,再开启自增标识。
dming4 2009-06-12
  • 打赏
  • 举报
回复
已经成功了。。。结贴
--小F-- 2009-06-12
  • 打赏
  • 举报
回复
3楼的方法可以试下 不行的话直接导入以后 再使用触发器 和存储过程
dming4 2009-06-12
  • 打赏
  • 举报
回复

2楼方法不错

一开始直接导入数据。然后把触发器,函数,存储过程,视图加进

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧