Ola Hallengren 入门 GOOGLE翻译

我如何开始使用SQL Server维护解决方案?

SQL Server维护解决方案入门很容易。跟着这些步骤。

  1. 下载MaintenanceSolution.sql。
  2. 在脚本中,找到以下行:
    SET @BackupDirectory = NULL
    并将NULL替换为备份目录的路径。
  3. 在脚本中,找到以下行:
    SET @CleanupTime = NULL
    并将NULL替换为您的清除时间。清理时间是删除备份文件后经过的小时数。
  4. 执行MaintenanceSolution.sql。该脚本创建所需的所有对象和作业。
  5. 进入[SQL Server代理] / [作业]并启动已创建的作业。验证这些作业是否成功完成。验证是否正在创建备份文件。检查错误日志目录中的输出文件。
  6. 安排工作。

是否需要在master数据库中创建对象?

可以在任何数据库中创建对象:master,msdb或用于数据库管理脚本的实用程序数据库。您只需要在MaintenanceSolution.sql中更改以下代码行:

使用[主人]

指向将在其中创建对象的数据库。作业将自动配置为针对此数据库运行。

支持哪些版本的SQL Server?

SQL Server 2005,SQL Server 2008,SQL Server 2008 R2,SQL Server 2012,SQL Server 2014,SQL Server 2016,SQL Server 2017,SQL Server 2019,Azure SQL数据库和Azure SQL Database Managed支持SQL Server维护解决方案实例。

支持哪些版本的SQL Server?

SQL Server的所有版本均支持SQL Server维护解决方案。

是否需要任何兼容级别?

您要在其中创建对象的数据库的兼容性级别必须为90或更高。所有其他数据库可以处于任何兼容性级别。

如何检查已安装的版本?

存储过程的头中有一个版本时间戳。

-------------------------------------------------- --------------------------------------------------
  -//来源:https://ola.hallengren.com //--
  //许可证:https://ola.hallengren.com/license.html //
  --// GitHub:https: //github.com/olahallengren/sql-server-maintenance-solution //--
  //版本:2018-06-24 15:24:40 //
  ------------ -------------------------------------------------- ---------------------------------------

这是一个脚本,可用于检查所有存储过程。

如何开始使用SQL Server Express上的SQL Server维护解决方案?

SQL Server Express没有SQL Server代理。因此,必须使用cmd文件和Windows Scheduled Tasks调度存储过程的执行。跟着这些步骤。

  1. 下载MaintenanceSolution.sql。
  2. 执行MaintenanceSolution.sql。该脚本创建所需的存储过程。
  3. 创建cmd文件以执行存储过程;例如:
    sqlcmd -E -S。\ SQLEXPRESS -d master -Q“执行dbo.DatabaseBackup @Databases ='USER_DATABASES',@Directory = N'C:\ Backup',@BackupType ='FULL'” -b -o C:\ Log \ DatabaseBackup.txt
  4. 在Windows计划任务中,创建任务以调用cmd文件。
  5. 安排任务。
  6. 启动任务,并验证它们是否已成功完成。

当我创建存储过程DatabaseBackup,DatabaseIntegrityCheck或IndexOptimize时,我得到此参考消息:
“模块”取决于缺少的对象“ dbo.CommandExecute”。该模块仍将创建;但是,在对象存在之前,它无法成功运行。”
我该怎么办?

DatabaseBackup,DatabaseIntegrityCheck和IndexOptimize正在使用存储过程CommandExecute。下载此对象并在同一数据库中创建。

您还可以使用MaintenanceSolution.sql脚本,该脚本创建所需的所有对象。

我正在使用旧版本的SQL Server维护解决方案。如何升级到最新版本?

若要升级到最新版本的SQL Server维护解决方案,请按照下列步骤。

  1. 下载MaintenanceSolution.sql。
  2. 在脚本中更改此行,以免创建作业:
    SET @CreateJobs ='N'
  3. 执行MaintenanceSolution.sql。该脚本删除存储过程的旧版本并创建新版本。
  4. 启动作业,并确认它们已成功完成。

SQL Server备份

