Симптоми
Обмислете следния сценарий:
-
Имате база данни на Microsoft SQL Server 2012 или по-стара версия, която има множество filegroups, а вторичната filegroup е filegroup по подразбиране.
-
Можете да архивирате базата данни и след това да я възстановите в SQL Server 2014.
-
Можете да зададете основния filegroup като filegroup по подразбиране, а след това да се опитате да премахнете вторичния filegroup.
В този случай не можете да изтриете вторичния filegroup дори ако всички файлове с данни под него се изтрият. Съобщението за грешка показва, че вторично filegroup не може да бъде премахнато, защото не е празно.
Причина
Проблемът възниква, защото надстройването на версиите на базата данни създава системни обекти на filegroup по подразбиране вместо основния filegroup в SQL Server 2014. Вторичната filegroup все още съдържа някои системни обекти.
Решение
Тази корекция въвежда флаг за проследяване 3861, за да мести системните таблици в основния filegroup. След като приложите актуалната корекция, която е описана в тази статия, когато стартирате SQL Server, като използвате 3861 за проследяване на флаг като начален параметър, той може да мести системните таблици в основния filegroup. Ако все още не сте възстановили архивирането на базата данни, можете да разрешите флага за проследяване на ниво сървър:
dbcc traceon(3861,-1)<Restore the database>dbcc traceoff(3861,-1)
Проблемът е коригиран първо в следващата сборна актуализация на SQL Server.
Кумулативна актуализация 4 за SQL Server 2014 /en-us/help/2999197
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".