从一个数据库A导数据进另一库B,怎么把表的主键之类的也导进去?B数据库为空,我在向导里面选择 启用标示插入 发现没有插入主键。
如果不能这样的话,请问怎么把这个库里面的某些表的数据完整的到进另一库。(主键,数据都在)在线等

解决方案 »

  1.   

    B数据库为空你可以把A数据库备份然后恢复到B这样什么都有了。
      

  2.   

    先把表结构生成SQL脚本,然后B中创建表结构!在导数据。
      

  3.   

    1:先在数据库A生成脚本(里面有选项可以选择主键等)然后到B库执行
    2DTS导入
      

  4.   

    既然数据库B是空的,
    那么可以选择copy database...,
    把需要的表及数据拷贝过去。
    这样可以保证完整性。
      

  5.   

    还有个方法!针对A里面的个别表(你想导出的表)做备份,然后还原B数据库!--备份指定表到另一数据库 --   备份指定数据库中的指定表列表到一个新的数据库--邹建 2003.12--*//*--调用示例
        --备份数据当前数据库的所有内容
        exec p_backupdatabase
        
        --备份当前数据库的指定表
        exec p_backupdatabase @tblist='tb,tb1,tb2'
    --*/if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_BackupDataBase]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[p_BackupDataBase]
    GOCREATE PROCEDURE p_BackupDataBase
    @s_dbname sysname='',            --要备份的数据库名,如果不指定,则备份当前数据库
    @d_dbname sysname='',            --备份生成的数据库名,如果不指定,则为:@s_dbname+'_bak'
    @tblist varchar(8000)=''        --要备份的表名列表,如果不指定,则表示所有用户表
    AS
    declare @sql varchar(8000),@err_msg varchar(1000)--参数检测
    if isnull(@s_dbname,'')='' set @s_dbname=db_name()
    if isnull(@d_dbname,'')='' set @d_dbname=@s_dbname+'_bak'
    if exists(select 1 from master..sysdatabases where name=@d_dbname)
    begin
        set @err_msg='备份的数据库 ['+@d_dbname+'] 已经存在!'
        goto lb_exit
    end
    if not exists(select 1 from master..sysdatabases where name=@s_dbname)
    begin
        set @err_msg='要备份的数据库 ['+@d_dbname+'] 不存在!'
        goto lb_exit
    end--创建备份的数据库
    set @sql='create database ['+@d_dbname+'] '
    exec(@sql)--备份表
    declare @tbname sysname
    set @sql='declare tb cursor for
    select name from ['+@s_dbname+']..sysobjects 
    where status>0 and xtype=''U'''
    +case isnull(@tblist,'') when '' then '' 
        else ' and name in('''+replace(@tblist,',',''',''')+''')' end
    exec(@sql)
    open tb
    fetch next from tb into @tbname
    while @@fetch_status=0
    begin
        set @sql='select * into ['+@d_dbname+']..['+@tbname
            +'] from ['+@s_dbname+']..['+@tbname+']'
        exec(@sql)
        fetch next from tb into @tbname
    end
    close tb
    deallocate tblb_exit:
        if @err_msg<>'' raiserror(@err_msg,1,16)
    go
      

  6.   

    表为空的话dts在导入导出时可以选择创建目标表吧?