SQLServer导出文件、分离数据库、主备和集群

1. 导出

1.1 使用SSMS工具导出数据库文件为SQL脚本

具体参考这个网站:导出SQLserver数据库表和数据_sqlserver导出表数据_fyhs的博客-CSDN博客

1.2 使用SSMS工具导出单表到Excel文件中

(1)右键数据库

(2)选择任务->导出数据

(3)选择数据源(Microsoft OLE DB Provider for SQL Server)

(4)根据实际场景选择使用Windows验证或者SQL Server验证,输入对应的账号密码

(5)选择需要导出的数据库然后下一步

(6)选择导出到的数据源为Excel

(7)填写文件路径(版本可以不用管)然后下一步

(8)选择默认然后下一步

(9)选择要导出的表,可以多选然后下一步

(10)不用管报错信息,直接下一步

(11)一直到完成,可以在对应的Excel文件中查看到已经导出的表数据了

注意:导出到Excel中因为受Excel限制,单表最多可以导出的数据量为65535行

1.3 使用命令行导出数据库文件

(1)首先登录到数据库上,使用Windows验证的用下面的命令登录

sqlcmd -S . -E

使用SqlServer自身验证的使用下面的命令登录

sqlcmd -S <ServerName\InstanceName> -U <UserName> -P <Password>

其中,<ServerName\InstanceName> 是 SQL Server 实例名称, 和 是登录 SQL Server 的用户名和密码。

注意:SqlServer与Mysql不同,SqlServer需要在数据命令回车之后再输入 go 然后回车,才能完成命令的操作!

(2)进入sqlserver之后,使用use命令选择要导出的数据库

use <database>

上面的 database 为要导出的数据库名称

(3)然后使用下面的命令导出数据库文件

BACKUP DATABASE <database> TO DISK = '<path>.bak'

上面的 path 为导出文件所在的全路径,注意文件后缀名为bak

至此,sqlserver的数据库就导出完毕的

导入文件则是先连接到sqlserver,然后创建一个数据库,然后使用下面的命令将bak文件导入

RESTORE DATABASE <database> FROM DISK='<path>.bak' WITH REPLACE

1.4 使用命令行导出数据表

(1)直接在命令行执行下面的命令(通过Windows验证登录)

sqlcmd -S . -E -d <database_name> -Q "SELECT * FROM <table_name>" -s "," -o "<file_path>"

其中 <table_name> 是要导出的表名称,<file_path> 是输出文件的路径,这里的文件格式应该为:txt/csv/xlsx等,-s 参数指定了字段分隔符(在此示例中为逗号),-o 参数指定了输出文件的路径。

(2)通过SqlServer验证登录

sqlcmd -S . -E -d <database_name> -Q "SELECT * FROM <table_name>" -s sqlcmd -S <server_name> -U <username> -P <password> -d <database_name> -Q "SELECT * FROM <table_name>" -s "," -o "<file_path>"

其中 server_name 为sqlserver服务的地址, username 为实例名, password 为密码

2. 分离数据库

2.1 概念

分离数据库 指从 SQL Server 实例中删除,但使数据库在其数据文件和事物日志文件保持不变;之后,就能使用这些文件将数据库附加到任何 SQL Server 实例,包括分离该数据库的服务器

2.2 什么情况下可以分离,什么情况下不能

(1)已复制并发布的数据库;若进行复制,数据库就必须是未发布的,必须通过运行 sp_replicationdboption 禁用发布后,才能分离数据库

(2)数据库中存在数据库快照,必须先删除所有数据库快照,才能分离数据库

(3)该数据库正在某个数据库镜像会话中进行镜像,不终止该会话,就不能分离该数据库

(4)数据库处于可疑状态

(5)该数据库是系统数据库

(6)当使用 syscmd 命令在命令行中操作数据库时,当前 use 的数据库对象为要分离的数据库时,就会报错,无法分离
在这里插入图片描述
当你将 use 的数据库对象改变的时候,就可以完成分离

在这里插入图片描述
(7)在分离数据库之前,请确保没有用户正在使用该数据库。如果有用户在使用该数据库,则分离操作将失败,并显示一条错误消息。如果发生这种情况,请等待所有用户关闭与数据库的连接,然后重试分离操作。

(8)在分离数据库之前需要先将该数据库进行脱机操作,之后才能分离

2.3 操作

在登录进SqlServer内之后,先使用下面的命令找到数据库. mdf 文件的位置

select * from 要分离的数据库名.dbo.sysfiles;

然后选择一个非当前需要分离的数据库(不能选择当前需要分离的数据库,不然会报错,无法分离)

use master