如何备份网络共享?

  • 验证SQL Server和网络共享是否在同一域中。
  • 在域帐户下运行SQL Server服务。
  • 在域帐户下运行SQL Server代理服务。
  • 授予SQL Server和SQL Server代理服务帐户对目录和网络共享的完全控制权。
  • 如果您在代理帐户下运行作业,则该代理必须是域帐户。将帐户添加到sysadmin服务器角色,并授予该帐户对目录和网络共享的完全控制权。
  • 备份到UNC路径。

DatabaseBackup不会删除旧的备份文件。可能是什么问题?

  • 验证SQL Server和SQL Server代理服务帐户对备份目录具有完全控制权。
  • 如果该目录是网络共享,请验证SQL Server和SQL Server代理服务帐户对网络共享具有完全控制权。
  • 如果使用代理帐户,请验证该帐户是否是sysadmin服务器角色的成员,并且对备份目录和网络共享具有完全控制权。
  • 验证文件未在文件系统中锁定;例如,备份或防病毒软件可能会锁定文件。
  • DatabaseBackup的设计宗旨是不删除比最新的完整或差异备份新的事务日志备份。这可以解释为什么不删除事务日志备份。

如何从Azure Blob存储中删除旧的备份文件?

我无法找到一种从T-SQL存储过程删除Azure Blob存储中的备份文件的方法。因此,在备份到URL时不能使用@CleanupTime参数。

您将必须使用PowerShell脚本删除Azure Blob存储中的旧备份文件。这是您可以使用的一种。

DatabaseBackup备份到目录路径,该目录在目录路径中包含SQL Server实例名称,数据库名称和备份类型。我可以改变这种行为吗?

DatabaseBackup设计为仅在备份和验证成功时才删除备份文件。即使这样,DatabaseBackup也只删除相同实例,数据库和类型的备份。因此,可以确保始终在磁盘上拥有最新的备份。如果从目录路径中删除任何此信息,则不再具有此保证。

这是因为xp_delete_file的工作方式:xp_delete_file是DatabaseBackup(和维护计划)用来删除备份文件的扩展存储过程。xp_delete_file根据目录,文件扩展名和修改日期删除备份文件。

DatabaseBackup备份到文件名中包含日期和时间的文件。我可以更改此行为,以使其始终备份到相同的文件名吗?

DatabaseBackup设计为仅在备份和验证成功时才删除备份文件。每次都备份到新文件名。因此,可以确保始终在磁盘上拥有最新的备份。如果备份到相同的文件名,则不再具有此保证。

如何配置DatabaseBackup备份可用性组?

首先,您需要确定要在哪里执行备份;在主副本或辅助副本上。SQL Server有一个称为备份首选项的选项,您可以在可用性组上进行设置。默认情况下,它设置为“首选辅助”,但是如果您愿意,可以将其更改为“首选”。

辅助副本上并非支持所有备份类型。以下是受支持的备份类型:

  • 仅复制完整备份
  • 日志备份(非复制)

DatabaseBackup将在首选备份副本上执行这些类型的备份。它使用函数sys.fn_hadr_backup_is_preferred_replica确定当前副本是否是首选副本。

仅主副本支持完全备份(非仅复制)和差异备份。DatabaseBackup将始终在主副本上执行这些类型的备份。

您可以使用以下几种不同的备份策略:

  • 在主副本上执行所有备份。通过这种策略,它就像在任何数据库中一样工作。您可以执行完整(非仅复制),差异和日志备份。您需要做的就是将可用性组的备份首选项设置为“主要”。
  • 在辅助副本上执行所有备份。使用此策略,您只能执行仅复制完整和日志备份(非复制)。您需要检查可用性组的备份首选项设置为“首选次要”。您还需要在完整备份作业中添加@CopyOnly ='Y',并禁用差异备份作业。
  • 在主副本上执行完整(非仅复制)备份和差异备份,并在辅助副本上记录备份。您需要检查可用性组的备份首选项设置为“首选次要”。您无需向完整,差异或日志备份作业添加任何其他参数。

作业应配置相同,并在所有副本上启用和安排作业。

SQL Server完整性检查

我应该如何配置DatabaseIntegrityCheck来检查可用性组?

默认情况下,DatabaseIntegrityCheck对所有副本执行检查。这是最佳实践,因为主副本和辅助副本具有不同的I / O子系统。

保罗·兰德尔(Paul Randal)在这里写这本书。

