sqlserver alwayson部署文档手册

2024-02-05 13:52

本文主要是介绍sqlserver alwayson部署文档手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、ALWAYSON概述

详细介绍参照官网详细文档,我就不在这里赘述了:

https://learn.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server?view=sql-server-ver16

下图显示的是一个包含一个主要副本和四个次要副本的可用性组。支持最多八个次要副本,包括一个主要副本和四个同步提交次要副本。

图片

2、安装部署过程记录

为了部署方便,我以接下来的部署中,关闭了所有服务器的windows主机防火墙。

开始菜单—>管理工具—>高级安全 Windows 防火墙。右键属性。

图片

关闭包括“域配置文件”、“专用置文件”、“公用置文件”中的防火墙设置。

图片

图片

图片

如果是安全要求较高的生产环境,注意打开防火墙配置,并配置打开域间通通讯策略,具体开放端口参照微软官方文档:

https://learn.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd772723(v=ws.10)?redirectedfrom=MSDN

准备基础环境

1、操作系统Windows均为Windows server 2012R2标准版

2、数据库版本为sql server 2016 企业版本

3、各节点基本 配置如下表:

AD域

控制器/DNS

SQL节点1

SQL节点2

SQL节点3

硬件配置

4VCPU

8G内存

80G磁盘

1块网卡

4VCPU

16G内存

300G磁盘

2块网卡

4VCPU

16G内存

300G磁盘

2块网卡

4VCPU

16G内存

300G磁盘

2块网卡

主机IP

192.168.0.111

192.168.0.112

1.1.1.112

192.168.0.113

1.1.1.113

192.168.0.114

1.1.1.114

主机网关

192.168.0.1

192.168.0.1

192.168.0.1

192.168.0.1

主机DNS

192.168.0.111

192.168.0.111

192.168.0.111

192.168.0.111

CLUSER-VIP

192.168.0.200

Sql 监听器IP

192.168.0.202

4、分别到每台主机上执行whoadmi /user确认SID值。

图片

图片

图片

图片

注意4台主机的用户SID不能一样(虚拟化中克隆主机SID可能相同),因为要加域环境,如果都是克隆的同一台虚拟机需要手动sysprep修改下SID,修改方法进入c:\windows\system32\sysprep目录下运行sysprep.exe修改一下(需要重启主机)。

部署流程图

图片

2.1、部署域控制器

在192.168.0.111主机运行服务器管理器,选择本地服务器、管理、添加角色和功能

图片

图片

图片

图片

图片

图片

图片

图片

安装完成后,点击下图“将此服务器提升为域控制器”

图片

图片

图片

图片

图片

图片

图片

图片

安装完毕后,主机会自动重启。

之后登录需要使用administrator@sqlnet.com做为用户名

2.2、SQL节点主机加域

配置私有IP的做为心跳网络的网卡,取消DNS注册,并禁用netbios

图片

图片

测评ping域名sqlnet是否可以正常解析

图片

可以的话,进行加域

图片

图片

输入192.168.0.111的主机域管理员密码进行验证

加域成功后,需要重启服务器。

图片

重复以上操作,分别把3个节点都加入到域环境。

2.3、安装SQLserver2016

说明一下,SQLserver2016的安装DVD包里没有管理工具,需要单独下载安装。

https://learn.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?redirectedfrom=MSDN&view=sql-server-ver16

另外需要.net安装包

https://support.microsoft.com/zh-cn/topic/%E9%80%82%E7%94%A8%E4%BA%8E-windows-%E7%9A%84-microsoft-net-framework-4-8-%E8%84%B1%E6%9C%BA%E5%AE%89%E8%A3%85%E7%A8%8B%E5%BA%8F-9d23f658-3b97-68ab-d013-aa3c3e7495e0

图片

数据库服务器安装部分内容如下:

使用域管理员administrator@sqlnet.com登录服务器,进行安装

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

 2.4、安装故障转移集群

安装需要在各个节点进行安装,域控服务器不需要安装。

图片

图片

图片

图片

图片

图片

图片

图片

2.5、配置故障转移集群

打开windows窗口管理工具故障转移群集管理器

图片

图片

输入3个节点名称

图片

图片

图片

测试无错误即可,对于相关的报警可以行查看。

图片

图片

