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

Sylvester结式法求解多项式方程 Sylvester结式法,结式,消元法,ctfshow 七夕杯 LUCK7,crypto,WriteUp 阅读详情
 

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

-- Transfer对象的重要属性

-- 1. 属性

属性名                            类型                描述
--------------------------------- ------------------- --------------------
CopyAllDefaults                Boolean    所有默认值
CopyAllObjects                 Boolean    所有对象
CopyAllRules                   Boolean    所有规则
CopyAllStoredProcedures        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'IsProcedure') = 1)
drop procedure [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'CopyAllStoredProcedures' 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

     原帖地址

十、Teigha.Net示例的源代码下载链接,以及英文的chm说明文件和相关案例 目录官方案例demo下载Teigha.net 英文版手册下载Teigha.net Entity实体中文翻译Teigha4.0 解决闪烁问题demo下载Teigha4.0 收录demo案例类似CAD看图王软件无AutoCAD环境下操作显示CAD文件的功能源码,整个示例模块源码 官方案例demo下载 在之前找到的官方案例3_03版本中包含32位与64位dll 其中的chm的说明文件内容也不完全,后面有更为详细的英文版的chm; 示例项目中,主要包括一个winfrom程序与控制台程序,OdWriteExMgd 阅读详情

相关推荐

CenterPoint 工程复现

CenterPoint 工程复现,本文中使用版本:BEVerse工程下的mmdet3d (`MMDet3d v0.17.3`)版本,MMDetection3D中其他版本的使用`大同小异`。

Darchan的博客 5624

MSSQLServer 中使用SQLDMO.Transfer 实现数据迁移_

1. 属性 属性名 类型 描述--------------------------------- ------------------- --------------------CopyAllDefaults Boolean 所有默认值CopyAllObjects

angelior天地 1643

从 SAP Gateway 旧 add-ons 卸载到 SAP S/4HANA 换的清理路线

摘要: SAP Gateway系统的维护难点往往源于历史遗留组件的堆积,而非OData服务本身的复杂性。早期系统为支持多种服务类型而安装的各类add-ons(如IW_SCS、IW_CNT、GW_CORE等),随着系统升级和团队更替逐渐成为技术负债。自SAP NetWeaver 7.40起,核心功能已整合至SAP_GWFND组件,使架构显著简化。在向S/4HANA迁移时,需重点清理已废弃的add-ons(如IW_SCS、IW_GIL等),但必须谨慎验证其关联服务是否仍被调用。组件清理需结合系统日志和调用链分析

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 402

SQL Server的存储过程复制执行

SQL Server的事务复制时有个问题让人困扰,就是在发布端的一个语句,如果涉及n条记录,则在订阅端会执行n次。 比如 delete T1 where id between 1 and 50 如果发布端有50条记录,则订阅服务器会自动将这个语句翻译成delete相关的存储过程,执行50次!! 其实SQL Server针对这种情况给了一种解决方案,就是复制存储过程的执行。

无知无畏的专栏 4345

复制表结构通用存储过程

复制表结构通用存储过程 -- Transfer对象的重要属性 -- 1. 属性 属性名                            类型                描述--------------------------------- ------------------- --------------------CopyAllDefaults                Boo

zjcxc(邹建)的Blog - SQL Server 1万+

SqlServer数据库将另一个数据的的存储过程复制到本地数据库的方法

SqlServer数据库将另一个数据的的存储过程复制到本地数据库的方法 右键数据库-》任务-》生成脚本,勾选要生成的存储过程,把生成的脚本在新数据库中执行

李大C的博客 2950

实例操作 教你玩SQL Server存储过程

首先介绍一下什么是存储过程存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还可以根据条件执行不同SQL语句, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。  请大家来了解一下存储过程的语法。  CREATE PROC [ EDURE ] procedure_na

未来~ 1140

复制表结构通用存储过程

-- transfer对象的重要属性 -- 1. 属性 属性名 类型 描述--------------------------------- -...

cuankuangzhong6373的博客 137

:邹建--复制表结构通用存储过程

:http://blog.csdn.net/zjcxc/archive/2005/08/20/459401.aspx复制表结构通用存储过程 -- Transfer对象的重要属性 -- 1. 属性 属性名                            类型                描述--------------------------------- -------

flyskylf的专栏 635

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

...

weixin_30847865的博客 62

sqlserver 复制表结构,复制表数据

sqlserver 复制表结构在企业管理器中,全选想要复制的表,右击所有任务/生成SQL脚本.保存为一个*.sql文件.再在查询分析器中打开.在菜单栏下面中间位置,选择一个数据库,然后把刚才保存的sql文件复制进去,点勾,再按F5执行.表结构复制成功. 复制表数据使用SQL Server 2000自带的“生成SQL脚本”工具,可以生成创建表、视图、存储过程等的SQL脚本。那么,能否将表中的数据

4364

SQL复制表结构

sql复制表结构和数据

weixin_38710804的博客 1万+

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

-- Transfer对象的重要属性-- 1. 属性 属性名                            类型                描述--------------------------------- ------------------- --------------------CopyAllDefaults                Boolean    

pansha的专栏 752

复制的一些存储过程资料

--http://technet.microsoft.com/zh-cn/library/ms174364%28v=sql.105%29 复制存储过程 (Transact-SQL) SQL Server 2008 R2 其他版本 复制系统存储过程被记录并用作完成一次性任务(如实现复制)以及在批文件和脚本中使用的方法。 要向应用程序中添加对

学无止境 1223

MySQL|表的复制存储过程、触发器、视图、函数、数据库权限

MySQL|表的复制存储过程、触发器、视图、函数、数据库权限

weixin_42054526的博客 255

DBeaver连接mysql数据库、新建mysql数据表以及拷贝

DBeaver连接mysql数据库: 点击“数据库”,然后点击第一个“新建连接”; 选择一个数据库类型,点击就好。第一次连接数据库可能要下载驱动。傻瓜式操作,点击就好。 通过DBeaver工具链接数据库后,我们就可以通过菜单或者命令功能来实现我们想要的目的。 (一)创建数据库 新建数据库,如下图所示: 在点击“确定”按钮后,可能会遇到失败,此时,我们可以直接通过sql语句来实现,在SQL控制台中输入CREATE DATABASE bien_test,执行sql命令就可以完成创建了。 (二)创建数据表 在

Schaffer的博客 1万+

DBeaver复制mysql数据库数据库表结构以及内容)

DBeaver 复制数据库、备份数据库

I'm your wrong princess 1万+

SQL将数据库存储过程复制到另一个库中

use   master go if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N '[dbo].[sp_copyProce] ')   and   OBJECTPROPERTY(id,   N 'IsProcedure ')   =   1) drop   pr

Microsoft.Net,刘少盟 6734

如何用SQL语句在两个数据库复制存储过程

 --1.在目标服务器上建立如下对象(被同步的服务器)         if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N[sys_syscomments_bak])   and   OBJECTPROPERTY(id,   NIsUserTable)   =   1)     d

chuiqicn的专栏 689

51单片机温度报警系统(实训资源整合.zip)

实训需要的所有文件都有,代码也有好几个版本(不同点主要在于按键控制温度加减方式)。下载看了就知道了,反正可以白嫖。

IT5570_A_V0.3.1.pdf

笔记本EC ITE(联阳半导体) IT5570 DATASHEETite 的EC 内核是8032单片机

上一篇: 查询表列数的SQL语句[转]
下一篇: sqlserver 存储过程、存储函数的加密、解密[转]
vicker109
博客等级 码龄21年 15粉丝 126原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值