GO
 /****** 对象:  StoredProcedure [dbo].[sp_ExportDatabase]    脚本日期: 07/18/2013 12:37:26 ******/
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO
 ----该存储过程建立在新帐套中,并在新账套中执行

 if Exists(select * from sysobjects where name=N'sp_ExportDatabase' And Xtype='P')
     Drop PROCEDURE [sp_ExportDatabase]
 Go

 CREATE PROCEDURE [dbo].[sp_ExportDatabase] (
     )
 ) ----创建存储过程 sp_ExportDatabase
 AS
 Begin
       Set NoCount On
     Declare @Utb sysname     ------用户表名
     Declare @ColName sysname   ------列名
     Declare @tid int       ------用户表的ID
     Declare @sql nvarchar(MAX)------存放拼出的sql
     Declare @len int
     --定义游标取回用户建立的表
     sELECT @SourceDB=@SourceDB+'.'
     Declare Ctb Cursor For
     Select name,id From sysobjects
     Where xtype ='U' ----如果在导库过程中因某表存在错误而导致导库过程停止 ,则可以尝试修复此表。
               ----如果此表不是很重要、或是此表无法修复,则可以在此加入条件
     --And name in (tablename1,tablename2,……)
     ------tablename1,tablename2 表示不能修复的表的名字
     Order by name
     Open Ctb
     Fetch Ctb Into @Utb,@tid
     )
     Begin   ----禁用当前数据库中所有表的约束、触发器
         Select @Utb='Dbo.'+@Utb
         Select @SQL='Alter Table '+@Utb+' Disable Trigger All; '+ ' ALTER TABLE '+ @Utb +' NOCHECK CONSTRAINT All; '
         exec ( @SQL)
         Fetch Ctb Into @Utb,@tid
     End
     close ctb
     Open Ctb
         Fetch Ctb Into @Utb,@tid
         )
         Begin
           Select @Utb='Dbo.'+@Utb

           exec (' Delete ' + @Utb)

               Set @sql='['

               Open Clu
               Fetch Clu Into @ColName
               )
               Begin     ----把列名以逗号隔开,拼成字符串
                   Set @sql=@sql+ @ColName + '],['
                   Fetch Clu Into @ColName
               End
               Close Clu
               DeAllocate Clu
               ----构造字符串
               Set @len=Len(@sql)

               Begin   ----把源数据库中的表导入到当前数据库中
                   )
                   Set @sql='Insert Into '+ @Utb + ' ('+@sql+') '+' Select '+@sql+' From ' + @SourceDB+ @Utb
                   print 'Importing Table : ' +@utb+'...'
                   If Exists (Select name From syscolumns Where id=@tid and status=0x80)
                       begin
                       Select @SQl='Set IDENTITY_INSERT '+ @Utb + ' ON' + ' Delete ' + @Utb+' '+@sql
                       print @sql
                       end
                   Else
                       Select @SQl=@sql

                   Exec ( @sql)
                   If Exists (Select name From syscolumns Where id=@tid and status=0x80)
                       Exec( 'Set IDENTITY_INSERT '+ @Utb + ' Off')
                   print 'Importing Table : ' +@utb+' complete'
               End

               Fetch Next From Ctb Into @Utb,@tid
         End
     Close Ctb
     Open Ctb
     Fetch Ctb Into @Utb,@tid
     )
     Begin   ----启用当前数据库中所有表的约束、触发器
         Select @Utb='Dbo.'+@Utb
         select @sql='Alter Table '+@Utb+' Enable Trigger All '+ ' ALTER TABLE '+ @Utb +' CHECK CONSTRAINT All '
         Exec sp_executesql @sql
         Fetch Ctb Into @Utb,@tid
     End
     close ctb
     DeAllocate Ctb
 print 'Import database complete!'

 End

使用方法

Exec sp_ExportDatabase mytest   ----mytest表示源数据实体的名称

