2012-12-06 107 views
3

我有一些数据表在Schema1,我想复制这些表与数据,以我创建一个新的模式,Schema2将数据从一个模式复制到另一个模式?

有没有一个这样做的优雅方式?我正在使用SQL Server Management Studio。

+0

你是什么意思''我创建的新模式“?'你想整个数据库复制或几张表? – Kaf

+0

备份和恢复是通常的方法AFAIK –

+0

@Kaf几张表...... – mezamorphic

回答

6

在SQL Management Studio中,右键单击具有源表的数据库,选择任务 - >导出数据。

您将能够设置源服务器和目标服务器和模式,选择要复制的表,并且可以让目标模式创建将要导出的表。

此外,如果复制到相同的服务器和数据库,但不同的模式一定要:

  1. 使用SQL Server Native Client的(见
    https://i.stack.imgur.com/Qqhbd.png)源和目标
    参数
  2. 选择与Source相同的数据库名称和 目标参数
  3. 选择从一个或多个表中复制数据或 视图(可选)在选择源表格和视图 GUI
  4. 将目标表的架构更改为不同于 源架构(即,输入类似“newschema.tablename”)
1

假定架构中有结构变化,这样你就可以”只需执行备份并恢复到新数据库,您可以右键单击数据库并选择任务|生成脚本。在第二页上有一个选项(默认为关闭)来编写数据脚本。

这将创建一系列SQL插入语句以及CREATE TABLE语句。您可能还需要选择脚本触发器,并检查使用这些功能时可能需要的其他一些选项。

你也可以做一个INSERT跨越模式,或者使用SSIS如下所述:

How can I copy data records between two instances of an SQLServer database

有一点要注意的是,我认为,出口数据设施不传播索引,约束,触发器等等,这就是为什么我喜欢用第一种方法获取适量的数据,或者至少首先创建新的表格,然后是其他方法之一。

1

这里是我做过什么:

  1. 右键单击源表,然后选择“选择前1000行”。
  2. 从select中删除“top 1000”。
  3. 在条款
  4. 的上方添加“INTO newschema.newtable”
  5. 运行该查询。
  6. 在新表上创建索引。

这不适用于所有人,因为它要求在SQL Studio中使用同一连接提供新模式。

相关问题