92

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

4

16 回答 16

90

您不能使用该BACKUP DATABASE命令来备份单个表,除非有问题的表当然是分配给它自己的FILEGROUP

正如您所建议的,您可以做的是将表数据导出到 CSV 文件。现在,为了获得表的定义,您可以“编写CREATE TABLE脚本”。

您可以在 SQL Server Management Studio 中执行此操作,方法是:

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

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

为了DATA只使用schema,您必须Advanced在设置脚本选项选项卡上进行选择,然后在GENERAL设置部分中Types of data to script选择Schema and Data

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

于 2009-03-25T09:27:08.857 回答
56

我正在使用批量复制实用程序来实现表级备份

导出:

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 的其他方法不同,它是可编写脚本的。

于 2010-11-16T19:13:33.967 回答
45

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

EDIT堆栈的版本不太可读......这是一张全尺寸图片http://i.imgur.com/y6ZCL.jpg

以下是约翰·桑索姆回答的步骤

于 2011-09-16T13:19:33.617 回答
19

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

select * into newtablename from oldtablename

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

select * into newtablename from oldtablename where 1 = 2
于 2012-05-16T04:20:33.343 回答
8

这类似于qntmfred 的解决方案,但使用的是直接表转储。此选项稍微快一些(请参阅BCP 文档):

导出:

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
于 2014-05-05T17:58:40.567 回答
4

如果您正在寻找类似 MySQL 的东西DUMP,那么好消息:SQL Server 2008 Management Studio 添加了该功能。

在 SSMS 中,只需右键单击相关数据库并选择Tasks > Generate Scripts。然后在选项向导的第 2 页中,确保选择您也想要脚本化的数据,它会为您生成相当于DUMP文件的内容。

于 2009-04-09T21:53:42.697 回答
3

新建文件组,把这个表放在上面,只备份这个文件组。

于 2009-03-26T13:07:10.190 回答
2

我不知道,它是否会匹配这里描述的问题。我不得不进行表的增量备份!(只应复制新插入的数据)。我以前设计了一个DTS包在哪里。

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

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

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

于 2012-10-01T11:39:22.247 回答
2

您可以使用 Microsoft 的免费数据库发布向导生成带有 SQL 脚本(CREATE TABLE 和 INSERT INTO)的文本文件。

您可以为单个表创建这样的文件,并且可以通过简单地运行 SQL 脚本来“恢复”包括数据的完整表。

于 2009-03-25T09:26:39.527 回答
2

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

  1. 短信
  2. 打开数据库引擎
  3. 替代。单击要导出的包含表的数据库
  4. 选择“任务”
  5. 选择“导出数据...”
  6. 跟随向导
于 2015-02-03T13:18:34.200 回答
1

每个恢复模型都允许您备份整个或部分 SQL Server 数据库或数据库的单个文件或文件组。无法创建表级备份

来自:备份概述 (SQL Server)

于 2009-03-25T07:35:01.247 回答
0

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

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

于 2014-05-02T00:26:00.440 回答
0

您可能有两种选择,因为 SQL Server 不支持表备份。两者都将从编写表创建脚本开始。然后,您可以使用 Script Table - INSERT 选项,该选项将生成大量插入语句,或者您可以使用集成服务(带有 2000 的 DTS)或类似服务将数据导出为 CSV 或类似文件。

于 2009-03-25T08:10:02.287 回答
0

BMC 恢复管理器(以前称为 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

于 2009-04-09T22:02:14.237 回答
0

如果您希望能够在有人错误地从中删除行后恢复表,您可以查看数据库快照。您可以很容易地从快照中恢复表(或行的子集)。请参阅http://msdn.microsoft.com/en-us/library/ms175158.aspx

于 2011-09-12T07:33:21.787 回答
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 步中为您的任务命名。您已完成任务!

现在通过单击其名称前的图标来运行您的新任务,或等待预定时间。Handy Backup 将自动为您的数据库创建转储。然后打开您的备份目的地。您将找到一个文件夹(或几个文件夹),其中包含您的 MS SQL 备份。任何此类文件夹都将包含一个表级转储文件,其中包含一些二进制表和压缩到单个 ZIP 中的设置。

其他数据库

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

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

于 2016-03-02T09:59:47.213 回答