如何在 MS SQL Server 2005/2008 中进行表级备份(转储)?
16 回答
您不能使用该BACKUP DATABASE
命令来备份单个表,除非有问题的表当然是分配给它自己的FILEGROUP
。
正如您所建议的,您可以做的是将表数据导出到 CSV 文件。现在,为了获得表的定义,您可以“编写CREATE TABLE
脚本”。
您可以在 SQL Server Management Studio 中执行此操作,方法是:
右键单击数据库 > 任务 > 生成脚本
然后,您可以选择要编写脚本的表,还可以选择包含任何关联的对象,例如约束和索引。
为了DATA
只使用schema
,您必须Advanced
在设置脚本选项选项卡上进行选择,然后在GENERAL
设置部分中Types of data to script
选择Schema and Data
希望这会有所帮助,但如果您需要进一步的帮助,请随时直接与我联系。
我正在使用批量复制实用程序来实现表级备份
导出:
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 的其他方法不同,它是可编写脚本的。
以下是您需要的步骤。如果您想要数据,Step5 很重要。第 2 步是您可以选择单个表格的地方。
EDIT堆栈的版本不太可读......这是一张全尺寸图片http://i.imgur.com/y6ZCL.jpg
您可以运行以下查询来备份现有表,这将创建一个具有旧表的现有结构以及数据的新表。
select * into newtablename from oldtablename
要仅复制表结构,请使用以下查询。
select * into newtablename from oldtablename where 1 = 2
这类似于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
如果您正在寻找类似 MySQL 的东西DUMP
,那么好消息:SQL Server 2008 Management Studio 添加了该功能。
在 SSMS 中,只需右键单击相关数据库并选择Tasks > Generate Scripts。然后在选项向导的第 2 页中,确保选择您也想要脚本化的数据,它会为您生成相当于DUMP
文件的内容。
新建文件组,把这个表放在上面,只备份这个文件组。
我不知道,它是否会匹配这里描述的问题。我不得不进行表的增量备份!(只应复制新插入的数据)。我以前设计了一个DTS包在哪里。
我获取新记录(基于“状态”列)并将数据传输到目的地。(通过“转换数据任务”)
然后我刚刚更新了“状态”列。(通过“执行 SQL 任务”)
我必须正确修复“工作流程”。
您可以使用 Microsoft 的免费数据库发布向导生成带有 SQL 脚本(CREATE TABLE 和 INSERT INTO)的文本文件。
您可以为单个表创建这样的文件,并且可以通过简单地运行 SQL 脚本来“恢复”包括数据的完整表。
使用 SQL Server 导入和导出向导。
- 短信
- 打开数据库引擎
- 替代。单击要导出的包含表的数据库
- 选择“任务”
- 选择“导出数据...”
- 跟随向导
每个恢复模型都允许您备份整个或部分 SQL Server 数据库或数据库的单个文件或文件组。无法创建表级备份。
一个名为 SqlTableZip 的免费应用程序将完成这项工作。基本上,您编写任何查询(当然也可以是 [select * from table]),然后应用程序会创建一个包含所有数据的压缩文件,以后可以恢复该文件。
您可能有两种选择,因为 SQL Server 不支持表备份。两者都将从编写表创建脚本开始。然后,您可以使用 Script Table - INSERT 选项,该选项将生成大量插入语句,或者您可以使用集成服务(带有 2000 的 DTS)或类似服务将数据导出为 CSV 或类似文件。
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
如果您希望能够在有人错误地从中删除行后恢复表,您可以查看数据库快照。您可以很容易地从快照中恢复表(或行的子集)。请参阅http://msdn.microsoft.com/en-us/library/ms175158.aspx
Handy Backup 自动从 MS SQL Server 生成转储文件,包括 MSSQL 2005/2008。这些转储是表级二进制文件,包含特定数据库内容的精确副本。
要使用 Handy Backup 进行简单转储,请按照以下说明进行操作:
- 安装 Handy Backup 并创建一个新的备份任务。
- 在第 2 步中选择“MSSQL”作为数据源。在新窗口中,标记要备份的数据库。
- 在您将存储备份的不同目的地中进行选择。
- 在第 4 步中,选择“完整”备份选项。如果需要,请设置时间戳。
- 除非您需要压缩或加密生成的转储文件,否则请跳过第 5 步。
- 在第 6 步中,为任务设置计划以定期创建转储(否则手动运行任务)。
- 同样,跳过第 7 步,并在第 8 步中为您的任务命名。您已完成任务!
现在通过单击其名称前的图标来运行您的新任务,或等待预定时间。Handy Backup 将自动为您的数据库创建转储。然后打开您的备份目的地。您将找到一个文件夹(或几个文件夹),其中包含您的 MS SQL 备份。任何此类文件夹都将包含一个表级转储文件,其中包含一些二进制表和压缩到单个 ZIP 中的设置。
其他数据库
Handy Backup 可以为 MySQL、MariaDB、PostgreSQL、Oracle、IBM DB2、Lotus Notes 和任何具有 ODBC 驱动程序的通用 SQL 数据库保存转储。其中一些数据库需要额外的步骤来建立 DBMS 和 Handy Backup 之间的连接。
上述工具通常将 SQL 数据库转储为表级 SQL 命令序列,使这些文件为您需要的任何手动修改做好准备。