Answers:
备份类型取决于SQL Server恢复模型。每个恢复模型都允许您备份整个或部分SQL Server数据库或数据库的单个文件或文件组。无法创建表级备份,没有这样的选项。但是有一个解决方法
使SQL Server中的SQL Server表备份成为可能。有各种其他方法可以在sql SQL Server中备份表
在这里,我只解释您可能会知道的第一个休息
方法1 –使用BCP备份sql表(批量复制程序)
要备份驻留在SQL Server AdventureWorks中的名为“ Person.Contact”的SQL表,我们需要执行以下脚本,该脚本
-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' -- Table Name which you want to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) -- Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd
输出值
注意 -
或者,您可以通过命令提示符运行BCP并在命令提示符中键入以下命令,这两个操作都执行相同的活动,但是我喜欢上述方法,因为在打开命令提示符和键入时是保存类型。
bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T
方法1:
如果仅关注表中的数据,并且只关心在同一数据库和服务器中本地使用的数据,则可以使用以下查询来备份所选表:
SELECT * INTO newtable1
FROM originalTable1
-表2
SELECT * INTO newtable2
FROM originalTable2
依此类推...对于n个表
该语句将创建名为newtable1,newtable1 ...的表,因此您不必先前创建它。
注意*此方法可以非常快速地执行备份,但是主要缺点是它不会继承表的键,索引和约束,并且备份存储在数据库中而不是文件外部
方法2:
如果要将表备份到其他服务器以进行任何灾难恢复解决方案或防止数据丢失,则可以使用“任务”中的“生成脚本”选项对表进行脚本编写。
首先,右键单击包含要备份的表的数据库,然后选择“任务”->“生成脚本”
从列表中选择您要备份其表的数据库
出现的下一个屏幕是脚本选项。
向下滚动脚本选项,直到看到“表/视图选项”。我们希望以下内容是正确的:检查约束,脚本数据,外键,主键,触发器和唯一键。(或者,您当然可以选择所需的任何东西)。选择下一步,我们将看到选择对象类型屏幕
选择表,然后单击下一步。最后,选择要备份的表,然后单击下一步
方法3:
您也可以将bcp实用程序用于表备份。
您不能将特定表备份到.bak
文件,可以将它们导出到csv或将其脚本化或使用bcp
将它们放入文件中。
如果要备份特定的表(它们始终是相同的),该怎么办就是将它们移到一个单独的file group
文件中并备份该文件组。
有关文档,请参阅备份文件和文件组。
例如,如果要使用T-SQL备份特定文件或文件组,可以使用(从链接)
--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO
和
--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
FILE = 'SGrp1Fi2',
FILE = 'SGrp2Fi2'
TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO
基于KASQLDBA的响应的方法1:
创建一个单独的数据库来保存表的备份副本。修改KASQLDBA提供的查询,以便您从原始表中选择并复制到备用数据库。
SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1
--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2
您可以创建一个脚本,将表拖放到新数据库中,然后对每个必需的表运行select into命令。如果希望有可用的索引和其他对象,则可以在新数据库上构建索引并截断表,然后再重新填充它们。如果您喜欢截断,则需要使用插入语句代替select into。
此选项将为您提供一种创建.BAK文件的方法。在新数据库中填充表之后,您只需运行备份数据库命令。
使用SSMS的批量导出功能,这里是提到的最佳和最简单的方法
SQL Server导入和导出向导: SQL Server导入和导出向导在SQL Server Integration Services(SSIS)程序包上提供了图形用户界面。创建包后,可以将其自动化,以按计划运行。可以使用SQL Server数据工具(SSDT)对其进行进一步配置和修改。
首先,打开导入和导出向导,右键单击数据库,然后选择任务子菜单->导出数据命令。
另一种方法是使用script / sproc:DumpDataFromTable.sql,来自:https : //github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts
EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'
您必须传递:模式名称和表名称,然后是将保存创建的脚本的输出路径(注释文件夹必须已经创建/存在,并且sql具有权限,请参见sproc中的注释)。
并且,如果您愿意,可以向表中添加一个条件(过滤器目前必须以AND开头)