Итак, у нас уже несколько лет работает резервное копирование, а в последние несколько дней оно начало резервное копирование несколько раз. Я пошел, чтобы перенастроить резервные копии, чтобы проверить настройки, и получил сообщение об ошибке, говорящее о невозможности резервного копирования фиктивной базы данных.
[Info @12:03:50.669] +-+-+-+-+-| Running Confirming Permissions: Confirming Permissions |+-+-+-+-+-
[Info @12:03:50.669]
[Info @12:03:50.669] +-+-+-+-+-| Confirming Permissions |+-+-+-+-+-
[Info @12:03:50.669] Starting Node: CONTAINER
[Info @12:03:50.669] NodePath : Container/Progress
[Info @12:03:50.669] Node returned: Ignore
[Info @12:03:50.669] Completed Confirming Permissions: Ignore
[Info @12:03:50.669] -----------------------------------------------------
[Info @12:03:50.669]
[Info @12:03:50.669] +-+-+-+-+-| Running VerifyCanBackupDatabase: Verifying backing up an empty database succeeds |+-+-+-+-+-
[Info @12:03:50.669]
[Info @12:03:50.669] +-+-+-+-+-| Verifying backing up an empty database succeeds |+-+-+-+-+-
[Info @12:03:50.669] Starting Node: DUMMYDATABASE
[Info @12:03:50.669] NodePath : Container/Progress/DUMMYDATABASE
[Info @12:03:50.669] Creating dummy database to test backup.
[Info @12:03:51.200] Queue verify backup job
[Info @12:03:51.263] Queued job [GUID]
[Info @12:03:51.263] Starting backup job to verify necessary permissions
[Info @12:03:56.295] Waiting for backup job to finish
[Error @12:04:01.311] Backup job Failed: TF400797: Job extension had an unhandled error: System.Data.SqlClient.SqlException (0x80131904): The server principal "[DOMAIN\SERVERNAME]$" is not able to access the database "Tfs_Temp[GUID]" under the current security context.
BACKUP DATABASE is terminating abnormally.
at Microsoft.VisualStudio.Services.Configuration.SqlDatabaseBackupRestoreComponent.Execute(String sqlStatement)
at Microsoft.VisualStudio.Services.Configuration.SqlDatabaseBackup.Backup(ISqlConnectionInfo connectionInfo)
at Microsoft.TeamFoundation.Admin.Jobs.DatabaseBackupJob.TakeFullBackupOfSingleDatabase(IVssRequestContext requestContext, String dataSource, String databaseName, String fullFileName, ITFLogger logger)
at Microsoft.TeamFoundation.Admin.Jobs.VerifyBackupPermissionsJobExtension.Run(IVssRequestContext requestContext, TeamFoundationJobDefinition jobDefinition, DateTime jobQueueTime, String& resultMessage)
at Microsoft.TeamFoundation.Framework.Server.JobRunner.ExecuteJob(IVssRequestContext requestContext)
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:916,State:1,Class:14
[Info @12:04:04.405] Node returned: Error
[Error @12:04:04.405] TF401002: The SQL Server Database Engine failed to save the database backup to path \\[MACHINE]\TFSBackups. Please grant SQL service account read/write access to that folder.
[Info @12:04:04.405] Completed VerifyCanBackupDatabase: Error
[Info @12:04:04.405] -----------------------------------------------------
Разрешения для папки подходят как для нашей службы, так и для машины, имеющей полные разрешения на запись.
Есть ли способ обойти эту временную базу данных? Обычное резервное копирование работало, но теперь, когда не удалось создать резервную копию этого тестового, он удалил резервные копии, запланированные на ночь.
Резервную копию сервера TFS можно восстановить только путем восстановления все базы данных, которые являются частью экземпляра TFS. выполнение резервного копирования без одной из баз данных переводит вас в невосстановимое состояние.
Первое сообщение об ошибке, вероятно, является причиной проблемы, резервное копирование выполняется учетной записью LocalSystem на сервере уровня данных TFS (например, [DOMAIN\SERVERNAME]$
и поскольку у этого пользователя нет разрешения на создание резервных копий базы данных temp tfs_temp, он не может завершить полный набор резервных копий.
Решение состоит в том, чтобы либо удалить временную коллекцию проектов из консоли администратора TFS, либо исправить настройки безопасности пользователя, выполняющего резервное копирование, чтобы он мог выполнить полное резервное копирование сервера.