MSSQL 表备份与 SQL数据库备份

说到SQL Server备份,通常是指备份整个数据库,其中包含所有数据、日志等,会占用大量磁盘空间。

因此,您可能想知道,您能否只备份 SQL 数据库中的一个或两个表,尤其是当您只对它们进行微小更改时?这实际上不是一个罕见的问题。但只是让您知道,MSSQL Server 表备份与数据并不能代替常规的 SQL Server 备份。

SQL Server 徽标

这是因为一个表可能通过外键关系依赖于其他表,这种操作可能会损害表的架构完整性,甚至导致数据丢失。只有在意识到风险并且处于以下情况之一的情况下,您才可以考虑使用 MSSQL 备份表:

  • 具体表独立完整。
  • 除了数据和架构,您无需担心其他任何事情。
  • 在执行数据导入/导出或迁移表中的数据之前。
  • 在对单个表执行少量添加、删除或修改操作之前。

如何执行 MSSQL Server 表备份(特定表)

目前没有直接的方式只针对MSSQL备份表,但是我们可以通过其他方式达到类似的效果。例如,制作副本或导出表中的数据。通常,您可以通过 SSMS 或使用批量复制程序 (BCP) 来实现此目的,每种方法都有 3 种特定方法。

✦ 通过 SQL Server Management Studio (SSMS) 备份 MSSQL 表

“方式1”使用 SELECT INTO 语句复制 SQL 表: SELECT INTO 语句用于创建一个新表,并将查询中的对应数据插入其中。请注意,它不会将索引、键和约束复制到新表中。

“方式2”在 SSMS 中生成脚本以备份表:通过简单的点击SSMS可以自动生成表格复制脚本。通过这种方式,您还可以将表复制到另一个 SQL Server。

“方式3”使用 SQL Server 导入和导出向导备份表:这是导出表格的相对简单的非脚本方式。您可以将表导出到另一个数据库或服务器。

✦ 通过批量复制程序 (BCP) 备份 MS SQL 表

以下 3 种方式基于相同的原理,但使用不同的工具。您可以根据自己喜欢的工具选择其中一种。在这些方式中,您必须具有批量导入和导出权限。

“方式4”在命令提示符窗口上运行 BCP 命令

“方式5”在 PowerShell 上运行 BCP 命令

方式 6在SQL ServerData Tools (SSDT) 上运行 BCP 命令

方式一、使用SELECT INTO语句复制SQL表

启动SSMS并连接到您的实例。点击上方栏的“新建查询”,根据需要输入以下语句之一。单击“执行”开始复制。

“新建一个目标表”,将原表的数据插入其中。

使用DatabaseName
go
select * into TargetTablefrom OriginalTable
go

创建一个新表并将数据插入其中

♦ 将原表中的数据复制并插入到“已有的目标表中”,不会影响目标表中已有的数据。

使用DatabaseName插入TargetTable选择* from OriginalTable
go

将数据插入现有表

 仅将原始表的结构复制到目标表中。

USEDatabaseName
go
select * into from Where 1=2
go

只复制结构

注意
TargetName其中 1=2对于原始表中的所有行,1=2 被评估为 FALSE,这意味着它将过滤掉所有数据,并创建一个仅具有相同表结构的新表。

方式 2. 在SSMS中生成脚本以备份表

1. 启动SSMS并连接到您的实例。右键单击需要执行表备份的“数据库”(而不是表),然后选择“任务”>生成脚本...

选择生成脚本

2. 点击下一步进入“选择对象”页面,“选择具体的数据库对象”,然后“勾选”需要备份的表。

单击“下一步”

检查表格

3. 在“设置脚本选项”页面中,单击“高级”。它将弹出一个“高级脚本选项”窗口。

先进的

4. 找到Types of data to script,然后选择旁边的“方案和数据”。

还有仅数据和仅模式选项供您根据需要选择。

单击““确定””完成设置。

方案和数据

5. 返回“设置脚本选项”页面,选择“在新查询窗口中打开”,然后单击“下一步”转到摘要。

在新的查询窗口中打开

6. 所有设置的“摘要”显示在窗口中。现在您可以单击Next“保存脚本”

概括

7. 完成后,单击“完成”关闭窗口。

保存脚本

8.回到SSMS界面,可以看到脚本已经自动生成了。“数据库已存在”错误。

单击“执行”以运行它。

