Tra*_*oks 5 sql-server backup maintenance-plans
当使用 SQL Server 2012 EMaintenance Plan 进行备份时,备份数据库任务会创建一个唯一的文件名。我理解格式一直到最后一组数字。
例如,通过备份数据库任务启动的完整数据库备份将创建如下文件名:
AdventureWorks_backup_2014_12_17_080005_5862824.bak
什么是5862824
引用?是不是比LSN?还有什么?
由于此逻辑隐藏在维护计划背后的 SSIS 包的代码中,我认为除非作者碰巧经过这里,否则您只能猜测。这是我根据一些实验得出的有根据的猜测:
对于 SQL Server 2008 及更高版本,这 7 位数字是实际生成备份命令的 T-SQL 时datetime2(7)
输出的亚秒部分SELECT SYSDATETIME();
。如果您为所有用户数据库创建一个子计划,然后进入编辑并选择查看 T-SQL,您将看到:
BACKUP DATABASE [SQLSentry] TO DISK = N'<path>\SQLSentry_backup_2014_12_17_114845_6488663.bak'
WITH NOFORMAT, NOINIT, NAME = N'SQLSentry_backup_2014_12_17_114845_6488663',
SKIP, REWIND, NOUNLOAD, STATS = 10
GO
BACKUP DATABASE [Views] TO DISK = N'<path>\Views_backup_2014_12_17_114845_6644778.bak'
WITH NOFORMAT, NOINIT, NAME = N'Views_backup_2014_12_17_114845_6644778',
SKIP, REWIND, NOUNLOAD, STATS = 10
GO
Run Code Online (Sandbox Code Playgroud)
您会注意到文件名的组成部分恰好HHMMSS
位于之后,随着每个后续命令的增加而增加,但在某种程度上,这些数字仍然组合在一起。如果您重复几次,您还会看到它们每次都在变化,它们不会一直增加,并且它们会循环显示甚至显示带有前导 0 的 7 位数字。这向我表明它不是任何类型的序列,当然也不是 LSN 的任何组件或数据库本身的其他有意义的属性。
我想不出一个非常简单的方法来让 SSIS 包还包含一些SYSDATETIME()
在生成点指示的输出,即使可以,我也不知道它是否会在之前或之后生成该值,并且需要多长时间或它会引入什么其他延迟。所以我不确定有没有办法确认它是什么。
同意亚伦对询问开发人员的评估。
我使用向导创建了完整备份计划,将其导出到我的计算机,然后在 Visual Studio/BIDS/SSDT-BI 中打开它。您将看到备份数据库任务如下所示
当您单击“查看 T-SQL”按钮时,它会显示它将执行的命令。运行探查器会话时,我无法将按钮单击与数据库中的活动关联起来,但这可能只是我探查器的弱点。
我可以说,如果您在此屏幕中并停止 SQL Server 服务,单击“查看 T-SQL”可能会导致您的 Visual Studio 会话崩溃。因此,这证实了亚伦关于它是时间组成部分的假设。我会生成不同的值,并且目标数据库没有任何表明依赖 LSN 的活动。
此外,该任务不允许您修改生成的 SQL。SSIS 包允许通过表达式进行各种配置,但可以快速浏览可用的配置
没有什么是我真正想要修改的。
最后,如果您想要自定义维护计划,请跳过向导并自行编写 SQL。如果您坚持使用 SSIS 作为协调引擎,您将需要执行 SQL 任务,而我很喜欢使用 Biml 来自动创建此类内容。