“镜像的I / O子系统没有损坏,这与主体I / O子系统的运行状况无关。”

如果需要控制检查哪些副本,则可以使用参数@AvailabilityGroupReplicas。

作业应配置相同,并在所有副本上启用和安排作业。

SQL Server索引和统计信息维护

如何为可用性组配置IndexOptimize?

只能重建或重组索引,并且只能在可用性组中的主副本上更新统计信息。IndexOptimize对此进行了检查。

作业应配置相同,并在所有副本上启用和安排作业。

为什么在执行IndexOptimize时没有重组或重建索引?

问题可能是索引太小或碎片不足。

默认情况下,IndexOptimize不会重组或重建少于1000页的索引。如果要更改此设置,可以使用@MinNumberOfPages参数。

默认情况下,IndexOptimize不会重组或重建碎片少于5%的索引。如果要更改此设置,可以使用@ FragmentationLevel1参数。

当我刚刚执行IndexOptimize时,为什么我的某些索引仍然碎片化?

小索引有时甚至在重组或重建后立即显示高度碎片化。这是因为页面存储在混合盘区中。您可以在联机丛书中了解这种情况:

“通常,小索引的碎片化通常是不可控制的。小索引的页面存储在混合盘区中。最多可以共享八个对象的混合范围,因此在重组或重建索引后,较小索引中的碎片可能不会减少。”

此外,非常小的表上的碎片不会影响性能。Microsoft对此有一份白皮书:

“通常,您不应该担心少于1,000页的索引的碎片级别。在测试中,包含超过10,000页的索引实现了性能提升,而在页数更多(大于50,000页)的索引上获得了最大的收益。”

默认情况下,IndexOptimize不会重组或重建少于1000页的索引。如果要更改此设置,可以使用@MinNumberOfPages参数。

最后,IndexOptimize仅适用于索引,不适用于堆(index_id = 0)。

碎片级别对于重组和重建索引应该是什么?

Microsoft在联机丛书中提供了一些建议。IndexOptimize中的默认值基于这些建议。

有没有可以用来检查索引碎片的脚本?

这是一个可用于检查索引碎片的脚本。

如何将IndexOptimize中的命令记录到表中,以便可以分析哪些索引迅速变得碎片化?

您可以使用@LogToTable ='Y'选项将命令记录到表中。然后,您可以使用此脚本来分析数据。

当我运行IndexOptimize作业时,事务日志变得非常大。我该怎么办?

确保事务日志备份作业正在按预期方式运行。

检查事务日志是否具有所需的存储。您不应该收缩事务日志文件。这样做会耗费资源以缩小资源,并在以后重新生成文件。

工作执行

我应该将CmdExec作业步骤与sqlcmd一起使用,还是将T-SQL作业步骤使用?

SQL Server 2005、2008和2008 R2中存在一个问题,即在第一个错误之后,T-SQL作业步骤将停止执行。解决方法是将CmdExec作业步骤与sqlcmd和-b选项一起使用。

T-SQL作业步骤在SQL Server 2012及更高版本中运行良好。

您可以使用MaintenanceSolution.sql脚本创建作业。它将在SQL Server 2005、2008和2008 R2上使用sqlcmd创建CmdExec作业步骤,并在更高版本上创建T-SQL作业步骤。

是否可以更改存储过程的默认参数值以适合我们的环境?

我建议您不要更改存储过程的默认参数值。这样做使您更难升级到存储过程的新版本。相反,我建议您将首选值作为参数传递给作业中的存储过程。

我应该按名称还是按位置将参数传递给存储过程?

我建议您按名称将参数传递给存储过程。在以后的存储过程版本中,我将始终保持参数名称相同。

我的工作之一失败了。我已经查看了查看历史记录,但看不到失败的原因。

“查看历史记录”仅显示存储过程输出的一小部分-并非总是错误所在。因此,您需要检查输出文件,该文件与SQL Server错误日志位于同一目录中。

如果尚未配置输出文件,则可以使用MaintenanceSolution.sql脚本创建作业。输出文件将为您配置。

使用SQL Server代理令牌的目的是什么?

在sqlcmd命令中使用SQL Server代理令牌作为服务器名称可确保您对本地SQL Server执行脚本。

对输出文件名中的Jobid,Stepid,日期和时间使用SQL Server Agent 令牌可确保这些文件名是唯一的。