生成的脚本

方式 3. 使用 SQL Server 导入和导出向导备份表

1. 启动SSMS并连接到您的实例。右键单击需要执行表备份的“数据库(而不是表),然后选择”“任务”>导出数据...

导出数据

2. 在“选择数据源”页面,在“数据源”下拉菜单中选择SQL Server Native Client 11.0

选择SQL Server本机客户端

3. 在服务器名称中选择您的实例。选择一种“认证”方式并输入通讯者信息。

选择您需要执行表备份的“数据库”。然后你可以点击Next

选择数据源

4. 在“选择目的地”页面中,与上一步相同。“在服务器名称”中选择您的实例并输入“身份验证”信息。

选择要将表复制到的“目标数据库”。

单击“下一步”

选择目的地

5. 在“指定表复制或查询”页面中,选择“从一个或多个表或视图”复制数据,仅复制数据。

如果需要,您还可以选择编写查询以指定要传输的数据。

然后单击“下一步”

6. 在“选择源表和视图”页面中,检查您要导出的“特定表”。

然后单击“下一步”

7. 在“保存并运行包”页面中,选中“立即运行”

您还可以选中Save SSIS Package来加密您的重要数据。SSIS 包也可以在其他情况下使用。

然后单击“下一步”以保存 SSIS 包的设置。

8. 现在您可以“验证”向导的设置。单击“完成”以执行表备份。

9、MS SQL表备份执行成功。

方式 4. 通过命令提示符窗口运行 BCP 命令

使用Win+Rwindows 快捷方式打开“运行命令”窗口,然后输入cmd打开“命令提示符”窗口。输入以下命令,然后按Enter开始。

bcp“数据库”名称。“架构名称”TableNameout Filepath-c -T -S InstanceName

“1.”Filepath中你需要写出你想要把导出的备份放在哪里。
“2.”上面命令的三个参数:
“-c”:指定char类型作为存储类型。
“-T”:指定 bcp“使用受信任的连接”登录到 SQL Server 数据库。
“-S”:指定要连接的“实例名称”。
3、如果想了解更多参数,可以在命令提示符窗口中输入bcp ,“回车”即可全部查询。

下面是一个示例,将表 Date_max 从数据库 DBname 导出到名为 Date_max_001.bcp 的文件中。

通过 cmd 导出表格

方式 5. 在 Powershell 上运行 BCP 命令导出表

启动PowerShell ISE(您可以通过在运行窗口中输入 PowerShell ISE 找到它)并“以管理员身份”运行它。输入以下命令。单击上方栏上的“执行以运行它”。

$db=" DatabaseName"
$schema=" SchemaName"
$table=" TableName"
$path=" Filepath"
$psCommand="bcp $($db). $($schema). $($table) out $path - T -c -S InstanceName"
调用表达式 $psCommand

通过 Powershell 导出表格

方式 6. 在SQL ServerData Tools (SSDT) 上运行 BCP 命令

1. 启动SSDT并点击New Project

2. 选择“商业智能”>“集成服务”>“集成服务项目”。并在下方填写NameLocationSolution name,然后单击“确定”

3. 选择Execute Process Task并将其拖入右侧空白处。双击它以打开“执行流程任务编辑器”窗口。

4. 在Executable旁边输入bcp.exe 的文件路径

例如:C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\bcp.exe

然后在Arguments旁边输入以下 table-exporting bcp 命令。

DATABASENAME"架构名称"TableNameout Filepath-c -T -S InstanceName

然后点击“确定”完成设置。

5. 右键单击​​此任务并选择“执行任务”

6. 导出完成。

总结

在本文中,我一共介绍了6种 SQL Server 备份表的方法。

但是,由于单个 MSSQL 表备份会导致数据丢失,我仍然建议您定期备份整个数据库。它易于操作并确保数据完整性。

如果您认为完整备份会占用空间,您还可以创建差异备份或压缩备份。如果您认为这些操作太费力,并且不想在它们上浪费时间。我建议你使用傲梅企业备份网络版自动创建压缩备份。它提供“2个压缩级别”,能够压缩“完整备份和差异备份”,可以节省更多空间。

此外,它还允许您在一台计算机上集中控制 LAN 内的所有笔记本电脑、工作站和服务器。这样你就可以 将 SQL数据库备份到远程位置. 对企业来说,可以“提高效率,降低成本”