尽pipe运行了sqlserver备份,Powershell(sqlps)的lastbackupdate仍然没有发生变化

我正在使用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备份,并运行相同的查询,最后的备份date不会更改:

 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 

我的猜测是,这是预期的行为,但任何人都可以告诉我它在哪里logging/解释 – 我只是想了解发生了什么事情。

这是运行2008年来的SQlps,与2008年的情况比较。

谢谢

马特

sqlps就像SQL Server Management Studio一样使用SMO,你有没有注意到在数据库对象浏览器窗格中,你需要右键单击并select刷新时,例如在查询窗格中通过T-SQL创build一个新表? 那么,与sqlps相同的概念只有没有正确的点击。

相反,你需要调用刷新方法:

 dir SQLSERVER:\SQL\Server1\default\databases | foreach { $_.Refresh() }