Проблемы
Рассмотрим следующий сценарий.
-
Вы создаете базу данных в Microsoft SQL Server 2008 R2.
-
Логическое имя базы данных обновляется с помощью инструкции ALTER DATABASE.
-
Выполняется полное резервное копирование базы данных. Примечание. После выполнения резервного копирования создается полный файл резервной копии базы данных.
-
Вы пытаетесь восстановить базу данных из файла резервной копии базы данных.
В этом сценарии появляется следующее сообщение об ошибке:
Msg 3234, Level 16, State 2, Line 1Logical file '<имя логического файла>' не является частью базы данных '<имя базы данных>'. Используйте команду RESTORE FILELISTONLY, чтобы получить список логических имен файлов.Msg 3013, Level 16, State 1, Line 1RESTORE DATABASE ненормально завершается.
При использовании инструкции RESTORE FILELISTONLY для проверка файла резервной копии вы обнаружите, что обновленное логическое имя файла повреждено. Последний символ имени логического файла усечен. Например, вы пытаетесь обновить логическое имя базы данных до DB_modified. Однако он неправильно меняется на DB_modifie в файле резервной копии.Примечание. Эта проблема не возникает при перезапуске службы SQL Server после обновления имени логического файла.
Решение
Сведения о накопительном пакете обновления
SQL Server 2008 R2
Исправление этой проблемы было впервые выпущено в накопительном обновлении 6. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
2489376 Накопительный пакет обновления 6 для SQL Server 2008 R2 Примечание. Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 R2. Рекомендуется применить последний выпуск исправления, содержащий это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2
Сведения об исправлении
Поддерживаемое исправление доступно в корпорации Майкрософт. Однако это исправление предназначено для устранения только проблемы, описанной в этой статье. Применяйте это исправление только к системам, в которых возникла проблема, описанная в этой статье. Это исправление может пройти дополнительное тестирование. Поэтому, если эта проблема не затрагивает вас, рекомендуется дождаться следующего обновления программного обеспечения, содержащего это исправление.Если исправление доступно для скачивания, в верхней части этой статьи базы знаний есть раздел "Доступно скачивание исправлений". Если этот раздел не отображается, обратитесь в службу поддержки майкрософт, чтобы получить исправление. Примечание. Если возникают дополнительные проблемы или требуется устранить неполадки, может потребоваться создать отдельный запрос на обслуживание. Обычные затраты на поддержку будут применяться к дополнительным вопросам и проблемам, которые не относятся к данному исправлению. Полный список телефонных номеров службы поддержки и поддержки Майкрософт или создание отдельного запроса на обслуживание см. на следующем веб-сайте Майкрософт:
http://support.microsoft.com/contactus/?ws=supportПримечание. В форме "Доступно скачивание исправлений" отображаются языки, для которых доступно исправление. Если язык не отображается, это связано с тем, что исправление недоступно для этого языка.
Предварительные условия
Чтобы применить это исправление, необходимо установить Microsoft SQL Server 2008 R2.
Требование перезагрузки
После применения этого исправления не нужно перезагружать компьютер.
Сведения о замене исправлений
Это исправление не заменяет никаких других исправлений.
Сведения о файлах
Английская версия исправления содержит файлы с атрибутами, указанными в следующей таблице, или более поздние. Даты и время для файлов указаны в формате времени UTC. При просмотре сведений о файлах выполняется перевод соответствующих значений в местное время. Чтобы узнать разницу между временем UTC и местным временем, откройте вкладку Часовой пояс элемента Дата и время панели управления.
32-разрядная версия SQL Server 2008 R2 Database Services Core Instance
|
Имя файла |
Версия файла |
Размер |
дата |
Время |
Платформа |
|---|---|---|---|---|---|
|
atxcore.dll |
2009.100.1755.0 |
26464 |
24 декабря 10 |
0:33 |
x86 |
|
datacollectorcontroller.dll |
2009.100.1755.0 |
135520 |
24 декабря 10 |
0:33 |
x86 |
|
etwcls.mof |
Неприменимо |
1116328 |
23 декабря 10 |
3:54 |
Неприменимо |
|
instmsdb.sql |
Неприменимо |
2241260 |
22 декабря 10 |
20:49 |
Неприменимо |
|
mssqlsystemresource.ldf |
Неприменимо |
524288 |
22 декабря 10 |
22:52 |
Неприменимо |
|
mssqlsystemresource.mdf |
Неприменимо |
63569920 |
22 декабря 10 |
22:52 |
Неприменимо |
|
sql_engine_core_inst_keyfile.dll |
2009.100.1755.0 |
13664 |
24 декабря 10 |
0:31 |
x86 |
|
sqlaccess.dll |
2009.100.1755.0 |
415584 |
24 декабря 10 |
0:29 |
x86 |
|
sqlagent.exe |
2009.100.1755.0 |
367968 |
24 декабря 10 |
0:34 |
x86 |
|
sqlagent100_msdb_upgrade.sql |
Неприменимо |
2371245 |
23 декабря 10 |
3:53 |
Неприменимо |
|
sqlos.dll |
2009.100.1755.0 |
14688 |
24 декабря 10 |
0:22 |
x86 |
|
sqlscriptdowngrade.dll |
2009.100.1755.0 |
14688 |
24 декабря 10 |
0:21 |
x86 |
|
sqlscriptupgrade.dll |
2009.100.1755.0 |
4611424 |
24 декабря 10 |
0:21 |
x86 |
|
sqlservr.exe |
2009.100.1755.0 |
42904928 |
24 декабря 10 |
0:34 |
x86 |
|
sqsrvres.dll |
2009.100.1755.0 |
89952 |
24 декабря 10 |
0:21 |
x86 |
64-разрядная версия SQL Server 2008 R2 Database Services Core Instance
|
Имя файла |
Версия файла |
Размер |
дата |
Время |
Платформа |
|---|---|---|---|---|---|
|
atxcore.dll |
2009.100.1755.0 |
31584 |
23 декабря 10 |
23:40 |
x64 |
|
datacollectorcontroller.dll |
2009.100.1755.0 |
262496 |
23 декабря 10 |
23:40 |
x64 |
|
etwcls.mof |
Неприменимо |
1116328 |
23 декабря 10 |
3:54 |
Неприменимо |
|
instmsdb.sql |
Неприменимо |
2241260 |
22 декабря 10 |
20:49 |
Неприменимо |
|
mssqlsystemresource.ldf |
Неприменимо |
524288 |
22 декабря 10 |
22:52 |
Неприменимо |
|
mssqlsystemresource.mdf |
Неприменимо |
63569920 |
22 декабря 10 |
22:52 |
Неприменимо |
|
sql_engine_core_inst_keyfile.dll |
2009.100.1755.0 |
14176 |
23 декабря 10 |
23:40 |
x64 |
|
sqlaccess.dll |
2009.100.1755.0 |
403296 |
23 декабря 10 |
23:38 |
x86 |
|
sqlagent.exe |
2009.100.1755.0 |
428384 |
23 декабря 10 |
23:40 |
x64 |
|
sqlagent100_msdb_upgrade.sql |
Неприменимо |
2371245 |
23 декабря 10 |
3:53 |
Неприменимо |
|
sqlos.dll |
2009.100.1755.0 |
15712 |
23 декабря 10 |
23:37 |
x64 |
|
sqlscriptdowngrade.dll |
2009.100.1755.0 |
15712 |
23 декабря 10 |
23:37 |
x64 |
|
sqlscriptupgrade.dll |
2009.100.1755.0 |
4610912 |
23 декабря 10 |
23:37 |
x64 |
|
sqlservr.exe |
2009.100.1755.0 |
61957984 |
23 декабря 10 |
23:40 |
x64 |
|
sqsrvres.dll |
2009.100.1755.0 |
105824 |
23 декабря 10 |
23:37 |
x64 |
Itanium-architecture SQL Server 2008 R2 Database Services Core Instance
|
Имя файла |
Версия файла |
Размер |
дата |
Время |
Платформа |
|---|---|---|---|---|---|
|
atxcore.dll |
2009.100.1755.0 |
63328 |
23 декабря 10 |
23:05 |
ia64 |
|
datacollectorcontroller.dll |
2009.100.1755.0 |
477024 |
23 декабря 10 |
23:05 |
ia64 |
|
etwcls.mof |
Неприменимо |
1116328 |
23 декабря 10 |
3:54 |
Неприменимо |
|
instmsdb.sql |
Неприменимо |
2241260 |
22 декабря 10 |
20:49 |
Неприменимо |
|
mssqlsystemresource.ldf |
Неприменимо |
524288 |
22 декабря 10 |
22:52 |
Неприменимо |
|
mssqlsystemresource.mdf |
Неприменимо |
63569920 |
22 декабря 10 |
22:52 |
Неприменимо |
|
sql_engine_core_inst_keyfile.dll |
2009.100.1755.0 |
19296 |
23 декабря 10 |
23:05 |
ia64 |
|
sqlaccess.dll |
2009.100.1755.0 |
392032 |
23 декабря 10 |
23:01 |
x86 |
|
sqlagent.exe |
2009.100.1755.0 |
1205600 |
23 декабря 10 |
23:09 |
ia64 |
|
sqlagent100_msdb_upgrade.sql |
Неприменимо |
2371245 |
23 декабря 10 |
3:53 |
Неприменимо |
|
sqlos.dll |
2009.100.1755.0 |
22368 |
23 декабря 10 |
22:56 |
ia64 |
|
sqlscriptdowngrade.dll |
2009.100.1755.0 |
20832 |
23 декабря 10 |
22:56 |
ia64 |
|
sqlscriptupgrade.dll |
2009.100.1755.0 |
4617056 |
23 декабря 10 |
22:56 |
ia64 |
|
sqlservr.exe |
2009.100.1755.0 |
121762656 |
23 декабря 10 |
23:09 |
ia64 |
|
sqsrvres.dll |
2009.100.1755.0 |
188768 |
23 декабря 10 |
22:56 |
ia64 |
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Обходное решение
Чтобы обойти эту проблему, используйте один из следующих двух методов:
-
После изменения имени логического файла выполните следующие инструкции, чтобы перезапустить базу данных:ALTER DATABASE <имя базы данных> SET OFFLINEALTER DATABASE <имя базы данных> SET ONLINE
-
При изменении имени логического файла добавьте в новое логическое имя фиктивный пробел. Например, если вы хотите изменить логическое имя на DB_modified, используйте следующую инструкцию, чтобы изменить логическое имя файла:ALTER DATABASE <имя базы данных> MODIFY FILE (NAME=N'<имя базы данных>', NEWNAME='DB_modified ') -- Добавить ' ' в NEWNAME
Ссылки
Дополнительные сведения об инструкции Transact-SQL ALTER DATABASE см. на следующем веб-сайте Microsoft Developer Network (MSDN):
Общие сведения об инструкции Transact-SQL ALTER DATABASEДополнительные сведения об инструкции RESTORE FILELISTONLY Transact-SQL см. на следующем веб-сайте Microsoft Developer Network (MSDN):
Общие сведения об инструкции Transact-SQL RESTORE FILELISTONLY