问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql server 如何完整复制表 包括表结构,索引,字段说明,依赖关系等等

发布网友 发布时间:2022-05-19 01:05

我来回答

3个回答

热心网友 时间:2024-03-02 13:00

复制表结构的通用存储过程 

-- Transfer对象的重要属性 

-- 1. 属性 

属性名                            类型                描述
--------------------------------- ------------------- --------------------
CopyAllDefaults                Boolean    所有默认值
CopyAllObjects                 Boolean    所有对象
CopyAllRules                   Boolean    所有规则
CopyAllStoredProceres        Boolean    所有存储过程
CopyAllTables                  Boolean    所有表
CopyAllTriggers                Boolean    所有触发器
CopyAllUserDefinedDatatypes    Boolean    所有用户自定义类型
CopyAllViews                   Boolean    所有视图
CopyData                       Boolean    所有数据
DestDatabase                   String     目标对象数据库
DestLogin                      String     目标数据库登陆用户名
DestPassword                   String     目标数据库登陆密码
DestServer                     String     目标服务器
DestUseTrustedConnection       Boolean    用户信任连接
DropDestObjectsFirst           Boolean    是否先删除目标对象
IncludeDependencies            Boolean    是否包含依靠对象
ScriptType                     Boolean    脚本类型 

-- 2. 重要方法:  

方法名称                    功能描述
--------------------------- --------------------------
AddObject                   增加对象
AddObjectByName             通过对象名称增加对象 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[P_CopyDB]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[P_CopyDB]
GO

/*-- 在 SQLServer 中使用SQLDMO.Transfer 实现数据迁移
    存储过程实现源数据库到目标数据库的对象和数据的复制
    要求源数据库和目标数据库在同一服务器
    如果是要实现不同服务器之间的复制,则需要增加验证信息
--邹建 2005.07(引用请保留此信息)--*/

/*--调用示例

    CREATE DATABASE test
    EXEC P_CopyDB @Source_DB='northwind',@Des_DB='test'
    DROP DATABASE test
--*/
CREATE PROCEDURE P_CopyDB     
@Des_DB      sysname,           --目标数据库
@Obj_Type    nvarchar(4000)=N'',--复制的对象类型,可以是下列字符串列表:
                                -- O 所有对象,D 默认值,R 规则,P 存储过程
                                -- T 表,TR 触发器,DT 用户定义数据类型
                                -- V 视图,DATA 数据,DEL 删除目标对象
@Source_DB   sysname=N'',       --源数据库
@ServerName  sysname=N'',       --服务器名
@UserName    sysname=N'',       --用户名,不指定则表示使用 Windows 身份登录
@pwd         sysname=N''        --密码 
AS
SET NOCOUNT ON
DECLARE @srvid int,@Dbid int,@S_dbid int,@D_dbid int,@TransferID int,
    @err int,@src varchar(255), @desc varchar(255)

IF ISNULL(@ServerName,N'')=N'' SET @ServerName=@@SERVERNAME
IF ISNULL(@Source_DB,N'')=N'' SET @Source_DB=DB_NAME() 

--创建sqldmo对象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err

--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
    EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
    IF @err<>0 GOTO lb_Err

    EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername
END
ELSE
    EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername,@UserName,@pwd

IF @err<>0 GOTO lb_Err

--获取数据库集
EXEC @err=sp_oagetproperty @srvid,'databases',@Dbid OUT
IF @err<>0 GOTO lb_Err

--选择源数据库    
EXEC @err=sp_oamethod @Dbid,'item',@S_dbid OUT,@Source_DB
IF @err<>0 GOTO lb_Err

--选择目标数据库    
EXEC @err=sp_oamethod @Dbid,'item',@D_dbid OUT,@Des_DB
IF @err<>0 GOTO lb_Err

--设置复制的对象
EXEC @err=sp_oacreate 'SQLDMO.Transfer',@TransferID OUT
IF @err<>0 GOTO lb_Err

--设置目标服务器信息
EXEC @err=sp_oasetproperty  @TransferID,'DestServer',@ServerName
IF @err<>0 GOTO lb_Err

  --设置连接用户
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
    EXEC @err=sp_oasetproperty @TransferID,'DestUseTrustedConnection',1
    IF @err<>0 GOTO lb_Err
END
ELSE
BEGIN
    EXEC @err=sp_oasetproperty @TransferID,'DestLogin',@UserName
    IF @err<>0 GOTO lb_Err

    EXEC @err=sp_oasetproperty @TransferID,'DestPassword',@pwd
    IF @err<>0 GOTO lb_Err
END

  --设置复制对象信息
EXEC @err=sp_oasetproperty @TransferID,'DestDatabase',@Des_DB
IF @err<>0 GOTO lb_Err 

