Восстановление резервной копии базы данных SQL Server 2008 (совместимость 100) создает базу данных SQL Server 2005 на сервере 2012 - PullRequest
0 голосов
/ 12 ноября 2018

У нас есть четыре разные базы данных на сервере баз данных SQL Server 2008 (не SP2 - не спрашивайте меня, почему), которые имеют странные проблемы.

При перечислении из sys.databases эти базы данных сообщают, что ихсовместимость SQL Server 2008 / R2 (уровень совместимости 100), как показано для этих трех БД здесь:

MyDB_Name               100 SQL Server 2008/R2
MyDB_Name_MirrorTables  100 SQL Server 2008/R2
MyDB_Name_Reporting     100 SQL Server 2008/R2

Как вывод этого запроса:

select 
    name, compatibility_level , version_name = 
    case compatibility_level
        when 90  then 'SQL Server 2005'
        when 100 then 'SQL Server 2008/R2'
        when 110 then 'SQL Server 2012'
        else 'unknown - ' + convert(varchar(10), compatibility_level)
    end
from sys.databases

Восстановление из резервных копийДругие пользовательские БД на сервере корректно восстанавливаются как уровень совместимости 100. Однако восстановление этих четырех БД из резервных копий восстанавливается как уровень совместимости 90 (SQL Server 2005).Эта проблема возникает только у этих четырех БД.

Чтобы проверить это, я взял резервную копию одной из этих БД вручную, указав только параметры INIT, SKIP.Затем я восстановил эту резервную копию на сервере SQL Server 2012.После восстановления БД прошла процесс обновления с версии 655 до 706. Ничего необычного не произошло.

Однако при тестировании уровня совместимости на SQL Server 2012 с использованием того же кода, что и выше, это значениевозвращено:

bwh_MyDB_Name_MirrorTables  90  SQL Server 2005

Кроме того, при восстановлении на исходном сервере БД SQL Server 2008 под другим именем база данных по-прежнему возвращает SQL Server 2005 (уровень совместимости 90) для версии БД.

Наконец, хотя БД сообщает как SQL Servre 2008, при возврате столбца даты со связанного сервера DB2 запрос возвращает datetime (с 00: 00: 00.000 для времени).При выполнении запроса в SQL Server 2012 значение возвращается в виде Date типа данных, который должен быть возвращен как в базе данных SQL Server 2008 / R2.

Я в растерянности, гдесмотреть дальше.Проблема с датой / датой и временем была первоначальным толчком к этому, но она стала гораздо большей загадкой.Очевидно, я мог бы просто CAST входящие данные в виде значения date (что работает, как ни странно), но это не объясняет RESTORE, возвращающий БД до уровня совместимости 90, или запрос DB2, возвращающий дату-время вместодата со связанного сервера.Любые предложения будут с удовольствием приняты.

...