用select into 不行得
必须用导入导出得方式

解决方案 »

  1.   

    --select into 是不能的,用脚本就行啦--单个对象的脚本生成方法
    查询分析器
    --左侧的对象浏览器(没有的话按F8)
    --右键你要复制的对象(表/视图/存储过程等)
    --在新窗口中编写对象脚本
    --创建
    --将生成脚本的对象名改为你的新对象名
    --按F5执行
      

  2.   

    /*
    调用sqldmo生成脚本的函数--邹建 2003.07----------*//*--调用实例
    print dbo.fgetscript('zj','','','xzkh_sa','syscolumns')/*--得到所有对象的脚本
    declare @name varchar(250)
    declare #aa cursor for
    select name from sysobjects where xtype not in('S','PK','D','X','L')
    open #aa
    fetch next from #aa into @name
    while @@fetch_status=0
    begin
    print dbo.fgetscript('zj','','','xzkh_sa',@name)
    fetch next from #aa into @name
    end
    close #aa
    deallocate #aa
    --*/
    */
    if exists(select 1 from sysobjects where id=object_id('fgetscript') and objectproperty(id,'IsInlineFunction')=0)
    drop function fgetscript
    gocreate function fgetscript(
    @servername varchar(50) --服务器名
    ,@userid varchar(50)='sa' --用户名,如果为nt验证方式,则为空
    ,@password varchar(50)='' --密码
    ,@databasename varchar(50) --数据库名称
    ,@objectname varchar(250) --对象名) returns varchar(8000)
    as
    begin
    declare @re varchar(8000) --返回脚本
    declare @srvid int,@dbsid int --定义服务器、数据库集id
    declare @dbid int,@tbid int --数据库、表id
    declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量--创建sqldmo对象
    exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
    if @err<>0 goto lberr--连接服务器
    if isnull(@userid,'')='' --如果是 Nt验证方式
    begin
    exec @err=sp_oasetproperty @srvid,'loginsecure',1
    if @err<>0 goto lberr exec @err=sp_oamethod @srvid,'connect',null,@servername
    end
    else
    exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password if @err<>0 goto lberr--获取数据库集
    exec @err=sp_oagetproperty @srvid,'databases',@dbsid output
    if @err<>0 goto lberr--获取要取得脚本的数据库id
    exec @err=sp_oamethod @dbsid,'item',@dbid output,@databasename
    if @err<>0 goto lberr--获取要取得脚本的对象id
    exec @err=sp_oamethod @dbid,'getobjectbyname',@tbid output,@objectname
    if @err<>0 goto lberr--取得脚本
    exec @err=sp_oamethod @tbid,'script',@re output
    if @err<>0 goto lberr --print @re
    return(@re)lberr:
    exec sp_oageterrorinfo NULL, @src out, @desc out 
    declare @errb varbinary(4)
    set @errb=cast(@err as varbinary(4))
    exec master..xp_varbintohexstr @errb,@re out
    set @re='错误号: '+@re
    +char(13)+'错误源: '+@src
    +char(13)+'错误描述: '+@desc
    return(@re)
    end
    go
      

  3.   

    企业管理器直接用生成sql脚本
      

  4.   

    1.用DTS(导入导出)保存SQL脚本
    2.在查询分析器执行该脚本
    3.你会发现什么也不会少(主键,外键和关系)
      

  5.   

    在企业管理器中右键点击表,菜单->所有任务->生成SQL脚本
    这样生成的脚本还是没有把主键保促下来,
    倒是查询分析器中右键点击表,右键菜单->在文本中编辑对象脚本->创建,这样生成得脚本才行!!
    CREATE TABLE [元件表] (
    [ID] [int] NOT NULL ,
    [类别号] [int] NOT NULL ,
    [名称] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [状态] [tinyint] NOT NULL ,
    CONSTRAINT [PK_元件表] PRIMARY KEY  CLUSTERED 
    (
    [ID]
    )  ON [PRIMARY] 
    ) ON [PRIMARY]
    GO
    但是我执行的时候只能生成元件表,没法修改名称,这怎么解决呀,能否设个参数,如字符串变量什么的,把字符串当作表名,这样才可以生成各种不同的表,不过这怎么设参数?有人会么?