将表数据从一个SQL Server导出到另一个SQL Server

no9*_*no9 59 sql sql-server export sql-server-2005

我有两个SQL Server(都是2005版).

我想将几个表从一个表迁移到另一个表.

我试过了:

  • 在源服务器上,我右键单击了所选的数据库Tasks/Generate scripts.问题是Table/View options没有Script data选择.

  • 然后我用来Script Table As/Create script生成SQL文件,以便在我的目标服务器上创建表.但我仍然需要所有的数据.

然后我尝试使用:

SELECT * 
INTO [destination server].[destination database].[dbo].[destination table] 
FROM [source server].[source database].[dbo].[source table]
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

对象包含的前缀数量超过最大数量.最大值为2.

有人可以指出我解决问题的正确方法吗?

mar*_*c_s 62

试试这个:

  1. 使用Script Table As / Create Script步骤中的脚本在目标服务器上创建表

  2. 然后,在目标服务器上,您可以发出T-SQL语句:

    INSERT INTO dbo.YourTableNameHere
       SELECT *
       FROM [SourceServer].[SourceDatabase].dbo.YourTableNameHere
    
    Run Code Online (Sandbox Code Playgroud)

这应该工作得很好.

  • @ no9:抱歉 - 当然,为了实现这一点,您必须[在两台服务器之间添加"链接服务器"](http://msdn.microsoft.com/en-us/library/ms188279.aspx). (13认同)
  • 我喜欢你的提议。我试过了,我明白了。在 sys.servers 中找不到服务器“”。验证是否指定了正确的服务器名称...也许是源服务器名称采用“NAME\NAME2”格式的问题?但我认为 [] 应该解决这个问题......想法? (2认同)
  • 是的。但想象一下,我在创建链接服务器时遇到问题。生产服务器设置为允许远程连接,但即使使用模拟或直接 usr/pwd,我仍然会超时。由于服务器管理不在我的域内,因此我无能为力。但我设法以不同的方式解决我的问题。将发布一个答案只是为了好玩并接受你的答案,因为我喜欢这个解决方案。 (2认同)

Kon*_*tin 43

只是为了显示另一个选项(适用于SQL Server 2008及更高版本):

  1. 右键单击Database - >选择'Tasks' - >选择'Generate Scripts'
  2. 选择要复制的特定数据库对象.假设有一个或多个表格.点击下一步
  3. 单击"高级"并向下滚动到"脚本数据类型",然后选择"架构和数据".单击确定
  4. 选择保存生成脚本的位置,然后单击"下一步"继续

  • 此选项在OP最有可能引用的Microsoft SQL Management Studio版本9(随附的SQL Server 2005)中不可用. (2认同)
  • 好的解决方案,但是对于大表开始出现问题。 (2认同)

Jān*_*nis 9

在Tasks/Generate脚本中有脚本表选项!我一开始也想念它!但是你可以在那里生成插入脚本(非常好的功能,但在非常不直观的地方).

当您进入"设置脚本选项"步骤时,请转到"高级"选项卡.

这里描述的步骤(图片可以理解,但我在拉脱维亚写).


Dam*_*ver 8

尝试使用SQL Server 导入和导出向导(在任务 - >导出数据下).

它提供了在目标数据库中创建表.然而,正如您所见,脚本向导只能创建表结构.


liv*_*ove 8

如果您没有链接服务器的权限,以下是使用 Sql Server 导入/导出向导将表从一台服务器导入到另一台服务器的步骤:

  • 右键单击要从中复制的源数据库。
  • 选择任务 - 导出数据。
  • 在数据源中选择Sql Server Native Client。
  • 选择您的身份验证类型(Sql Server 或 Windows 身份验证)。
  • 选择源数据库。
  • 接下来,选择目标:Sql Server Native Client
  • 输入您的服务器名称(您要将表复制到的服务器)。
  • 选择您的身份验证类型(Sql Server 或 Windows 身份验证)。
  • 选择目标数据库。
  • 选择复制数据。
  • 从列表中选择您的表。
  • 点击下一步,选择立即运行,或者,如果您想稍后运行,也可以将包保存到文件或 Sql Server。
  • 结束

  • 事实证明这对我来说是最简单的方法。尽管如此,ssms 打开该向导的工作量很大/很慢! (2认同)

pra*_*een 6

如果已经使用脚本创建了表,那么通过使用BCP命令将所有数据从源服务器复制到目标服务器,还有另一种复制数据的方法

要将表数据导出到源服务器上的文本文件中:

bcp <database name>.<schema name>.<table name> OUT C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password> 
Run Code Online (Sandbox Code Playgroud)

要从目标服务器上的文本文件导入表数据:

bcp <database name>.<schema name>.<table name> IN C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password>
Run Code Online (Sandbox Code Playgroud)