在输出文件路径中的日志目录中使用SQL Server代理令牌可确保您可以在多服务器环境中使用作业。

您可以使用MaintenanceSolution.sql脚本创建作业。然后,将为您配置sqlcmd命令和带有令牌的输出文件。

我的工作有多个步骤。如何配置作业以运行所有步骤并在任何步骤失败时报告失败?

不幸的是,这项任务并不像看起来那样容易。如果要运行所有步骤,则必须将成功步骤和失败步骤中除最后一步以外的所有步骤都配置为[转到下一步]。必须将最后一步配置为:成功则退出[退出作业报告成功],失败时选择[退出作业报告失败]。问题在于,在这种情况下,即使最后一个步骤成功执行,只要最后一步成功,作业都会报告成功。

解决方法是,您可以在作业结束时添加一个步骤,以确定以前的步骤是否失败。

我想在作业失败时收到电子邮件通知。我该如何实现?

SQL Server Agent内置支持在作业失败时发送邮件。您可以在联机丛书中阅读有关SQL Server代理邮件的信息。

我可以使用SQL Server代理以外的作业计划程序来计划存储过程的执行吗?

您可以使用任何作业计划程序来计划存储过程的执行。

排程

我应该如何安排工作?

答案取决于您的维护时段,数据库的大小,可以容忍的最大数据丢失以及许多其他因素。您可以从这里开始一些准则,但是您需要根据环境进行调整。

用户数据库:

  • 每周一天的完整备份
  • 一周中所有其他天的差异备份
  • 每小时备份一次事务日志
  • 每周进行一次完整性检查
  • 每周维护一天索引

系统数据库:

  • 每天完整备份
  • 每周进行一次完整性检查

我建议您在维护索引后运行完整备份。接下来的差异备份将很小。我还建议您在完整性检查之后执行完整备份。然后,您知道备份的完整性是可以的。

清理:

  • sp_delete_backuphistory每周一天
  • sp_purge_jobhistory每周一天
  • 每周进行一天的CommandLog清理
  • 每周一天清理输出文件

记录中

我正在使用该选项登录到表。我还应该登录输出文件吗?

您应该始终登录到输出文件,以确保在出错时具有完整的信息。

您可以使用MaintenanceSolution.sql脚本创建作业。然后将为您配置输出文件。

我正在使用该选项登录到表。如果BACKUP DATABASE命令中有错误,则即使该命令输出两个错误,也仅将一个错误记录到表中。为什么是这样?

SQL Server中的某些命令输出两个错误。不幸的是,您只能捕获最后一个错误。

您应该始终登录到输出文件,以确保在出错时具有完整的信息。

您可以使用MaintenanceSolution.sql脚本创建作业。然后将为您配置输出文件。

我正在使用该选项登录到表。如果BACKUP DATABASE命令中有错误,则记录错误号,但不记录错误消息。为什么?

若要捕获SQL Server中的错误消息,您需要使用TRY CATCH和ERROR_MESSAGE()函数。不幸的是,TRY CATCH无法与BACKUP DATABASE命令配合使用,该命令会输出两个错误(您只能捕获最后一个错误)。为了确保所有错误信息都已输出,我在DatabaseBackup中的BACKUP DATABASE命令中不使用TRY CATCH。因此,错误消息不会记录到表中。

您应该始终登录到输出文件,以确保在出错时具有完整的信息。

您可以使用MaintenanceSolution.sql脚本创建作业。然后将为您配置输出文件。

安全

SQL Server维护解决方案是否使用xp_cmdshell?

SQL Server维护解决方案不使用xp_cmdshell。

SQL Server维护解决方案需要哪些权限才能工作?

如果使用的是SQL Server代理,则作业将在sysadmin服务器角色成员的SQL Server代理服务帐户下运行。如果使用代理帐户,建议该帐户成为sysadmin服务器角色的成员。

如果使用其他调度程序,则建议该调度程序以sysadmin服务器角色成员的帐户运行。

