如何在MS SQL Server 2005/2008中进行表级备份(转储)?
您不能使用该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中选择单个表.
编辑堆栈的版本不太可读...这是一个全尺寸的图像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