Я использую 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
Если я затем запустил резервную копию sql экземпляра Server1 по умолчанию и запустил тот же запрос, дата последней резервной копии не изменится:
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
Я предполагаю, что это ожидаемое поведение, но может ли кто-нибудь показать мне, где это задокументировано / объяснено - я просто хочу понять, что происходит.
Это запускает SQlps, который пришел с 2008, по сравнению с экземпляром 2008 года.
Спасибо
Мэтт
sqlps использует SMO так же, как SQL Server Management Studio, и вы когда-нибудь замечали, что в панели обозревателя объектов базы данных вам нужно щелкнуть правой кнопкой мыши и выбрать обновление, когда вы, например, создаете новую таблицу с помощью T-SQL в области запросов? Ну, та же концепция с sqlps, только там нет правой кнопки мыши.
Вместо этого вам нужно вызвать метод обновления:
dir SQLSERVER:\SQL\Server1\default\databases | foreach { $_.Refresh() }