Zabbix template for Microsoft SQL Server介绍

 

这里介绍Zabbix下监控Microsoft SQL Server数据库非常好用的一个模板,模板名为“Zabbix template for Microsoft SQL Server”,此模板的下载地址为:

 

 

Zabbix share的地址:

https://share.zabbix.com/databases/microsoft-sql-server/template-for-microsoft-sql-server

GitHub的地址:

https://github.com/MantasTumenas/Zabbix-template-for-Microsoft-SQL-Server

下面的实验、测试均为Zabbix 5.x,其它Zabbix版本没有经过测试验证。另外,建议使用GitHub下Microsoft SQL Server目录下的模板。感觉这个模板遇到的问题比较少,如果你使用Zabbix share下的模板,问题多到烦死你,除非你有能力Fix掉这些问题。

解压GitHub下的模板文件(Zabbix-template-for-Microsoft-SQL-Server-master.zip),你就会发现下面分三个(Zabbix share的只有两个目录)目录,分别如下命名:

Microsoft SQL Server                #分支版本,这里部署的是这个模板。

Without SQL instance discovery      #适用于单实例SQL Server监控

With SQL instance discovery         #适用于多实例SQL Server监控

Zabbix share下模板(Zabbix Template for Microsoft SQL Server.zip)的目录:

Without SQL instance discovery      #适用于单实例SQL Server监控

With SQL instance discovery         #适用于多实例SQL Server监控

Microsoft SQL Server下还有下面个目录,具体如下所示:

Documentation       #下面是Zabbix template for Microsoft SQL Server的文档资料,绝对是我见过的Zabbix模板里面最详细的资料

Scripts             #下面是PowerShell监控脚本

Template            #下面是Template模板

User parameters     #下面有一个文件userparams.conf,里面定义了User parameters参数的一些样例

Zabbix Value Mapping    #下面有SQL Agent Job status.xml和SQL Database status.xml这两个文件。里面定义了一些映射值。

这个模板包含这些功能和特征,如下所示:

Features

• MS SQL performance counters.

• MS SQL instance Low Level Discovery.

• MS SQL database Low Level Discovery.

• MS SQL agent job Low Level Discovery.

• MS SQL database backup monitoring.

• MS SQL database mirroring monitoring.

• MS SQL Always On monitoring.

• MS SQL Log Shipping monitoring.

支持的版本,详细信息请见下面介绍:

Supported versions