图片

图片

图片

查看sql01节点己启动CLUSTERVIP

图片

继续为集群添加仲裁见证,这里采用共享文件夹的方式来进行,共享文件夹创建在域控制器主机中。

在192.168.0.111主机C盘创建votedisk目录,右键属性

图片

图片

图片

在192.168.0.112 SQL01主机上,打开故障转移集群,右键集群,更多操作,配置集群仲裁设置

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

2.6、打开sqlserver alwayson

运行SQL配置管理器

图片

图片

勾选启动alwayson

图片

图片

之后重启sqlserver服务生效。依次修改其它节点。

修改之后连上各个数据库节点,右键属性,查看HADR是否为true。

图片

2.7、配置sqlserver alwayson

在sql01主机上创建备份目录,并共享该目录,对现有数据库进行备份。

图片

任务-备份

图片

先删除默认的备份位置,再添加

图片

图片

图片

图片

图片

新建可用性组向导

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

添加监听器

图片

图片

图片

配置完成后查看sql01节点增加监听IP

图片

图片

图片

图片

图片

3、FAQ相关

3.1、关于监听器不能实现自动读写负载均衡

监听器读写默认只连接到主副本,

要想实现读写分离,需要配置客户端连接串时写applicatiopn=readonly

同时配置只读路由,监听器会根据配置转发到只读副本

官方文档描述:

https://learn.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/about-client-connection-access-to-availability-replicas-sql-server?view=sql-server-ver16

以下摘取自原文:

默认情况下,可用性组侦听器将传入连接定向到主副本。不过,您可以对可用性组进行配置以便支持只读路由,这使其可用性组侦听器能够将读意向应用程序的连接请求重定向到可读取的辅助副本。

在故障转移期间,辅助副本转换为主角色,以前的主副本转换为辅助角色。在故障转移过程中,所有到主副本或辅助副本的客户端连接都将终止。故障转移之后,在将客户端重新连接到可用性组侦听器时,侦听器将客户端重新连接到新的主副本,只有读意向连接请求除外。如果在承载新的主副本以及至少一个可读取辅助副本的客户端和服务器实例上配置了只读路由,则读意向连接请求将被重新路由到支持客户端要求的连接访问类型的辅助副本。若要确保在故障转移之后获得良好的客户端体验,务必为每个可用性副本的辅助角色和主角色配置连接访问。

连接访问配置如何影响客户端连接:

副本的连接访问设置决定连接尝试是失败还是成功。下表简要说明对于每个连接访问设置,给定连接尝试是失败还是成功。

副本角色

副本上支持的连接访问

连接意向

连接尝试结果

辅助副本

全部

指定了读意向、读写意向或未指定连接意向

成功

辅助副本

无(这是默认辅助行为。)

指定了读意向、读写意向或未指定连接意向

失败

辅助副本

仅限读意向

读意向

成功

辅助副本

仅限读意向

指定了读写意向或未指定连接意向

失败

主要

所有(这是默认主要行为。)

指定了只读意向、读写意向或未指定连接意向

成功

主要

读写

仅限读意向

失败

主要

读写

指定了读写意向或未指定连接意向

成功

针对客户端连接字符串的要求和建议

对于要使用只读路由的客户端应用程序,其连接字符串必须满足以下要求:

  • 使用 TCP 协议。

  • 将应用程序意向特性/属性设置为只读。

  • 引用配置为支持只读路由的可用性组的侦听器。

  • 引用该可用性组中的数据库。

此外,建议连接字符串启用多子网故障转移,这将支持每个子网上的每个副本的并行客户端线程。这将最大程度地减小故障转移后的客户端重新连接时间。

连接字符串的语法取决于应用程序正在使用的 SQL Server 提供程序。以下用于 SQL Server 的 .NET Framework 数据访问接口 4.0.2 的示例连接字符串说明了使用只读路由时所需的和建议的连接字符串的部分。

Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True

3.2、关于监听器读负载均衡支持

官方说法是默认SQL2016以前的版本只读第1条只读路由

SQL2016以后版本可以在括号内写多个路由,自动实现读负载均衡

官方文档描述:

https://learn.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-ver16

以下摘取自原文:

