将表从服务器传输到另一台服务器

时间:2014-06-24 19:55:15

标签: sql sql-server sql-server-2008 tsql

除了导入和导出向导之外,是否有任何查询将表从服务器传输到SQL Server 2008中的另一台服务器?

SELECT * INTO [Server1].[db_name].[dbo].[table_name]
FROM [Server2].[db_name].[dbo].[table_name]

4 个答案:

答案 0 :(得分:1)

有几种选择。如果您具有正确的权限,则可以按照以下说明创建链接服务器:http://msdn.microsoft.com/en-us/library/ff772782.aspx

然后使用OPENQUERY(http://msdn.microsoft.com/en-us/library/ms188427.aspx)选择记录:

SELECT * INTO new_db.new_schema.new_table
FROM OPENQUERY(linked_server_name, 'select * from old_db.old_schema.old_table');

如果您不想设置链接服务器,或者您可以使用OPENROWSET(http://technet.microsoft.com/en-us/library/ms190312.aspx)执行类似操作:

SELECT * INTO new_db.new_schema.new_table
FROM OPENROWSET('SQLNCLI', 'Server=OldServer;Trusted_Connection=yes;',
     'select * from old_db.old_schema.old_table');

两者都可能需要根据您使用的身份验证方法,用户名,权限等进行一些调整。

答案 1 :(得分:0)

假设您可以登录Server1,并为Server2设置链接服务器,则另一个选项是OPENQUERY

SELECT * 
INTO [db_name].[dbo].[table_name]
FROM OPENQUERY([Server2], 'select * from [db_name].[dbo].[table_name]')

请记住,这不会复制索引/统计信息。那些需要编写脚本并重新创建。

如果你需要让它们保持同步,那么我会研究SQL Replication。

答案 2 :(得分:0)

您可以在server1中定义到server2的链接服务器,然后在server1中运行查询:

SELECT * INTO [db_name].[dbo].[table_name]
FROM [Server2].[db_name].[dbo].[table_name]

有关链接服务器的更多信息: http://msdn.microsoft.com/en-us/library/ms188279.aspx

答案 3 :(得分:0)

假设server1和server2都是sql server,那么你不需要openquery。在server1上为server2创建链接服务器并编写查询

select * into server1.schema.table_name 来自server2.schema.table_name