Web design and hosting, database, cloud and social media solutions that deliver business results
  • 商务解决方案
  • 数据库咨询服务
    • 报告
      • Claytabase Server Disk IOPs Calculator
      • SQL代码备份
      • SQL打印机
    • 技术文章
      • SQL-Server
      • SQL Server 2008的维护计划
      • 使用SQL Server函数
      • 使用SQL Server日期
      • 使用SQL Server透视-取消透视
  • 网站设计
    • 怀特岛
    • 技术文章
      • ASP-NET
      • CSS
    • 网站安全
  • 产品展示
  • 社交媒体
  • 关于我们
    • 投资组合
    • 球队
      • 切斯特Copperpot
  • 学院
عربى (AR)čeština (CS)Deutsch (DE)English (EN-GB)English (EN-US)Español (ES)فارسی (FA)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

SQL Server 2008的完整维护计划

SQL Server维护计划,可以在多个服务器上备份和还原数据库文件,根据时间重新组织或重建索引

优化数据库

Scrolling CSS Diagram

本节专门用于保持数据库的优化。在这个例子中,我们将要设置代码以执行以下操作(请参阅服务器连接方式的简要说明);

  • 将数据库从实时服务器备份到共享备份文件夹
  • 重新索引数据库
  • 杀死所有连接并在报告服务器上恢复数据库。
  • 链接的服务器将会在一个单独的文章中
  • 日志发货将在一个单独的文章中

在执行跨服务器时,您将需要允许SQL Server运行的帐户访问目标服务器文件系统。

所有SQL代码都从一个实用程序数据库运行,而模式设置为“main”

有很多其他文章,我们在下面写下您可能会感兴趣的。

完整维护计划

现在我们可以使用另一个过程来管理所有这些单独的代码段,这些过程将以正确的顺序调用它们,这将被放在实时服务器中。代码运行如下;

  • 锻炼时间
  • 如果是晚上重新索引数据库
  • 运行数据库的备份(添加您需要的位置)
  • 如果晚上备份其他数据库(添加您需要的位置)
  • 杀死连接并恢复数据库(添加您需要的位置)

此代码已经过测试并运行了几个月,没有任何问题。

请注意,日志文件和数据库文件的缩小应通过运行备份您正在清空日志(尽管它将保留使用的空间)保持最小。如果需要在正常工作时间以外运行。

SQL Code

Use [utilities]
GO
CREATE PROC [maint].MaintenancePlan AS BEGIN
DECLARE @BackupType VARCHAR(1)='E'
IF DATEPART(HOUR,GETDATE()) BETWEEN 5 AND 21 BEGIN
SET @BackupType='D'
END
--EXEC ('USE TempDb; DBCC SHRINKFILE(templog, 0)');--This is only needed when space is at a premium!
--Re-index Live
IF @BackupType='E' EXEC [maint].DatabaseReIndex 'dbname'
--Create Backup
BACKUP DATABASE TO DISK=N'{backuplocation}{dbname}.bak'
WITH NOFORMAT, INIT, NAME =N'{dbname}', SKIP, NOREWIND, NOUNLOAD, STATS= 10;
--EXEC ('USE ; DBCC SHRINKFILE(_log, 0)');--This is only needed when space is at a premium!
--Backup Other Files at Night
IF @BackupType='E' BEGIN
  EXEC [maint].DatabaseReIndex 'dbname'
  --Backup Others
  BACKUP DATABASE [databasename] TO DISK=N'{backuplocation}{dbname2}.bak'
  WITH FORMAT,INIT, NAME =N'{dbname2}',SKIP, NOREWIND, NOUNLOAD,  STATS= 10
END

--Restore Backups on other server
EXEC [server].[utilities].[maint].KillConnections 'dbname';
EXEC [server].[utilities].[maint].RestoreDatabase_{dbname};

--Restore Backups on other server for db_2 etc
IF @BackupType='E' BEGIN
  EXEC [server].[utilities].[maint].KillConnections 'dbname2';
  EXEC [server].[utilities].[maint].RestoreDatabase_{dbname2};
END

END
GO

备份数据库

backup database screenshot

要获取代码来备份数据库,最简单的方法是从SSMS中编写代码。

按照您通常使用的过程,然后选择“脚本操作到新查询窗口”。

将此代码复制到维护计划中。

重新索引数据库

接下来我们可以添加一些代码重新索引我们的数据库,这又是一个共享存储过程,只需要告诉系统的名称。

为避免代码重复,您可以在下面的链接中阅读。

More: 存储过程重建或重组碎片化数据库索引

杀死连接

在数据库上执行恢复时,您只能有一个连接(执行还原的进程),因此我们可以创建一个存储过程,以将当前进程之外的所有连接关闭。我们再次为此创建了一个单独的文章。

More: 存储过程以终止与所选数据库的所有连接

恢复数据库

此代码也可以从SQL Server Management Studio脚本化。如果将此代码添加到存储过程中,则可以从其他进程甚至其他服务器轻松调用它。我们已将其移至单独的文章中,以涵盖更多选项。

More: 从存储过程恢复数据库

Author

Was this helpful?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink Cookie政策网站地图

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom
此网站上的设置设置为允许所有Cookie。 这些可以在我们的Cookie政策和设置页面上更改。继续使用本网站即表示您同意使用Cookie。
Ousia Logo
Logout
Ousia CMS Loader