none
SQL Server 2005 数据复制 的一个奇怪的问题 RRS feed

  • 问题

  • 两台SQL Server 2005数据库服务器企业版。 从一台数据中的一个表(10亿数据左右),复制2个字段,到另一个数据库中,第一个字段是主键(数字标识1,1),另一个是varchar 字段,但是复制到另一台的目标表后,竟然发现有几千条重复记录,不但主键字段重复,另一个varchar字段也同时重复。不知道哪位高手知道是何缘故。

    2009年9月28日 8:41

全部回复

  • 复制时是否复制主键是一个选项?
    hello
    2009年9月28日 8:44
  • 复制时是否复制主键是一个选项?

    不明白。



    所谓的复制就是,打开SSMS 鼠标右击目标 任务 导入数据 ,数据源是一个查询语句 select idx,varchar1 from tablename with(nolock),目标表是一列bigint 和varchar字段

    源表的idx是主键, 主键 + 标识(bigint 种子1 增量1)+聚集索引,varchar是普通的字段

    目标表的idx是bigint 聚集索引 无标识 无主键
    2009年9月28日 8:50
  • 自己顶一下,呵呵


    有没有哪位高手知道啊
    2009年9月28日 9:00
  • 复制时是否复制主键是一个选项?

    不明白。



    所谓的复制就是,打开SSMS 鼠标右击目标 任务 导入数据 ,数据源是一个查询语句 select idx,varchar1 from tablename with(nolock),目标表是一列bigint 和varchar字段

    源表的idx是主键, 主键 + 标识(bigint 种子1 增量1)+聚集索引,varchar是普通的字段

    目标表的idx是bigint 聚集索引 无标识 无主键

    晕。我以为复制是SQL复制。呵呵,复制 是一个专业术语
    hello
    2009年9月28日 9:10
  • 你目标表先建个主键不就可以了

    不喜欢主键就建个唯一索引嘛
    hello
    2009年9月28日 9:11
  • 这样就会报错
    2009年9月28日 9:15
  • 自己再顶一下 MVPs 来看看有没有哪个高手看出问题在哪里吗?
    2009年9月28日 9:20
  • 复制过程是如何实现的?

    如果你复制数据本身就是有重复数据(你自己也说建唯一索引就会报错,说明复制数据内有重复数据的。),那么目标表内有重复数据也就不奇怪了。


    family as water
    2009年9月28日 13:01
  • 你运行一下dbcc checktable 去检查一下你这个原表


    family as water
    2009年9月28日 13:03
  • 两台SQL Server 2005数据库服务器企业版。 从一台数据中的一个表(10亿数据左右),复制2个字段,到另一个数据库中,第一个字段是主键(数字标识1,1),另一个是varchar 字段,但是复制到另一台的目标表后,竟然发现有几千条重复记录,不但主键字段重复,另一个varchar字段也同时重复。不知道哪位高手知道是何缘故。

    Depends on how you config replication, lot of options you can set in article properties.
    2009年9月28日 14:52
  • 所谓的replication就是,打开SSMS 鼠标右击目标 任务 导入数据 ,数据源是一个查询语句 select idx,varchar1 from tablename with(nolock),目标表是一列bigint 和varchar字段

    源表的idx是主键, 主键 + 标识(bigint 种子1 增量1)+聚集索引,varchar是普通的字段

    目标表的idx是bigint 聚集索引 无标识 无主键
    2009年9月29日 1:50
  • That's not replication but data copying, you have to learn difference between them first. If you like to copy everything in the table, use ssis copy object task.
    2009年9月29日 2:13
  • 就是你说的 data copying ,ssis包 和 ssms 这两个方法都用过了,同样存在该问题。应为数据库是简单模式,所复制数据的时候应该用的是类似大容量复制的机制。
    2009年9月29日 2:20
  • How did you build ssis package?
    2009年9月29日 2:36
  • ssbids > ssis > Intergration Services 项目 > 数据流 > Microsoft OLE DB Provider for SQL Server > OLE DB 源 > OLE DB 目标 > 表或视图 - 快速加载 > 保留标识 表锁 检查约束 > 启动调试 > 运行到7亿条左右的时候会发生错误

    2009年9月29日 5:26
  • 自己顶一下
    2009年9月29日 7:16
  • Which ssis task did you use?
    2009年9月29日 16:17
  • 你说的 ssis task 是不是指 控制流 > 数据流 > Microsoft OLE DB Provider for SQL Server > OLE DB 源 > OLE DB 目标  ?

    2009年9月30日 2:16