如何使用SQL Management Studio在数据库之间传输所有表?

时间:2010-08-21 17:50:44

标签: sql sql-server database export

当我右键单击要从中导出数据的数据库时,我只能选择单个表或视图,而不是能够导出所有数据。有没有办法导出所有数据?

如果无法做到这一点,您能告诉我如何做到以下几点:

  • 我有两个数据库,具有相同的表名,但其中一个数据库的数据多于另一个数据库
  • 它们都有不同的数据库名称(表名相同)
  • 他们都在不同的服务器上

我需要从较大的数据库中获取所有其他数据到较小的数据库中。

两者都是MS SQL数据库

3 个答案:

答案 0 :(得分:5)

由于这两者都是MS SQL Server,在不同的主机上......当你可以设置Linked Server instance时,为什么还要使用CSV来解决这个问题?所以你可以通过SQL语句从另一个实例访问一个实例?

  1. 确保您要从中检索数据的实例上有有效用户 - 它必须能够访问表格
  2. 创建链接服务器实例
  3. 使用四种名称语法在查询中引用名称:

    INSERT INTO db1.dbo.SmallerTable
    SELECT *
      FROM linked_server.db.dbo.LargerTable lt
     WHERE NOT EXISTS(SELECT NULL
                        FROM db1.dbo.SmallerTable st
                       WHERE st.col = lt.col) 
    
  4. WHERE st.col = lt.col替换为您认为是两个表之间重复值的任何条件。

答案 1 :(得分:3)

Redgate软件还有一个非常好的工具可以在两个数据库之间同步数据。

之前我还使用SQL scripter来生成带有insert语句的SQL文件,您可以在其他数据库上运行以插入数据。

答案 2 :(得分:0)

如果右键单击数据库,则在“任务”菜单下,可以使用“生成脚本”选项为所有表和数据生成SQL脚本。有关详细信息,请参阅此blog post。如果你想将第二个数据库与第一个数据库同步,那么你最好使用类似于Redgate的东西,如mpenrow的答案所示。