SqlServer导库语句的更多相关文章

  1. sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

    sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器) 我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instanc ...

  2. 【转载】C#常用数据库Sqlserver通过SQL语句查询数据库以及表的大小

    在Sqlserver数据库中,一般我们查看数据库的大小可以通过查找到数据库文件来查看,但如果要查找数据表Table的大小的话,则不可通过此方法,在Sqlserver数据库中,提供了相应的SQL语句来查 ...

  3. SqlServer 一个查询语句以致tempdb增大55G (转载)

    SqlServer 一个查询语句导致tempdb增大55G 今天操作着服务器,突然右下角提示“C盘空间不足”! 吓一跳!~ 看看C盘,还有7M!!!这么大的C盘空间怎么会没了呢?搞不好等下服务器会动不 ...

  4. SqlServer中Sql语句的逻辑执行顺序

    准备数据 Sql脚本如下,两张表,一张客户表Customers只包含customerid和city字段,一张订单表Orders包含orderid和customerid(关联Customers的cust ...

  5. SQLSERVER读懂语句运行的统计信息

    SQLSERVER读懂语句运行的统计信息 对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行 ...

  6. CREATE DATABASE建库语句详解

    原创地址:http://blog.csdn.net/guguda2008/article/details/5716939 一个完整的建库语句是类似这样的: IF DB_ID('TEST') IS NO ...

  7. oracle导库

    cmd窗口直接输入导库命令即可,不需要进入sqlplus C:\Documents and Settings\Administrator> imp username/pass@orcl file ...

  8. 【转载】Sqlserver的SQL语句实现分页查询

    在应用程序的开发中,如果数据库中的数据量过于的庞大,则需要针对查询数据做分页处理,取出对应分页中的数据,在Sqlserver分页的语句写法中,有两种比较常用,一种是数据表中含有自增量Id的情况,可以根 ...

  9. SqlServer 一个查询语句导致tempdb增大55G(转载)

    SqlServer 一个查询语句导致tempdb增大55G 今天操作着服务器,突然右下角提示“C盘空间不足”! 吓一跳!~ 看看C盘,还有7M!!!这么大的C盘空间怎么会没了呢?搞不好等下服务器会动不 ...

随机推荐

  1. win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题。取消安装。”处理方法

    win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题.取消安装.”处理方法 vs2008试用期到期,卸载.重新安装都会出现“ 加载安装组件时遇到问题.取消安装.”无 ...

  2. OA 权限控制

    对于加入删除 初始化password等操作的权限 控制 第一种方法就是在每一个超链接前加 推断 如 <s:if test="#session.user.hasPrivilegeByNa ...

  3. [AS3]as3用ByteArray来对SWF文件编码加密实例参考

    [AS3]as3用ByteArray来对SWF文件编码加密实例参考,简单来说,就是将 swf 以 binary 的方式读入,并对 ByteArray 做些改变,再重新存成 swf 档.这个作业当然也可 ...

  4. CSS备忘-1

    CSS 可以通过以下方式添加到HTML中: 内联样式- 在HTML元素中使用"style" 属性 内部样式表 -在HTML文档头部 <head> 区域使用<sty ...

  5. ASP.NET MVC 3 配置EF自动生成模型

    Tools(工具) =>  扩展工具 => Nuget Tools(工具) => Nuget=>程序包管理器控制台 Nuget 程序包管理器 => Install-Pac ...

  6. IBM WebSphere MQ的C#工具类以及源码(net)

    简单的介绍一下MQ常用的对象 Queue Manager 队列管理器 主要负责管理队列.通道等,类似与Oracle中的Oracle实例的概念,在一台服务器中可以定义多个Queue Manager. Q ...

  7. Parallel多线程

    随着多核时代的到来,并行开发越来越展示出它的强大威力!使用并行程序,充分的利用系统资源,提高程序的性能.在.net 4.0中,微软给我们提供了一个新的命名空间:System.Threading.Tas ...

  8. (二)Activity启动模式

    一.标准模式(standrard) 1.当新建一个Activity时,默认情况下就是标准模式,也可以通过AndroidManifest文件显示指定其launchMode为standard <?x ...

  9. Windows SQL Server 2012 R2 安装Intel I217-V/I218-V网卡驱动(转)

    1.下载Intel官方驱动: https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=23071&lang=zh ...

  10. 全站 HTTPS

    1.HTTPS 基础 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信 ...