表级备份

时间:2009-03-25 07:31:26

标签: sql-server backup database-table

如何在MS SQL Server 2005/2008中进行表级备份(转储)?

16 个答案:

答案 0 :(得分:87)

您不能使用BACKUP DATABASE命令备份单个表,除非相关表已分配给它自己的FILEGROUP

如您所建议的那样,您可以执行的操作是将表格数据导出为CSV文件。现在,为了获得表格的定义,您可以“编写”CREATE TABLE脚本。

您可以在SQL Server Management Studio中执行此操作:

  

右键单击数据库>任务>生成脚本

然后,您可以选择要编写脚本的表格,并选择包含任何关联的对象,例如约束和索引。

为了获得DATA以及schema,您必须在设置脚本选项标签和Advanced部分选择GENERAL设置Types of data to script选择Schema and Data

希望这有帮助,但如果您需要进一步的帮助,请随时直接与我联系。

答案 1 :(得分:54)

我正在使用bulk copy utility来实现表级备份

要导出:

bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E

导入:

bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

如您所见,您可以根据任何查询进行导出,因此您甚至可以使用此进行增量备份。此外,它是可编写脚本的,而不是此处提到的使用SSMS的其他方法。

答案 2 :(得分:44)

以下是您需要的步骤。如果您想要数据,Step5很重要。您可以在步骤2中选择单个表格。

编辑这个版本的版本不太可读......这里是一张全尺寸图片http://i.imgur.com/y6ZCL.jpg

Here are the steps from John Sansom's answer

答案 3 :(得分:19)

您可以运行以下查询来备份现有表,该表将创建一个包含旧表的现有结构的新表以及数据。

select * into newtablename from oldtablename

要仅复制表结构,请使用以下查询。

select * into newtablename from oldtablename where 1 = 2

答案 4 :(得分:6)

这与qntmfred's solution类似,但使用直接表转储。此选项稍快(请参阅BCP docs):

要导出:

bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E

导入:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

答案 5 :(得分:4)

如果你正在寻找像MySQL DUMP这样的东西,那么好消息:SQL Server 2008 Management Studio增加了这种能力。

在SSMS中,只需右键单击相关数据库,然后选择任务>生成脚本。然后在选项向导的第二页中,确保select that you'd like the data scripted as well,它将为您生成相当于DUMP文件的内容。

答案 6 :(得分:3)

创建新文件组,将此表放在其上,并仅备份此文件组。

答案 7 :(得分:2)

您可以使用Microsoft的免费Database Publishing Wizard生成带有SQL脚本的文本文件(CREATE TABLE和INSERT INTO)。

您可以为单个表创建此类文件,只需运行SQL脚本即可“还原”包括数据的完整表。

答案 8 :(得分:2)

我不知道,它是否符合此处描述的问题。我不得不采取表的增量备份! (只应复制新插入的数据)。我曾经设计过一个DTS包。

  1. 我获取新记录(基于“状态”列)并将数据传输到目标。 (通过'转换数据任务')

  2. 然后我刚刚更新了“状态”列。 (通过'执行SQL任务')

  3. 我必须正确修复“工作流程”。

答案 9 :(得分:2)

使用SQL Server导入和导出向导。

  1. SSMS
  2. 打开数据库引擎
  3. 替代。单击包含要导出的表的数据库
  4. 选择"任务"
  5. 选择"导出数据..."
  6. 关注向导

答案 10 :(得分:1)

  

每个恢复模式都可以让您备份   整个或部分SQL Server数据库   或个人文件或文件组   数据库。 表级备份   无法创建

来自:Backup Overview (SQL Server)

答案 11 :(得分:0)

您可能有两个选项,因为SQL Server不支持表备份。两者都将从创建表的脚本开始。然后,您可以使用脚本表 - INSERT选项生成大量插入语句,也可以使用Integration服务(DTS with 2000)或类似命令将数据导出为CSV或类似数据。

答案 12 :(得分:0)

BMC Recovery Manager(以前称为SQLBacktrack)允许对数据库中的单个对象(即表)进行时间点恢复。它不便宜,但做得很棒: http://www.bmc.com/products/proddocview/0,2832,19052_19429_70025639_147752,00.html

http://www.bmc.com/products/proddocview/0,2832,19052_19429_67883151_147636,00.html

答案 13 :(得分:0)

如果您希望能够在某人错误地从中删除行后还原表,那么您可以查看数据库快照。您可以从快照中轻松地(或部分行)还原表。见http://msdn.microsoft.com/en-us/library/ms175158.aspx

答案 14 :(得分:0)

一个名为SqlTableZip的免费应用程序将完成工作。 基本上,您编写任何查询(当然也可以是[select * from table]),应用程序会创建一个包含所有数据的压缩文件,以后可以恢复。

链接: http://www.doccolabs.com/products_sqltablezip.html

答案 15 :(得分:0)

Handy Backup自动从MS SQL Server生成转储文件,包括MSSQL 2005/2008。这些转储是表级二进制文件,包含特定数据库内容的精确副本。

要使用Handy Backup进行简单转储,请按照下一条说明进行操作:

  1. 安装Handy Backup并创建新的备份任务。
  2. 在步骤2中选择“MSSQL”作为数据源。在新窗口中,标记要备份的数据库。
  3. 在存储备份的不同目的地中选择。
  4. 在步骤4中,选择“完整”备份选项。如果需要,请设置时间戳。
  5. 跳过步骤5,除非您需要压缩或加密生成的转储文件。
  6. 在步骤6中,为任务设置定期创建转储的计划(否则手动运行任务)。
  7. 再次,跳过第7步,在步骤8中为您的任务命名。您已完成任务!
  8. 现在通过单击名称前面的图标来运行新任务,或等待预定时间。 Handy Backup将自动为您的数据库创建转储。 然后打开备份目标。您将在MS SQL备份中找到一个文件夹(或几个文件夹)。任何此类文件夹都将包含一个表级转储文件,其中包含一些二进制表和压缩为单个ZIP的设置。

    其他数据库

    Handy Backup可以为MySQL,MariaDB,PostgreSQL,Oracle,IBM DB2,Lotus Notes以及任何具有ODBC驱动程序的通用SQL数据库保存转储。其中一些数据库需要额外的步骤来在DBMS和Handy Backup之间建立连接。

    上述工具通常将SQL数据库转储为表级SQL命令序列,使这些文件可以用于您需要的任何手动修改。