如何在MS SQL Server 2005/2008中进行表级备份(转储)?
答案 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
答案 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包。
我获取新记录(基于“状态”列)并将数据传输到目标。 (通过'转换数据任务')
然后我刚刚更新了“状态”列。 (通过'执行SQL任务')
我必须正确修复“工作流程”。
答案 9 :(得分:2)
使用SQL Server导入和导出向导。
答案 10 :(得分:1)
每个恢复模式都可以让您备份 整个或部分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]),应用程序会创建一个包含所有数据的压缩文件,以后可以恢复。
答案 15 :(得分:0)
Handy Backup自动从MS SQL Server生成转储文件,包括MSSQL 2005/2008。这些转储是表级二进制文件,包含特定数据库内容的精确副本。
要使用Handy Backup进行简单转储,请按照下一条说明进行操作:
现在通过单击名称前面的图标来运行新任务,或等待预定时间。 Handy Backup将自动为您的数据库创建转储。 然后打开备份目标。您将在MS SQL备份中找到一个文件夹(或几个文件夹)。任何此类文件夹都将包含一个表级转储文件,其中包含一些二进制表和压缩为单个ZIP的设置。
Handy Backup可以为MySQL,MariaDB,PostgreSQL,Oracle,IBM DB2,Lotus Notes以及任何具有ODBC驱动程序的通用SQL数据库保存转储。其中一些数据库需要额外的步骤来在DBMS和Handy Backup之间建立连接。
上述工具通常将SQL数据库转储为表级SQL命令序列,使这些文件可以用于您需要的任何手动修改。