DECLARE tb CURSOR FAST_FORWARD LOCAL
FOR
SELECT Name FROM(
    SELECT KeyWord=N',D,',   Name=N'CopyAllDefaults' UNION ALL
    SELECT KeyWord=N',O,',   Name=N'CopyAllObjects' UNION ALL
    SELECT KeyWord=N',R,',   Name=N'CopyAllRules' UNION ALL
    SELECT KeyWord=N',P,',   Name=N'CopyAllStoredProceres' UNION ALL
    SELECT KeyWord=N',T,',   Name=N'CopyAllTables' UNION ALL
    SELECT KeyWord=N',TR,',  Name=N'CopyAllTriggers' UNION ALL
    SELECT KeyWord=N',DT,',  Name=N'CopyAllUserDefinedDatatypes' UNION ALL
    SELECT KeyWord=N',V,',   Name=N'CopyAllViews' UNION ALL
    SELECT KeyWord=N',DATA,',Name=N'CopyData' UNION ALL
    SELECT KeyWord=N',DEL,', Name=N'DropDestObjectsFirst'
)A WHERE CHARINDEX(KeyWord,
        CASE WHEN ISNULL(@Obj_Type,N'')='' THEN ',O,DATA,' ELSE @Obj_Type END)>0
OPEN tb
FETCH tb INTO @src
WHILE @@FETCH_STATUS=0
BEGIN
    EXEC @err=sp_oasetproperty @TransferID,@src,1
    IF @err<>0 GOTO lb_Err
    FETCH tb INTO @src
END
CLOSE tb
DEALLOCATE tb

--复制对象
EXEC @err=sp_oamethod @S_dbid,'Transfer',null,@TransferID
IF @err<>0 GOTO lb_Err

--结束
SET @err=0
GOTO lb_Exit

--错误处理
lb_Err:
    EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT 
    RAISERROR(N'错误编号 %#x, 错误源 "%s", 错误描述 "%s"',16,1,@err,@src,@desc)
    RETURN -1

lb_Exit:
    EXEC sp_OADestroy @Dbid  
    EXEC sp_OADestroy @srvid 
    EXEC sp_OADestroy @TransferID 
    RETURN @err
GO

个人觉得最好的方法还是备份还原,这样这个数据库都可以复制。当然这个方法不是什么时候都能使用的

追问哥们,你这是数据库复制 不是表复制

热心网友 时间:2024-03-02 13:01

可以借助网页链接这里的DMT工具,一个Python语言开发的数据迁移工具,可以满足

sql server 如何完整复制表 包括表结构,索引等几个方面,其他两个方面可在此基础上拓展补充。

热心网友 时间:2024-03-02 13:01

生成脚本 然后运行脚本
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人字梯有什么安全隐患吗 怎样激发青春期孩子的内驱力 如何激发青春期孩子的内驱力 ...小题1:移船相近邀相见,添酒回灯重开宴。 , &amp;n... L1和L2串联 电压表并联在L1两端 当L1断路后 电压表测的为什么就成了电源... L1和L2串联,用电压表测L1两端的电压,L2不亮时,电流表为什么测的是电源电... 电路上传连两个灯泡L1与L2电压表测L1电压,当L1短路与断路时电压表情况... 对方拖着不办离婚手续该怎么办 计算机一级电子表格怎么拿分 如何配置思源黑体为latex中文字体? 思源黑体字体怎么安装 在使用SqlServer过程中,将服务器A上的某个数据库结构复制到服务器B上,应该怎么操作? NBA历史上3比1被翻盘的球队都有哪些? 怎么一次把数据库里的存储过程 一次拷贝到另外一个数据库?【SQLserver 2005】 js防水涂料十大名牌排行榜有哪些? js防水涂料十大名牌有哪些? 爵士队今年被称为NBA第一伪强队,你觉得是这样吗? 2022js防水涂料有哪些? 落后55分,勇士多项耻辱纪录!NBA还有哪些分差40分以上的比赛? 阴阳师公告里面的名字颜色代码 苹果手机下阴阳师如何不要账号 阴阳师式神名字 阴阳师 战斗界面 名字下面有红字 哈弗h6运动版油耗怎么样? 我是严重脂溢性脱发,怎么改善? 阴阳师的奇葩昵称怎么用输入法打出来 阴阳师如何让名字里加空格 脂溢性脱发有哪些不错的治疗方法啊? 哈尔滨云煌科技有限公司怎么样? 如何帮助3岁的宝宝集中注意力呢?有什么好方法吗? 小学生简短相声(要容易背) ...这个问题该怎么解决:您的账户注册地或使用地暂不支持微信支付... 挖矿的大佬进来,我想问下,为什么28号挖的,到今天还没到账?我用的是长沙矿工软件,云币网的钱包以太 ...你的账户注册地或使用地暂时不支持微信支付功能? ...支付,显示账户注册地或者使用地不支持微信支付功能,怎么解决?之前... ...显示收款帐号注册或使用地暂不支持微信支付 没签合同,交了定金,不提货也不付余款,也不接电话,有微信转账记录,请问起诉的话能赢吗? 微信转账交了定金没有签任何合同 微信转账能立案吗 速腾怎么让雨刮器停在中间 - 信息提示 五菱宏光mini的雨刷器怎么能停在挡风玻璃中间 微信转账转错了,对方不还,报警警方不立案,打微信官方网站也没用,到底改怎么办 怎么让雨刷器停在中间 长安CS75? 大众迈腾280雨刷器怎么停在中间 丰田卡罗拉怎样让雨刷器停在挡风玻璃中间 如何让雨刮器停在中间不会回位 国庆节去内蒙古赤峰旅行,计划待三天。求高人指点适合十月初去的景点。 新轩逸雨刮器怎么才能停在风挡中间? 自动挡的车子怎么让雨刮在半空中停住? 赤峰什么最好玩