然后再进行数据库的分离

EXEC master.dbo.sp_detach_db @dbname = N'要分离的数据库名';

之后这个数据库就在数据库中访问不到了,但是在刚才查看的 .mdf 文件的位置还存在已经分离了的数据库的 .mdf 和 .ldf 文件

后面如果要将数据库重新附加回去就需要这两个文件。

3. 主备

3.1 概念

SQL Server的主备复制(又称为镜像)是一种高可用性解决方案,它通过在主服务器和备用服务器之间复制数据库来确保在主服务器故障时自动切换到备用服务器。主备复制可以提供快速的故障恢复,并且可以保证业务连续性。

3.2 操作步骤

(1)在主服务器和备用服务器上安装 SQL Server。

(2)配置主服务器和备用服务器的网络,确保它们之间可以相互访问。

(3)在主服务器上创建要进行主备复制的数据库,并启用主备复制。

(4)配置主服务器和备用服务器上的 SQL Server 实例,以便它们能够相互通信并识别对方。

(5)在备用服务器上创建一个数据库,作为主服务器的副本,然后将该数据库设置为镜像。

(6)启用主备复制,并开始将数据从主服务器传输到备用服务器。

(7)监控主备复制的状态,以确保主服务器和备用服务器之间始终保持同步。

(8)当主服务器发生故障时,备用服务器将接管主服务器的工作并成为新的主服务器。

4. 集群

4.1 概念

SQL Server 集群是 SQL Server 数据库实例的高可用性解决方案,它允许在一个组中运行多个 SQL Server 实例,这些实例共享一个数据库。集群可以提供自动故障转移和负载均衡,从而减少系统停机时间并提高可靠性。

4.2 类型

SQL Server 集群有两种不同的类型:故障转移集群 (Failover Cluster) 和 Always On 可用性组 (Always On Availability Groups)。

4.3 故障转移集群

故障转移集群是最常见的 SQL Server 高可用性解决方案之一,它使用 Windows 故障转移集群来管理 SQL Server 资源。在故障转移集群中,多个 SQL Server 实例运行在不同的节点上,并使用共享存储来存储数据库。如果一个节点发生故障,Windows 故障转移集群将自动将 SQL Server 资源切换到另一个节点上,从而实现故障转移。

具体实现步骤为:

(1)确保每个节点都满足SQL Server 产品版本和操作系统要求,并且已经安装了Windows Server故障转移集群角色。

(2)创建共享磁盘资源,该资源将在两个节点之间共享,并用于存储SQL Server 的数据库文件。

(3)安装 SQL Server 产品,并在每个节点上使用相同的安装设置。此时,在选择安装选项时,需要选择 “添加到现有的故障转移集群” 选项。

(4)在第一个节点上配置 SQL Server 实例,包括名称、端口和身份验证模式等信息。在每个节点上必须使用相同的实例名称。

(5)安装并配置 SQL Server 全文检索服务 (如果需要)。

(6)在第二个节点上重复步骤4和步骤5。

(7)将 SQL Server 实例添加到故障转移集群中,以便它可以在节点之间切换。

(8)测试故障转移集群是否正常工作,方法是在第一个节点上停止 SQL Server 服务,然后查看是否可以通过第二个节点来访问数据库。

4.4Always On 可用性组

Always On 可用性组是 SQL Server 2012 引入的新功能,它使用异步复制和读取副本来提供高可用性和灵活性。在 Always On 可用性组中,每个 SQL Server 实例都可以扮演主服务器和辅助服务器的角色。当主服务器出现问题时,辅助服务器会自动接管工作。同时,可用性组还支持将数据库复制到其他数据中心或云中。

具体实现步骤为:

(1)创建可用性组:使用 SQL Server Management Studio 或 Transact-SQL 创建一个可用性组。可用性组包含了主要实例和一个或多个辅助实例。同时,还需要为可用性组选择一个冗余模式(同步提交或异步提交)以及自动故障转移设置。

(2)设置数据库同步:将要在可用性组中运行的数据库配置为 Always On 同步复制。这样,在主要实例上对数据库进行的更改就会自动同步到辅助实例上。

(3)将辅助实例添加到可用性组中:向可用性组中添加辅助实例。这些辅助实例可以位于另外一台服务器上,以提供跨数据中心的容灾能力。

(4)配置自动故障转移:设置自动故障转移以确保在主要实例发生故障时,可用性组会自动将工作负载切换到辅助实例上。

(5)监视可用性组状态:使用 SQL Server Management Studio 或 Transact-SQL 监视可用性组的状态,并定期测试故障转移过程以验证其可靠性。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值