用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - sql代码库

结构相同的数据库之间复制数据

2016-08-14 作者: 小章举报

[sql]代码库

use old
go
DECLARE NoCheckConstraintAll CURSOR READ_ONLY FOR
  SELECT sst.name, 
         Schema_name(sst.schema_id) 
  FROM   sys.tables sst 
  WHERE  sst.TYPE = 'U'
DECLARE @name   VARCHAR(80), 
        @schema VARCHAR(40)
 
OPEN NoCheckConstraintAll
 
FETCH NEXT FROM NoCheckConstraintAll INTO @name, @schema
 
WHILE ( @@FETCH_STATUS <> -1 ) 
  BEGIN
      IF ( @@FETCH_STATUS <> -2 ) 
        BEGIN
                DECLARE @sql NVARCHAR(1024) 
SET @sql=' ALTER TABLE ' + Quotename(@schema) 
                           + 
                           '.' + Quotename(@name)+' NOCHECK CONSTRAINT ALL'
                  EXEC Sp_executesql @sql 
        END
 
      FETCH NEXT FROM NoCheckConstraintAll INTO @name, @schema
  END
 
CLOSE NoCheckConstraintAll
 
DEALLOCATE NoCheckConstraintAll
 
GO
 
DECLARE CopyTables CURSOR READ_ONLY FOR
  SELECT sst.name, 
         Schema_name(sst.schema_id) 
  FROM   sys.tables sst 
  WHERE  sst.TYPE = 'U'
DECLARE @name   VARCHAR(80), 
        @schema VARCHAR(40)
 
OPEN CopyTables
 
FETCH NEXT FROM CopyTables INTO @name, @schema
 
WHILE ( @@FETCH_STATUS <> -1 ) 
  BEGIN
      IF ( @@FETCH_STATUS <> -2 ) 
        BEGIN
                DECLARE @sql NVARCHAR(1024) 
SET @sql='INSERT INTO [new].' + Quotename(@schema) 
                           + 
                           '.' + Quotename(@name)+' SELECT * FROM '+ Quotename(@schema) 
                           + 
                           '.' + Quotename(@name)
                  EXEC Sp_executesql @sql 
        END
 
      FETCH NEXT FROM CopyTables INTO @name, @schema
  END
 
CLOSE CopyTables
 
DEALLOCATE CopyTables
 
GO
DECLARE CheckConstraintAll CURSOR READ_ONLY FOR
  SELECT sst.name, 
         Schema_name(sst.schema_id) 
  FROM   sys.tables sst 
  WHERE  sst.TYPE = 'U'
DECLARE @name   VARCHAR(80), 
        @schema VARCHAR(40)
 
OPEN CheckConstraintAll
 
FETCH NEXT FROM CheckConstraintAll INTO @name, @schema
 
WHILE ( @@FETCH_STATUS <> -1 ) 
  BEGIN
      IF ( @@FETCH_STATUS <> -2 ) 
        BEGIN
                DECLARE @sql NVARCHAR(1024) 
SET @sql=' ALTER TABLE ' + Quotename(@schema) 
                           + 
                           '.' + Quotename(@name)+' CHECK CONSTRAINT ALL'
                  EXEC Sp_executesql @sql 
        END
 
      FETCH NEXT FROM CheckConstraintAll INTO @name, @schema
  END
 
CLOSE CheckConstraintAll
 
DEALLOCATE CheckConstraintAll
 
GO


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...