从 SQL Server 2016 (13.x)开始,可以在一组只读副本间配置负载平衡。以前,只读路由始终都将流量定向到路由列表中第一个可用的副本。若要利用此功能,请使用一个级别的嵌套括号将 CREATE AVAILABILITY GROUP 或 ALTER AVAILABILITY GROUP 命令中的 READ_ONLY_ROUTING_LIST 服务器实例括起来。

例如,以下路由列表在两个只读副本 Server1 和 Server2之间的读意向连接请求实现负载平衡。括住这些服务器的嵌套圆括号可以标识已实现负载平衡的组。如果该组中没有副本,则它将继续尝试按顺序连接到只读路由列表中的其他副本:Server3 和 Server4。

READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')

请注意,路由列表中的每项本身也可以是一组负载平衡的只读副本。下面的示例演示这一操作。

READ_ONLY_ROUTING_LIST = (('Server1','Server2'), ('Server3', 'Server4', 'Server5'), 'Server6')

示例:

以下示例将修改现有可用性组 AG1 的两个可用性副本以支持只读路由(如果其中一个副本拥有主角色)。为了标识承载可用性副本的服务器实例,此示例指定了实例名称 COMPUTER01 和 COMPUTER02。

ALTER AVAILABILITY GROUP [AG1]MODIFY REPLICA ONN'COMPUTER01' WITH(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));ALTER AVAILABILITY GROUP [AG1]MODIFY REPLICA ONN'COMPUTER01' WITH(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));ALTER AVAILABILITY GROUP [AG1]MODIFY REPLICA ONN'COMPUTER02' WITH(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));ALTER AVAILABILITY GROUP [AG1]MODIFY REPLICA ONN'COMPUTER02' WITH(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));ALTER AVAILABILITY GROUP [AG1]MODIFY REPLICA ONN'COMPUTER01' WITH(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));ALTER AVAILABILITY GROUP [AG1]MODIFY REPLICA ONN'COMPUTER02' WITH(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));GO

3.3、关于监听器相关参数配置实验证录

①配置A副本的只读路由属性(ReadOnly代表‘只读意向’)

ALTER AVAILABILITY GROUP [testAG]MODIFY REPLICA ON N'WIN-14VNU7CGQO1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));

②配置A副本的只读路由URL

ALTER AVAILABILITY GROUP [testAG]MODIFY REPLICA ON N'WIN-14VNU7CGQO1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'tcp://WIN-14VNU7CGQO1.fnst.com:1433'));

③配置B副本的只读路由属性

ALTER AVAILABILITY GROUP [testAG]MODIFY REPLICA ON N'WIN-14VNU7CGQO2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));

④配置B副本的只读路由URL

ALTER AVAILABILITY GROUP [testAG]MODIFY REPLICA ON N'WIN-14VNU7CGQO2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'tcp://WIN-14VNU7CGQO2.fnst.com:1433'));

⑤配置A副本作为主副本时候的只读路由表

ALTER AVAILABILITY GROUP [testAG]MODIFY REPLICA ON N'WIN-14VNU7CGQO1' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WIN-14VNU7CGQO2','WIN-14VNU7CGQO1')));

⑥配置B副本作为主副本时候的只读路由表

ALTER AVAILABILITY GROUP [testAG]MODIFY REPLICA ON N'WIN-14VNU7CGQO2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WIN-14VNU7CGQO1','WIN-14VNU7CGQO2')));

 配置完成后,使用如下SQL查看路由表 

SELECT * FROM sys.availability_read_only_routing_lists 

图片

确认一下应该是下面的形式 :

A    B

A    A

B    A

B    B

为什么这么配置请分析如下过程
1.正常运行时候,A作为主副本,B作为辅助副本,客户端连接字符串指定数据源是侦听器地址
2.此时发送只读请求
3.侦听器收到只读数据请求,有主副本A来处理,主副本A发现是ReadOnly,就查询路由表,发现第一条符合,就把只读请求交给辅助副本B来处理
4.此时主副本A失效了,那么由AlwaysOn的高可用可知,会让辅助B作为了主副本,等原来的主副本A恢复之后,让A成为新的辅助副本(当然这些对客户端是透明的)
5.副本A恢复之后,再发送一条只读请求
6.此时侦听器使用主副本B来处理这个请求,如果不像上面的设置方法,就找不到B到A的路由,也就不能实现所谓的高可用