如果需要让用户针对特定数据库临时执行存储过程,则需要以下权限:

  • DatabaseBackup:系统管理员
  • DatabaseIntegrityCheck:在dbo上执行.DatabaseIntegrityCheck,在dbo.CommandExecute上执行VIEW DEFINITION,在dbo.CommandLog上执行VIEW DEFINITION,在所有目标数据库上执行VIEW SERVER STATE,db_owner
  • IndexOptimize:在dbo.IndexOptimize上执行,在dbo.CommandExecute上执行VIEW DEFINITION,在dbo.CommandLog上执行VIEW DEFINITION,在所有目标数据库上执行VIEW SERVER STATE,db_owner

部署方式

我有一个非常大的SQL Server环境。如何在所有服务器上部署SQL Server维护解决方案?

在SQL Server Management Studio中,可以并行对多个服务器执行脚本。这是在所有服务器上部署SQL Server维护解决方案的简便方法。您还可以使用中央管理服务器来制作服务器的中央列表。

要验证所有服务器上是否具有相同版本的SQL Server维护解决方案,可以检查版本时间戳和校验和。这是您可以使用的脚本。

卸载

如何卸载SQL Server维护解决方案?

这是一个可用于卸载SQL Server维护解决方案的脚本。

清理

sp_delete_backuphistory和sp_purge_jobhistory做什么?

您可以在联机丛书中阅读有关sp_delete_backuphistory和sp_purge_jobhistory的信息。

高可用性

SQL Server维护解决方案是否支持始终可用性组?

SQL Server维护解决方案支持AlwaysOn可用性组。

仅复制完整备份和事务日志备份在首选副本上执行。完整备份(非仅复制)和差异备份在主副本上执行。

对所有副本执行完整性检查。索引和统计信息维护在主副本上执行。

您可以使用@AvailabilityGroups参数选择可用性组。

SQL Server维护解决方案是否支持数据库镜像?

SQL Server维护解决方案支持数据库镜像。在主体数据库上执行备份,完整性检查以及索引和统计信息维护。

SQL Server维护解决方案是否支持日志传送?

SQL Server维护解决方案支持日志传送。在主数据库上执行完全和差异备份,完整性检查以及索引和统计信息维护。不对日志传送中涉及的数据库执行事务日志备份。

SQL Server维护解决方案是否支持故障转移群集?

SQL Server维护解决方案支持故障转移群集。

Azure虚拟机是否支持SQL Server维护解决方案?

Azure虚拟机支持SQL Server维护解决方案。

Amazon EC2是否支持SQL Server维护解决方案?

Amazon EC2支持SQL Server维护解决方案。

Amazon RDS for SQL Server是否支持SQL Server维护解决方案?

SQL Server的Amazon RDS支持SQL Server维护解决方案的完整性检查以及索引和统计信息维护部分。备份由Amazon RDS的自动备份功能执行。

Azure SQL数据库是否支持SQL Server维护解决方案?

Azure SQL数据库支持SQL Server维护解决方案的完整性检查以及索引和统计信息维护部分。备份由Azure SQL数据库的自动备份功能执行。

您不能在Azure SQL数据库上使用MaintenanceSolution.sql。您需要将对象下载为单独的脚本。

Azure SQL数据库托管实例是否支持SQL Server维护解决方案?

Azure SQL数据库托管实例支持SQL Server维护解决方案。

SQL Server维护解决方案是否支持备份到Azure Blob存储?

SQL Server维护解决方案支持备份到Azure Blob存储。

一般的问题

仅使用SQL Server维护计划难道不是很容易吗?

在某些情况下,SQL Server维护计划是好的,但并不总是能提供您所需要的。SQL Server维护解决方案可靠,易于部署,具有广泛的日志记录,并且具有企业环境中经常需要的功能。

SQL Server维护解决方案要花多少钱?

SQL Server维护解决方案是免费的。您可以在此处阅读许可证。

GitHub上是否提供SQL Server维护解决方案?

SQL Server维护解决方案可在GitHub上获得。

如何通知我有关SQL Server维护解决方案的更新?

您可以注册新闻快讯,以获取有关SQL Server维护解决方案更新的警报。

