Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个sql server选择到另一个sql server?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

从一个sql server选择到另一个sql server?

从一个sql server选择到另一个sql server?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想从一台服务器(data.Old.S1)中的一个表(T1,在DB1中)中选择数据,将其转换为另一台服务器(data.Latest.S2)中的另一个表(T2,在DB2中)中的数据。我该怎么做 请注意服务器的命名方式。查询也应该考虑到这一点。就是, SQL server不应混淆完全限定表名。例如,这可能会混淆SQL server-Data.Old.S1.DB1.dbo.T1 我还想要“映射”。例如T1的第1列应转到T2的第18列,等等。您可以查看以下内容: 或者您可以使用SSI,这可能要简单得多

我想从一台服务器(data.Old.S1)中的一个表(T1,在DB1中)中选择数据,将其转换为另一台服务器(data.Latest.S2)中的另一个表(T2,在DB2中)中的数据。我该怎么做

请注意服务器的命名方式。查询也应该考虑到这一点。就是, SQL server不应混淆完全限定表名。例如,这可能会混淆SQL server-Data.Old.S1.DB1.dbo.T1


我还想要“映射”。例如T1的第1列应转到T2的第18列,等等。

您可以查看以下内容:


或者您可以使用SSI,这可能要简单得多。

创建一个。然后使用sql语句

如果它只是一个适当的时间链接服务器。
select * into [newtable] from [linked_server].[databasename].dbo.[tablename]

但是,如果需要频繁移动数据,那么复制会更好、更容易。

我认为坚持使用SQL会使它过于复杂。在SSMS中,右键单击要从中导出的服务器,选择“任务”、“导出”,然后让向导引导您完成选择目标服务器和表的步骤,其中包括完全按照SQL情况映射所有列。所有你想要的功能都已经存在了


不需要链接服务器、SSI或其他任何东西来实现这一点。它已经内置到SQL Server Management Studio中。

使用SQL Server Management Studio的导入功能

  • 在对象资源管理器中的数据库上单击鼠标右键,然后选择“导入”
  • 选择源数据库
  • 选择目标数据库
  • 选择“指定自定义查询”选项,只需从DB1中的T1中选择数据
  • 在目标数据库中选择目标表,即T2
  • 执行导入

  • 基于公认的答案。
    确保源服务器(服务器1)链接到目标服务器(服务器2):


    DB1和DB2是如何相互通信的?链接服务器?这可以通过几种方式实现……最佳选择取决于您希望访问旧服务器的频率(一次迁移,或不断更新)。我想要SQL。我确实有SSI,但我需要根据我的情况通过sql来实现。将T1的Col1选择为T2的Col17,其中{some condition}将T1的Col1选择为T2的Col17,其中{some condition}链接服务器工作得很好。对于实际的sql查询,我没有使用openquery,我只是编写了一个标准的insert查询,而是使用下面另一个答案中的语法完全限定了链接服务器表,如:[linked_server].[databasename].dbo.[tablename]将T1的Col1选择到T2的Col17,其中{some condition}这通常不是真的。@AmirrezaKeshavarz-通常不是真的,您应该使用完全限定的表名。
    SELECT * 
    INTO Server2.DB2.dbo.T2
    FROM OPENQUERY (server1
                    , ' SELECT col_one, col_two, ...
                        FROM DB1.dbo.T1 
                        WHERE ...
                        ...
                    );