经过上面的12次测试连接监听器IP,进行一下总结:

No.

主角色中的连接

可读辅助角色

客户端行为

读请求

写请求

1

允许所有

不设置ReadOnly

主副本

主副本

2

允许所有

仅读意向

不设置ReadOnly

主副本

主副本

3

允许所有

不设置ReadOnly

主副本

主副本

4

允许所有

设置ReadOnly

主副本

主副本

5

允许所有

仅读意向

设置ReadOnly

辅助副本

异常

6

允许所有

设置ReadOnly

辅助副本

异常

7

允许读写

不设置ReadOnly

主副本

主副本

8

允许读写

仅读意向

不设置ReadOnly

主副本

主副本

9

允许读写

不设置ReadOnly

主副本

主副本

10

允许读写

设置ReadOnly

异常

异常

11

允许读写

仅读意向

设置ReadOnly

辅助副本

异常

12

允许读写

设置ReadOnly

辅助副本

异常

结论一:客户端配置ApplicationIntent=ReadOnly;启用只读路由功能,所有的请求先交给辅助副本来处理

结论二:客户端不配置ApplicationIntent=ReadOnly;那么读和写请求处理,都是主副本进行处理的,如1、2、3、7、8、9

结论三:在4中,主副本处理只读请求先交给辅助路由,因为所有的辅助副本都是不可写的,所以再由自己来处理只读路由

    在10中,所有的辅助副本都是不可写,但是主副本又不处理ReadOnly的请求,所以就异常了

3.4、连接到 Always On 可用性组侦听器相关说明

官方链接:

https://learn.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover?view=sql-server-ver16

连接到主要副本

在连接字符串中指定可用性组侦听器 DNS 名称,可连接到主要副本以进行读写访问。

例如,若要通过侦听器连接到 SQL Server Management Studio 中的主要副本,请在服务器名称字段中输入侦听器 DNS 名称:

图片

在故障转移期间,当主要副本变化时,与侦听器的现有连接将会断开,新的连接将路由到新的主要副本。

下面是 ADO.NET 提供程序 (System.Data.SqlClient) 的基本连接字符串的一个示例:

Server=tcp: AGListener,1433;Database=MyDB;Integrated Security=SSPI

可以通过运行以下 Transact-SQL (T-SQL) 命令来验证当前通过侦听器连接到的副本:

SELECT @@SERVERNAME

例如,SQLVM1 是主要副本时:

图片

仍可使用主要副本或次要副本的实例名称(而不使用可用性组侦听器)直接连接到 SQL Server 的实例。但是,这样就无法享受将新连接自动路由到当前新主要副本的好处。此外,还无法享受只读路由的好处,即让用 read-intent 指定的连接自动路由到可读次要副本。

连接到只读副本

“只读路由”是指将传入的侦听器连接自动路由到配置为允许只读工作负荷的可读次要副本 。

如果满足以下条件,则连接将自动路由到只读副本:

至少一个次要副本设置为只读访问,并且每个只读次要副本和主要副本都配置为支持只读路由。

连接字符串引用可用性组中涉及的数据库。替代方法是连接中使用的登录帐户将该数据库配置为其默认数据库。有关详细信息,请参阅此有关如何使用算法处理只读路由的文章。

连接字符串引用某一可用性组侦听器,并且将传入连接的应用程序意向设置为只读(例如,使用 ODBC 或 OLEDB 连接字符串或连接特性或属性中的 Application Intent=ReadOnly 关键字)。

在登录期间,应用程序意向属性存储在客户端的会话中,然后 SQL Server 实例将处理该意向,并按照可用性组的配置和辅助副本中目标数据库的当前读写状态来确定执行什么操作。

例如,若要使用 SQL Server Management Studio 连接到只读副本,请选择“连接到服务器”对话框上的“选项”,选择“附加连接参数”选项卡,然后在文本框中指定 ApplicationIntent=ReadOnly :

图片

针对指定只读应用程序意向的 ADO.NET 访问接口 (System.Data.SqlClient) 的连接字符串的一个示例:

Server=tcp:AGListener;Database=AdventureWorks;Integrated Security=SSPI;ApplicationIntent=ReadOnly

