2013-05-21 2 views
5

Wir haben also eine Reihe von Anwendungen auf unseren SQL-Servern, und heute haben wir festgestellt, dass einige von ihnen eine Reihe von Partitionsschemas/-funktionen hatten. t erstellen.Die von FullText-Katalogen erstellten "System" -Partitionsschemata können nicht gelöscht werden

Die Partitionsschemata und -funktionen wurden ifts_comp_fragment_data_space_{hash} bzw. ifts_comp_fragment_partition_function_{hash} genannt.

Bei genauerem Hinsehen stellten wir fest, dass sie als Systemeinträge markiert sind (is_system auf 1 gesetzt in sys.partition_schemes), was bedeutet, dass wir sie nicht löschen können.

Nach einigen Recherchen haben wir herausgefunden, dass SQL Server sie erstellen wird, um die Volltextkataloge zu partitionieren, wenn sie zu groß werden, oder so ähnlich see here. Das Problem ist - wir haben einfach alle Kataloge gelöscht, und diese wurden verlassen, ohne sie aufzulösen.

Ich würde mir keine Sorgen machen, außer ich brauche sie zu löschen, da ich versuche, unsere DB als .bacpac-Datei zu exportieren, und stürzt mit der Beschwerde, dass die DB Partitionen Schemata/Funktionen enthält und sie sind nicht unterstützt.

Gibt es irgendeine Möglichkeit, den SQL Server zwingen, diese Objekte fallen zu lassen, oder jede andere Alternative, die ich tun könnte?

+0

Ich habe Ihren Titel bearbeitet. Bitte lesen Sie "[Sollten die Fragen" Tags "in ihren Titeln enthalten?] (Http://meta.stackexchange.com/questions/19190/)", wobei der Konsens "nein, sie sollten nicht" lautet. –

+0

Guter Punkt, danke) –

Antwort

5

Sie können dieses is_system-Flag von 1 in 0 ändern und dann das Partitionsschema wie jedes andere löschen. Um dies zu tun:

Erste erlauben Updates auf dem Server:

exec sp_configure 'allow updates', 1 
go 
reconfigure with override 
go 
  1. Shutdown SQL-Server
  2. es Anfang zurück nach oben in Einzelbenutzermodus, indem Sie „C: \ Programme \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Binn \ sqlservr.exe -m "von einer Konsole mit erhöhten Rechten.
  3. Anmeldung an den Server des SQL Server-DAC http://technet.microsoft.com/en-us/library/ms178068(v=sql.105).aspx
  4. Wenn wir ein sp_helptext auf dem sys.partition_schemes tun betrachten, sehen Sie, dass die is_system Spalte auf einem Status-Flag in der sys.sysclsobjs Tabelle basiert. "sysconv (bit, o.status & 0x4) AS is_system,"
  5. Um das Flag zu ändern, müssen wir uns ansehen, was der aktuelle Wert des Status ist und die 4 Bits aufheben. Mein Wert war 4, damit ich es

    update sys.sysclsobjs set status = 0 where name = 
        'ifts_comp_fragment_data_space_033D368C' 
    

Jetzt können Sie Abschaltung der Einzelbenutzermodus SQL Server-Prozess nur um die Konsole-Fenster schließen auf 0 aktualisiert und SQL Server-Windows-Dienst starten. Dann loggen Sie sich einfach wie gewohnt ein und lassen Sie das Partitionsschema fallen.

Schließlich stellen Sie ‚Updates zulassen‘ Dies könnte werden müssen, geplante Ausfallzeiten für einen produktiven Server auf 0 zurück

Einstellung.

HAFTUNGSAUSSCHLUSS Dies ist wahrscheinlich kein Microsoft unterstützte Möglichkeit, dies zu tun, können Sie in auf einigen nicht-prod-Server vor dem Tauchen zu testen.

+1

Danke .. Dies zeigte mir definitiv in die richtige Richtung, und ich muss nicht die ganze DB von Grund auf neu erstellen^_^ –

+0

Sie wissen, was der sys.sysclsobjs.status sogar ist? Wo ist es dokumentiert? –

+0

Und wäre es nicht viel besser, 'status & ~ 0x4' zu setzen, um die anderen Bits im Bitfeld nicht zu vermasseln? –

Verwandte Themen