Ich muss ein altes Altsystem warten und erweitern, das Webservice-Methoden und Datenbanktabellen enthält, die nicht mehr verwendet werden. Da ich nicht ganz sicher bin, ob die Tabellen wirklich redundant sind, habe ich Angst, sie fallen zu lassen.
Gibt es eine andere Möglichkeit, den gleichen Effekt zu erzielen (Tabellen können nicht mehr verwendet werden), ohne sie fallen zu lassen? Meine Idee war, sie in ein anderes Schema (z. B. Deleted
) als das aktuelle Standardschema zu übertragen dbo
.
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Deleted')
BEGIN
EXEC('CREATE SCHEMA Deleted')
END
ALTER SCHEMA Deleted TRANSFER dbo.TableName;
Gibt es eine andere Option oder gibt es irgendwelche Nachteile beim Schema-Ansatz?
quelle
Sie können die Tabellen auch einfach umbenennen oder den Clustered-Index deaktivieren, wenn sie über Clustered-Indizes verfügen.
quelle
Entfernen Sie die Berechtigungen für die Tabelle aus den Rollen / Gruppen / Konten, die [möglicherweise] verwendet werden.
Wenn irgendetwas in die Luft sprengt, lege sie [schnell] zurück.
Tipp: Die Verwendung eines Skripts, um diese Änderungen vorzunehmen, wäre eine wirklich sehr gute Idee.
quelle
Das Entfernen von Berechtigungen funktioniert im Allgemeinen nicht, da Sie nicht BESTIMMT sein können, dass jemand keine Berechtigungen hat. Möglicherweise durch eine Gruppe, eine Rolle oder sogar, weil sie Sysadmin sind (obwohl wir es nicht hoffen).
Für Tabellen können Sie diese deaktivieren. Und das ist ein schneller Prozess. Um sie zu aktivieren, müssen Sie sie jedoch neu erstellen und für einen großen Tisch, der einige Zeit in Anspruch nehmen kann.
Am besten verschieben Sie das Objekt in ein neues Schema (wie von Ihnen vorgeschlagen) oder benennen das Objekt um. Beide Vorgänge sind schnell und einfach durchzuführen und rückgängig zu machen. Die Berechtigungen bleiben auch in beide Richtungen erhalten.
Ein weiterer Schritt, den Sie ausführen können, ist das Hinzufügen einer "TBD-Notiz" in den erweiterten Eigenschaften des Objekts. Sie können notieren, wann Sie die Änderung vorgenommen haben und / oder welche Gründe Sie haben, warum Sie sich sicher fühlen, sie loszuwerden.
Alles in allem würde ich einige Tage lang eine erweiterte Ereignissitzung (oder einen Profiler-Trace) ausführen, um sicherzustellen, dass alle verwendeten Objekte vorhanden sind. Sie können die Sitzung stark auf den Objektnamen und den Zeitpunkt beschränken, zu dem er berührt wurde, um den Overhead zu verringern. Stellen Sie außerdem sicher, dass Sie diese Sitzung zu beiden Seiten des Monats und möglicherweise sogar zum Ende des Quartals einige Tage lang ausführen, um sicherzustellen, dass Sie über alles verfügen.
quelle
Entfernen Sie die Berechtigungen, wie von Phil W. vorgeschlagen.
Entfernen Sie auch die Berechtigungen von gespeicherten Prozeduren, die die Tabellen verwenden. In SQL Server werden Berechtigungen von einem aufrufenden Objekt (z. B. der gespeicherten Prozedur) an das aufgerufene Objekt (z. B. eine Tabelle) gekettet.
quelle