有关详细信息,请参阅配置对可用性副本的只读访问 (SQL Server)

3.5、只读路由实测

图片

图片

图片

图片

附录

参考链接

https://learn.microsoft.com/zh-cn/windows-server/failover-clustering/file-share-witness

https://learn.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/prereqs-restrictions-recommendations-always-on-availability?view=sql-server-ver16

https://blog.csdn.net/cxu123321/article/details/108714305

https://blog.51cto.com/jimshu/1420526

https://www.cnblogs.com/DannielZhang/p/6070611.html

https://blog.csdn.net/mu_sang/article/details/129820539#:~:text=SQL%20Server%20Always%20On%E7%89%B9%E6%80%A7%E6%94%AF%E6%8C%81%20%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB%20%EF%BC%8C%E8%BF%99%E6%98%AF%E4%B8%80%E7%A7%8D%20%E6%95%B0%E6%8D%AE%E5%BA%93%20%E8%B4%9F%E8%BD%BD%E5%88%86%E6%8B%85%E7%9A%84%E6%96%B9%E5%BC%8F%EF%BC%8C%E8%83%BD%E5%A4%9F%E4%BC%98%E5%8C%96,%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB%20%E5%B0%86%E8%AF%BB%E6%93%8D%E4%BD%9C%E5%92%8C%E5%86%99%E6%93%8D%E4%BD%9C%E5%88%86%E5%88%AB%E5%88%86%E9%85%8D%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%20%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%8D%E5%8A%A1%E5%99%A8%20%E4%B8%8A%EF%BC%8C%E4%BB%8E%E8%80%8C%E9%99%8D%E4%BD%8E%E4%BA%86%E6%AF%8F%E4%B8%AA%20%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%8D%E5%8A%A1%E5%99%A8%20%E7%9A%84%E8%B4%9F%E8%BD%BD%E5%92%8C%E5%8E%8B%E5%8A%9B%EF%BC%8C%E6%8F%90%E9%AB%98%E4%BA%86%E6%95%B4%E4%B8%AA%20%E6%95%B0%E6%8D%AE%E5%BA%93%20%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%93%8D%E5%BA%94%E9%80%9F%E5%BA%A6%E3%80%82

 

这篇关于sqlserver alwayson部署文档手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681125

相关文章

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

mysql索引四(组合索引)

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索引包含多个列。 因为有事,下面内容全部转自:https://www.cnblogs.com/farmer-cabbage/p/5793589.html 为了形象地对比单列索引和组合索引,为表添加多个字段:    CREATE TABLE mytable( ID INT NOT NULL, use

mysql索引三(全文索引)

前面分别介绍了mysql索引一(普通索引)、mysql索引二(唯一索引)。 本文学习mysql全文索引。 全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。 在MySql中,创建全文索引相对比较简单。例如:我们有一个文章表(article),其中有主键ID(

mysql索引二(唯一索引)

前文中介绍了MySQL中普通索引用法,和没有索引的区别。mysql索引一(普通索引) 下面学习一下唯一索引。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE,把它定义为一个唯一索引。 添加数据库唯一索引的几种

mysql索引一(普通索引)

mysql的索引分为两大类,聚簇索引、非聚簇索引。聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引则不同。聚簇索引能够提高多行检索的速度、非聚簇索引则对单行检索的速度很快。         在这两大类的索引类型下,还可以降索引分为4个小类型:         1,普通索引:最基本的索引,没有任何限制,是我们经常使用到的索引。         2,唯一索引:与普通索引

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

SQL Server中,always on服务器的相关操作

在SQL Server中,建立了always on服务,可用于数据库的同步备份,当数据库出现问题后,always on服务会自动切换主从服务器。 例如192.168.1.10为主服务器,12为从服务器,当主服务器出现问题后,always on自动将主服务器切换为12,保证数据库正常访问。 对于always on服务器有如下操作: 1、切换主从服务器:假如需要手动切换主从服务器时(如果两个服务

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

SQL Server中,添加数据库到AlwaysOn高可用性组条件

1、将数据添加到AlwaysOn高可用性组,需要满足以下条件: 2、更多具体AlwaysOn设置,参考:https://msdn.microsoft.com/zh-cn/library/windows/apps/ff878487(v=sql.120).aspx 注:上述资源来自MSDN。