我正在使用 Powershell 检查我们所有 sqlserver 数据库的上次备份时间。这似乎很有效,但我有一个问题
如果我运行这个(实际脚本的精简版):
dir SQLSERVER:\SQL\Server1\default\databases | select parent, name,
lastbackupdate
我得到:
Parent Name LastBackupDate
------ ---- --------------
[Server1] ADBA 10/09/2012 21:15:37
[Server1] ReportServer 10/09/2012 21:00:17
[Server1] ReportServerTempDB 10/09/2012 21:00:18
[Server1] db1 10/09/2012 21:15:35
如果我随后运行 Server1 默认实例的 SQL 备份,并运行相同的查询,则上次备份日期不会改变:
PS C:\temp> dir SQLSERVER:\SQL\Server1\default\databases | select parent, name,
lastbackupdate
Parent Name LastBackupDate
------ ---- --------------
[Server1] ADBA 10/09/2012 21:15:37
[Server1] ReportServer 10/09/2012 21:00:17
[Server1] ReportServerTempDB 10/09/2012 21:00:18
[Server1] db1 10/09/2012 21:15:35
..但是如果我打开一个新的 powershell 窗口,它会显示我刚刚进行的备份:
PS SQLSERVER:\> dir SQLSERVER:\SQL\Server1\default\databases | select parent,
name, lastbackupdate
Parent Name LastBackupDate
------ ---- --------------
[server1] ADBA 12/09/2012 09:03:23
[server1] ReportServer 12/09/2012 08:48:03
[server1] ReportServerTempDB 12/09/2012 08:48:04
[server1] db1 12/09/2012 09:03:21
我猜测这是预期的行为,但有人可以告诉我它在哪里记录/解释吗 - 我只是想了解发生了什么。
这是针对 2008 实例运行 2008 附带的 SQlps。
谢谢
马特
答案1
sqlps 使用 SMO 的方式与 SQL Server Management Studio 类似,您是否注意到,在数据库对象资源管理器窗格中,当您在查询窗格中通过 T-SQL 创建新表时,需要右键单击并选择刷新?其实,sqlps 的概念相同,只是没有右键单击。
相反,您需要调用刷新方法:
dir SQLSERVER:\SQL\Server1\default\databases | foreach { $_.Refresh() }