你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)
你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧
数据库设计,表设计的问题
大多数这样的问题,在QQ群里问是根本得不到答案的,很多业务场景不是几句话可以描述清楚的。
SQL语句问题
描述:SQL语句增加或者减少一个条件就变得很慢
答:SQL语句的运行变化很微妙,需要理解执行计划,几句话或者贴个图无法解决,一些语句的习惯是需要养成的,请参见:
SQL SERVER全面优化——-写出好语句是习惯
SQL SERVER全面优化——-索引有多重要?
AlwaysOn配置问题
AlwaysOn配置问题请参见桦仔的几篇非常细致的文章:
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
2016的AlwaysOn 搭建:SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测
AlwaysOn新建用户
首先要明白AlwaysOn可用组中:
1.只有主节点是可以写入的,辅助节点只读
2.权限分成两部分,实例级别“登录名”和数据库级别“用户”
3.在主节点创建登录名称并选择数据库权限后,因为数据同步,所以从库上已经有了新创建用户的数据库权限,但是没有登录名。
4.不能在辅助节点同样的方式创建登录名,这样就是“用户孤立”问题
解决方法:
1.在主节点上直接添加的是“登录名”,比如创建一个登录名 KK

2.选择数据库权限及用户映射

3.查询刚才创建“登录名”的脚本(此脚本也可以用于升级或迁移数据库还原后,登录名同步的问题)
CREATE PROCEDURE #sp_hexadecimal
@binvalue varbinary(256),
@hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16) SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int