Tested on Microsoft SQL Server 2012, 2014 and 2016. It may work with earlier versions, but some items (with missing performance counters) may be unsupported. For the extensive overview on the performance counters difference between MS SQL 2008 and MS SQL 2012 you can read here (https://blog.dbi-services.com/sql-server-2012-new-perfmon-counters/).

Tested on Zabbix 3.4.0. It may work with earlier versions, but some items (for example service.info[service,<param>]) may be unsupported. The template was started on Zabbix 2.4.0 but after each new Zabbix version, objects were modified or new things were added.

注意:这里测试的环境为Zabbix 5.x, 所以这个模板也是支持Zabbix 5.x的,请知晓

部署过程

 

Without SQL instance discovery模板部署

 

 

官方文档的部署步骤:

 

1. Import templates via Configuration >> Templates:

• “Template Microsoft SQL Server DE Tier 3.xml”

• “Template Microsoft SQL Server DE Tier 2.xml”

• “Template Microsoft SQL Server DE Tier 1.xml”

• “Template Microsoft SQL Server SA Tier 3.xml”

2. Import value mappings via Administration >> General >> Value mapping:

• “SQL Agent Job status.xml”

• “SQL Database status.xml”

3. Copy catalog MSSQL with PowerShell scripts (*.ps1) to a location a Zabbix Agent can access (by default “C:\...\Zabbix\bin\”).

4. Copy 3 *.conf files from catalog “User parameters” to a location a Zabbix Agent can access (by default “C:\...\Zabbix\”).

5. Update “zabbix_agentd.win.conf”:

• add line “Include= C:\Program Files\Zabbix\mssql.agent.userparams.conf”.

• add line “Include= C:\Program Files\Zabbix\mssql.backup.userparams.conf”.

• add line “Include= C:\Program Files\Zabbix\mssql.basic.userparams.conf”.

6. Grant rights for Zabbix Agent service account. It needs read rights on tables:

• msdb.dbo.sysjobhistory

• msdb.dbo.sysjobs

• master.sys.databases

• msdb.dbo.backupset

• msdb.dbo.log_shipping_monitor_secondary.

7. By default, Zabbix Agent service account is NT AUTHORITY\SYSTEM which is already in SQL Server. If you need to monitor mirrored databases or databases in Always On, you will have to give Zabbix Agent’s service account (NT AUTHORITY\SYSTEM by default) sysadmin rights. More about it here.

8. Restart Zabbix Agent.

9. Depending on your SQL server edition and monitoring requirements select and add templates to a host.

10. Modify macros in templates according to your needs. Default values are below:

Macros

Macros meaning

Value

Meaning

Trigger

{$SYSDBFTIME1}

Sys db full backup time value 1

25

25 hours

Information

{$SYSDBFTIME2}

Sys db full backup time value 2

50

50 hours

Low

{$SYSDBFTIME3}

Sys db full backup time value 3

75

75 hours

Medium

{$UDBDTIME1}

User db diff backup time value 1

48

2 days

Information

{$UDBDTIME2}

User db diff backup time value 2

72

3 days

Low

{$UDBDTIME3}

User db diff backup time value 3

96

4 days

Medium

{$UDBFTIME1}

User db full backup time value 1

168

7 days

Information

{$UDBFTIME2}

User db full backup time value 2

192

8 days

Low

{$UDBFTIME3}

User db full backup time value 3

216

9 days

Medium

{$UDBLTIME1}

User db log backup time value 1

30

30 minutes

Information

{$UDBLTIME2}

User db log backup time value 2

60

60 minutes

Low

{$UDBLTIME3}

User db log backup time value 3

90

90 minutes

Medium

{$EVENTLOGTIME}

Event log recovery time value

28h

28 hours

Medium

{$DAYS}

Maintenance job time value

7

7 days

None

11. “Template Microsoft SQL Server SA Tier 3.xml” lets you discover SQL agent jobs. Discovery rules consist of:

• “SQL Server Agent Discovery” – discover SQL Agent service.

• “SQL Server Agent Jobs P1 Discovery” – discover SQL Agent jobs.

• “SQL Server Agent Jobs P2 Discovery” – discover SQL Agent jobs.

• “SQL Server Agent Jobs P3 Discovery” – discover SQL Agent jobs.

12. Difference between “SQL Server Agent Jobs P1 / P2 / P3 Discovery” are triggers. They can be configured differently. For example:

• “SQL Server Agent Jobs P1 Discovery” – alerts after trigger failed. Good for monitoring jobs, which need immediate attention. Like failed job “CHECKDB”.

• “SQL Server Agent Jobs P2 Discovery” – alerts after trigger failed two times. Good for monitoring jobs, which need attention, but not immediate. For example, job “DB LOG BACKUP” failed 1st time, but it will run again in 30 minutes. If 2nd time it fails again, then alert is raised.

• “SQL Server Agent Jobs P3 Discovery” – alerts after trigger failed but with additional conditions. Good for monitoring jobs, which do not need immediate attention. Like failed job “IndexOptimize”. Alert will be raised only during Monday – Friday, during 08:00 – 16:00. If you want to change day and hour parameters, you can do it directly in triggers.

• In mssql.agent.userparams.conf I placed 2 additional user parameters. In case you need to create your own custom items for monitoring P(riority)4 and P(priority)5 jobs.

13. Every discovery rule “SQL Server Agent Jobs P1 / P2 / P3 Discovery” has its filters there you can enter the job name, you want to associate with a selected rule:

If you leave a filter empty, all agent jobs will be discovered. To avoid that, I entered a simple place holder for every rule – ENTER_JOB_NAME.

下面结合个人的操作用中文简单描述一下:

1:在“配置”-> "模板“下导入下面四个模板:

• “Template Microsoft SQL Server DE Tier 3.xml”

• “Template Microsoft SQL Server DE Tier 2.xml”

• “Template Microsoft SQL Server DE Tier 1.xml”

• “Template Microsoft SQL Server SA Tier 3.xml”

注意,从Zabbix share上下载的模板,只有下面两个模板:

“Template SQL Server Instance 0 DE.xml”

  “Template SQL Server Instance 0 SA.xml”

另外,默认情况下,这些模板位于Templates下面,个人喜欢将其分配到Templates/Databases组下面,方便日后的使用和管理! 步骤1只需要做一次就好了。这个是针对Zabbix Server而言。

2:在“管理”(Administration)->“一般”(General)-> "值映射"(Value mapping)下面导入值映射

 “SQL Agent Job status.xml”

 “SQL Database status.xml”

注意:步骤2也是只需做一次即可。

3:将Scirpt目录下的MSSQL目录(里面有一些PowerShell脚本)拷贝到Zabbix Agent能访问的路径(默认情况下,将其拷贝到“C:\...\Zabbix\bin\”下面),这里将其拷贝到C:\zabbix\bin\win64下面。当然你可以根据实际情况进行调整设定。也可以按照官方文档设定。

4:将User parameters目录下的3个配置文件拷贝到Zabbix Agent能访问的路径下(默认情况下为“C:\...\Zabbix\”),这里我将其拷贝到C:\zabbix\conf目录下面。

由于第三步,我将这些PowerShell脚本放在C:\zabbix\bin\win64\MSSQL,所以,这三个参数文件(mssql.agent.userparams.conf、mssql.backup.userparams.conf、mssql.basic.userparams.conf)很多配置信息必须修改。这个根据实际情况调整,如下例子所示:

例子(修改前)

# User parameter to get agent name. Tier 3 template.

UserParameter=tier3.agent.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\zabbix\bin\MSSQL\DiscoveryDatabaseAgent\Discovery.mssql.instanceagentname.ps1"

# User parameter to get job name. Priority 5. Tier 3 template.

UserParameter=tier3.jobsp5.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\zabbix\bin\MSSQL\DiscoveryDatabaseAgent\Discovery.mssql.jobname.ps1"

例子(修改后)

# User parameter to get agent name. Tier 3 template.

UserParameter=tier3.agent.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\bin\win64\MSSQL\DiscoveryDatabaseAgent\Discovery.mssql.instanceagentname.ps1"

# User parameter to get job name. Priority 5. Tier 3 template.

UserParameter=tier3.jobsp5.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\bin\win64\MSSQL\DiscoveryDatabaseAgent\Discovery.mssql.jobname.ps1"

5:更新zabbix_agentd.conf下的配置

• add line “Include= C:\Program Files\Zabbix\mssql.agent.userparams.conf”.

• add line “Include= C:\Program Files\Zabbix\mssql.backup.userparams.conf”.

• add line “Include= C:\Program Files\Zabbix\mssql.basic.userparams.conf”.

个人的设置如下,这个肯定根据具体实际情况进行调整。

Include=C:\zabbix\conf\mssql.agent.userparams.conf

Include=C:\zabbix\conf\mssql.backup.userparams.conf

Include=C:\zabbix\conf\mssql.basic.userparams.conf

6:授权给Zabbix Agent服务器账号权限,它需要下面一些表的查询查询

• msdb.dbo.sysjobhistory

• msdb.dbo.sysjobs

• master.sys.databases

• msdb.dbo.backupset

• msdb.dbo.log_shipping_monitor_secondary.

7:默认情况下,Zabbix Agent的服务账号为NT AUTHORITY\SYSTEM,它是SQL Server下一个已经存在的账号,如果你需要监控数据镜像或Always On下面的一些数据库,你需要授予Zabbix Agent的服务账号sysadmin角色权限。更多参考相关资料。

8:重启Zabbix Agent服务。

9:在Zabbix Server上给相关需要监控的主机添加对应的模板。

如下所示,勾选下面四个模板。

此时,你就会在主机的配置里面看到关于SQL Server监控的一些应用集(Applications)选项(截图只是部分)

 

Zabbix share的模板配置略有区别,它有详细的配置文档,有兴趣的可以自己测试验证一下。下面是之前测试整理的简单步骤。

1:在“配置”-> "模板“下导入下面两个模板:

Template SQL Server Instance 0 DE.xml

Template SQL Server Instance 0 SA.xml

2:在“管理”(Administration)->“一般”(General)-> "值映射"(Value mapping)下面导入值映射

 “SQL Agent Job status.xml”

 “SQL Database status.xml”

3:将Discovery.mssql.server.ps1文件copy到Zabbix Agent能访问的地方,个人将其放置在C:\zabbix\bin\win64下面

4:编辑Discovery.mssql.server.ps1文件,在文件的第14行,找到下面脚本,用服务器名替换“InsertSQLInstanceName”

[Parameter(Mandatory = $false, Position = 2)]$SQLInstanceName="EnterInstanceName"

参考博客https://segmentfault.com/a/1190000019203337,也可以修改Discovery.mssql.server.ps1脚本,添加下面一段代码(红色部分),以后直接copy这个文件即可,不用做任何修改。这样省事方便很多。

Param(

[Parameter(Mandatory = $true, Position = 0)]  [string]$select,

[Parameter(Mandatory = $false, Position = 1)][string]$2,

[Parameter(Mandatory = $false, Position = 2)]$SQLInstanceName="EnterInstanceName"

)

if ($SQLInstanceName -eq "EnterInstanceName")

{

$SQLInstanceName = $(hostname.exe)

}

5:修改zabbix_agentd.conf中的参数UserParameter, 如果你将文件Discovery.mssql.server.ps1放在C:\Program Files\zabbix\bin下面,那么就可以用userparams.conf中的值。

UserParameter=databases.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\zabbix\bin\Discovery.mssql.server.ps1" JSONDBNAME

UserParameter=jobs.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\zabbix\bin\Discovery.mssql.server.ps1" JSONJOBNAME

UserParameter=data.mssql.discovery[*],powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\zabbix\bin\Discovery.mssql.server.ps1" $1 "$2"

个人做了一些变跟。因为将文件Discovery.mssql.server.ps1放在C:\zabbix\bin\win64下面

UserParameter=databases.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\bin\win64\Discovery.mssql.server.ps1" JSONDBNAME

UserParameter=jobs.mssql.discovery,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\bin\win64\Discovery.mssql.server.ps1" JSONJOBNAME

UserParameter=data.mssql.discovery[*],powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\bin\win64\Discovery.mssql.server.ps1" $1 "$2"

6:给运行Zabbix Agent 服务的账号授予数据库的相关权限,它需要访问msdb.dbo.sysjobhistory和msdb.dbo.sysjobs,默认情况,运行Zabbix Agent 服务的账号为NT AUTHORITY\SYSTEM已经在数据库中。

当然你可以创建一个账号,然后在Discovery.mssql.server.ps1中设置,取消$uid和$pwd的设置,填上创建的的账号密码。

# Desenvolvido por Diego Cavalcante - 06/12/2017

# Monitoramento Windows SQLServer

# Versco: 1.1.0

# Criaeco = Versco 1.0.0 29/08/2017 (Script Bisico).

# Update  = Versco 1.1.0 02/01/2018 (Obrigado @bernardolankheet, JOBSTATUS Retornava N = 5 Nunca Executado).

# Update  = by Oleg D. and Mantas T. Translated to EN, added SQL Insance name.

 

# Parameters. Change Line 14 $SQLInstanceName="InstanceName" to correct instance name

 

Param(

 

[Parameter(Mandatory = $true, Position = 0)]  [string]$select,

  [Parameter(Mandatory = $false, Position = 1)][string]$2,

  [Parameter(Mandatory = $false, Position = 2)]$SQLInstanceName="xxxx" #具体的实例名

 

)

 

#Login SQLInstanceName

#$uid = "Login"  #具体的登录名和密码

#$pwd = "Password" 

7:重启Zabbix Agent服务

8:给相关服务器(host)添加模板。

9:如果需要的话,更新宏

10:默认情况下,需要添加两个模板,除非你数据库是SQL Server Express edition,那么你只需要添加模板“Template SQL Server Instance 0 DE Baseline”

11:最好将这两个模板分类到Templates/Databases群组下面,方便日后的使用和管理!

With SQL instance discovery 的模板创建也非常简单,跟上面的差异不是太大。按照官方文档的操作步骤,逐步操作即可。

 

 

使用总结

 

 

1:例如,YourSQlDba数据库的恢复模式为简单模式,只做了完整备份。那么监控就会触发告警,告诉你这个YourSQlDba数据库的没有做差异备份和事务日志备份。如下截图

 

 

如果你不想它触发告警,你可以在监控项(Item)里面找到“SQL Server Databases Discovery: SQL Instance MSSQLSERVER Database YourSQLDba: Diff Backup Status”,禁用这些监控项(Item)即可。

2:如果数据库实例上有脱机的数据库(offline),那么你必须禁用这个数据库的相关监控项(Item),否则,你会在Zabbix Agent的日志中发现大量类似这样的日志

...............................................................................

19120:20200826:154534.767 active check "perf_counter["\SQLServer:Databases(xxxx)\Log File(s) Used Size (KB)"]" is not supported: Cannot obtain performance information from collector.

19120:20200826:154534.768 active check "perf_counter["\SQLServer:Databases(xxxx)\Log Flush Wait Time"]" is not supported: Cannot obtain performance information from collector.

19120:20200826:154534.769 active check "perf_counter["\SQLServer:Databases(xxxx)\Log Flush Waits/sec"]" is not supported: Cannot obtain performance information from collector.

19120:20200826:154534.769 active check "perf_counter["\SQLServer:Databases(xxxx)\Log Flushes/sec"]" is not supported: Cannot obtain performance information from collector.

19120:20200826:154534.769 active check "perf_counter["\SQLServer:Databases(xxxx)\Log Growths"]" is not supported: Cannot obtain performance information from collector.

19120:20200826:154534.770 active check "perf_counter["\SQLServer:Databases(xxxx)\Log Shrinks"]" is not supported: Cannot obtain performance information from collector.

19120:20200826:154534.770 active check "perf_counter["\SQLServer:Databases(xxxx)\Log Truncations"]" is not supported: Cannot obtain performance information from collector.

..............................................................................

另外,如果不禁用这个数据库的相关监控项(Item),那么你会在Zabbix的Queue队列里面看到大量被延迟的监控项(Item)。禁用了脱机数据库的相关Item后,你就会观察到Queue队列延迟的Item不见了。

3:你看到类似下面这样各种告警或信息。下面截图仅仅是部分截图,然后就是理解各种告警和解决问题了。

各类监控指标都有图形。可以查看这些指标的曲线图。

问题小结:

 

在使用Zabbix template for Microsoft SQL Server模板过程中,也遇到了一些小问题,下面是这些问题的集合。下面绝大部分问题是Zabbix share下的模板才会遇到的。下面描述问题时尽量标明是那个分支模板遇到的问题。强烈推荐使用GitHub上的分支版本。可以让你绕过很多坑。

问题1:Zabbix Agent日志中出现下面错误

764:20200715:140830.588 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Active Transactions"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.588 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Data File(s) Size (KB)"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.589 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log Bytes Flushed/sec"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.589 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log File(s) Size (KB)"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.590 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log File(s) Used Size (KB)"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.590 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log Flush Wait Time"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.590 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log Flush Waits/sec"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.591 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log Flushes/sec"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.591 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log Growths"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.592 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log Shrinks"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.592 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Log Truncations"]" is not supported: Cannot obtain performance information from collector.

764:20200715:140830.592 active check "perf_counter["\SQLServer:Databases(DBAInventory)\Percent Log Used"]" is not supported: Cannot obtain performance information from collector.

检查分析发现,DBAInventory数据库被设置为脱机状态,这台服务器应用了模板"Template SQL Server Instance 0 DE Baseline",那么就会生成一些监控项(Items)和一些触发器(Triggers),这些Items和Tiggers的状态是“不支持的”(Not supported),所以在主机设置里面,通过过滤搜索数据库DBAInventory的监控项和触发器,如下所示,然后将其停用(Disable)后,zabbix_agentd.log中就不会出现这个错误信息了。

问题2:遇到 Timeout while executing a shell script.错误。

1364:20200709:085346.828 active check "jobs.mssql.discovery" is not supported: Timeout while executing a shell script.

1364:20200709:085842.183 Failed to execute command "powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\bin\win64\Discovery.mssql.server.ps1" JSONDBNAME": Timeout while executing a shell script.

1364:20200709:085842.183 active check "databases.mssql.discovery" is not supported: Timeout while executing a shell script.

修改zabbix_agentd.conf配置文件中的参数Timeout, 例如将Timeout调整为30

### Option: Timeout

#   Spend no more than Timeout seconds on processing.

#

# Mandatory: no

# Range: 1-30

# Default:

# Timeout=3

Timeout=30

此时你就会发现zabbix_agentd.log不会出现这个错误了。

整理的文档,本来有十几个小问题,全部列在此处,不仅感觉非常混乱,而且占用了大量的篇幅,后面想想,这里就简单列举一两个问题,后面有空,打算将这些问题以单篇展开述说。

参考资料:

https://share.zabbix.com/databases/microsoft-sql-server/template-for-microsoft-sql-server

https://github.com/MantasTumenas/Zabbix-template-for-Microsoft-SQL-Server

Zabbix template for Microsoft SQL Server总结的更多相关文章

  1. Sql Server系列:Microsoft SQL Server Management Studio模板资源管理器

    模板资源管理器是Microsoft SQL Server Management Studio的一个组件,可以用来SQL代码模板,使用模板提供的代码,省去每次都要输入基本代码的工作. 使用模板资源管理器 ...

  2. P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1

    P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1       May ...

  3. Microsoft SQL Server中的事务与并发详解

    本篇索引: 1.事务 2.锁定和阻塞 3.隔离级别 4.死锁 一.事务 1.1 事务的概念 事务是作为单个工作单元而执行的一系列操作,比如查询和修改数据等. 事务是数据库并发控制的基本单位,一条或者一 ...

  4. Microsoft SQL Server 2008 R2 安装卸载

    问题 问题1 标题: Microsoft SQL Server 2008 R2 安装程序 ------------------------------ 出现以下错误: Could not open k ...

  5. 未能加载包“Microsoft SQL Server Data Tools”

    直接在vs2013里的App_Data目录创建数据库,在服务器资源管理器中查看时报错: 未能加载包“Microsoft SQL Server Data Tools” 英文: The 'Microsof ...

  6. SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

    在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period e ...

  7. Cannot set a credential for principal 'sa'. (Microsoft SQL Server,错误: 15535)

    在SQL SERVER 2008上上禁用sa登录时,遇到下面错误:"Cannot set a credential for principal 'sa'. (Microsoft SQL Se ...

  8. Microsoft SQL Server 2005 Service fails to start

    今天碰到一雷死人的事情,在Windows Server 2012 R2上安装SQL SERVER 2005标准版过程中一直遇到"The SQL Server service failed t ...

  9. Microsoft SQL Server 2008 R2官方中文版(SQL2008下载).rar

    Microsoft SQL Server 2008 R2官方中文版(SQL2008下载).rar

随机推荐

  1. 配置Django-TinyMCE组件支持上传图片功能

    Django自带的Admin后台,好用,TinyMCE作为富文本编辑器,也蛮好用的,这两者结合起来在做博客的时候很方便(当然博客可能更适合用Markdown来写),但是Django-TinyMCE这个 ...

  2. 【Spring注解驱动开发】使用@PropertySource加载配置文件,我只看这一篇!!

    写在前面 很多小伙伴都在问:冰河,你的Spring专题更新完了吗?怎么感觉像是写了一半啊?我:没有更新完呀,整个专题预计会有70多篇.那怎么更新了一半就去写别的了呢?那是因为有很多其他的小伙伴在后台留 ...

  3. JS学习第一天

    JS的三种引入方式: 内联:在标签属性中引入javascript:js代码    <a href="javascript:("helloworld")"& ...

  4. 2020-06-07:mysql中varchar类型的id,where id=1,会用到索引吗?int 类型的id,where id="1",会用到索引吗?为什么?

    福哥答案2020-06-07: 答案来自群员:对于int类型id,查询的varchar 类型 ‘1’会隐式转换成 1,‘1’和 1都能正常走索引:对于varchar类型id,查询的int 类型 1不会 ...

  5. C#开发笔记之01-为什么开源框架会大量的使用protected virtual?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/957 访问. 我们在很多开源框架中会经常看到prote ...

  6. C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/961 访问. 状态机可以理解为实现了备忘录模式(仅作为 ...

  7. C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4005 访问. 给定两个大小为 m 和 n 的有序数组 nums1 ...

  8. 代码优化实战,3行代码解决了一百个if else!

    事情是这样的,前段时间做代码review的时候,发现项目中有一个方法代码量超鸡儿多,而且大部分都是写的参数校验的代码,得,我们先抓着缕一缕需求先. 产品需求 找到产品要到了需求文档,需求是这样得: e ...

  9. 《Java从入门到失业》第一章:计算机基础知识(一):二进制和十六进制

    0 前言 最近7年来的高强度工作和不规律的饮食作息,压得我有些喘不过气,身体也陆续报警.2018年下半年的一场病,让我意识到了这个问题的严重性,于是开始强制自己有规律饮食和作息,并辅以健身锻炼,不到2 ...

  10. xpath和css选择器对比

    基本语法对比 都可以在html中提取内容,但xpath可以提取xml的内容.