Ola Hallengren 脚本 经常问的问题相关推荐

  1. ola.hallengren的SQL Server维护脚本

    ola.hallengren的SQL Server维护脚本 下载地址 http://files.cnblogs.com/files/lyhabc/ola.hallengrenMaintenanceSo ...

  2. 【google翻译】使用Ola Hallengren的脚本更新统计数据

    使用Ola Hallengren的脚本更新统计数据 作者:艾琳斯特拉托                     发表于:2018年6月22日上午7:49 作为定期维护的一部分,我是更新统计数据的巨大粉 ...

  3. shell脚本编程之处理用户输入

    技术交流QQ群:1027579432,欢迎你的加入! 本教程使用Linux发行版Centos7.0系统,请您注意~ 1.命令行参数 bash shell提供了一些不同的方法来从用户处获得数据,包括命令 ...

  4. linux怎么用两个进程传值,关于linux:将变量脚本参数传递给另一个脚本,然后将qsub传递给程序...

    在阅读了大量的bash脚本线程和帮助站点之后,我找不到一个有效的解决方案. 我想把一个变量参数'i'从一个脚本传递到另一个脚本$i,然后qsub它到一个程序"$1".在程序中,我从 ...

  5. shell 知:ola

    gitee地址:https://gitee.com/maminjie/ola 文章目录 1. 简介 2. 目录 3. 使用 3.1. 开发 3.2. 执行 3.3. 配置 4. 结语 1. 简介 ol ...

  6. 引流脚本软件是干什么的,引流脚本是最靠谱得引流方式?

    最靠谱得引流脚本,问多人问起什么是最靠谱得引流脚本,在信息网时代客源流量成为微商致命弱点,很多人都在苦寻解决客源流量的良方,2017出现的引流脚本,不失为一款很好的引流辅助工具,很多人曾经质疑过它都被 ...

  7. 区块链招聘面试工作中可能会问到的40个问题。

    问:你认为区块链技术中的区块意味着什么? 区块链由所有金融交易的信息组成.一个块只不过是一个记录列表.当这些列表相互结合时,它们被称为区块链.例如,一个组织有100个分类账簿,其中的组合被称为区块链, ...

  8. oracle ola_Ola HallengrenSQL Server维护解决方案–安装和SQL Server备份解决方案

    oracle ola Database administrators tend to use various scripts or applications, to make the daily SQ ...

  9. 索引sql server_维护SQL Server索引

    索引sql server In the previous articles of this series (see the full article TOC at bottom), we discus ...

最新文章

  1. python3库_对python3中pathlib库的Path类的使用详解
  2. linux 3.0 kernel
  3. Mybatis3源码分析(05)-加载Configuration-加载MappedStatement
  4. 【知识星球】剪枝量化初完结,蒸馏学习又上线
  5. 使用spring-rabbit测试RabbitMQ消息确认(发送确认,接收确认)
  6. Mybatis更新和删除数据
  7. matlab 28m35,F28M35H52C
  8. 第2天.make的学习(第二部分)对伪目标的理解
  9. r2dbc_使用Spring Data R2DBC进行异步RDBMS访问
  10. linux编译lnx文件命令_Linux常用命令手册
  11. HoverTree开发日志之验证码
  12. JSK-18 跳跃游戏【基础】
  13. vue 插值表达式,v-cloak,v-text,v-html,以及v-bind,v-on
  14. H3C-H3CNE 华三网络工程师从入门到精通 自学视频课程[肖哥]-肖宗鹏-专题视频课程...
  15. 【雕爷学编程】Arduino动手做(69)---GY-30环境光传感器
  16. 疲劳检测——眨眼检测
  17. 技术面常见问题(持续更新)
  18. android 保持socket连接,android – 如何保持websocket连接活着?
  19. 深入理解Java虚拟机—Java虚拟机内存
  20. 高德地图-初始化的时候获取行政区边界和中心点

热门文章

  1. 达梦数据库-SQL优化之HINT-平坦化处理
  2. camus执行任务,偶发性异常
  3. weak 属性需要在dealloc中置为nil吗
  4. 多机局域网办公神器 rustdesk 使用强推!!!
  5. 【前端Vue+后端Node.js+MySql】部署到服务器
  6. Java(老白再次入门) - 语言概述
  7. c++陈维兴第三版3.35_C++面向对象程序设计教程第3版—陈维兴,林小茶课后习题答案...
  8. Android 系统,Wifi连接后,显示wifi已连接但无法访问网络。
  9. 14nm 18核 Intel发烧友级CPU大降价了:只不到8000块了。
  10. iOS 下载量、注册量追踪统计