2017-06-07 2 views
0

deaktivieren Ich habe eine SQL Server-Datenbank geerbt, die mit einer C# -Clientanwendung verwendet wird. Ich weiß genug, um gefährlich zu sein, aber ich bin kein Programmierer. Ich weiß, dass der vorherige Programmierer gerne in der Live-Datenbank rumgespielt hat und deshalb habe ich einige verwaiste Tische, von denen ich glaube, dass sie verwaist sind.Wie kann ich eine Tabelle in einer SQL Server-Datenbank von SSMS

Die Anwendung selbst ist nicht super-high-Verwendung und kann die Ausnahmen von Tabellen nicht für einen kleinen Zeitrahmen bestehen. Ich möchte diese Tabellen deaktivieren oder deaktivieren, um zu sehen, dass sie durch Versuch und Irrtum verwendet werden.

Gibt es eine Möglichkeit, sie zu deaktivieren, ohne die Daten vollständig zu entfernen, damit ich sie bei Bedarf schnell wieder aktivieren kann? Oder gibt es einen transparenteren Weg zu entdecken, ob diese Tabellen benötigt werden?

+1

Nun, das ist eine ziemlich brutale Methode, können Sie nicht einfach den Quellcode für den Tabellennamen suchen? Woher wissen Sie, dass Sie jede einzelne Funktion testen? Wenn Sie das * wirklich * wollen, benennen Sie einfach die Tabelle um. – DavidG

+2

Sie können nur die Tabelle umbenennen. Vielleicht fügen Sie ".testing" oder etwas an den Namen an. – itsme86

+2

Siehe [Wie kann ich feststellen, ob auf eine Datenbanktabelle mehr zugegriffen wird? Möchte etwas wie einen "SELECT-Trigger"] (https://stackoverflow.com/questions/2155594/how-can-i-tell-if-a-database-table-is-being-aconcessed-anymore-want-etwas- lik) –

Antwort

1

Es gibt keinen einfachen Weg. Auf die Tabellen kann über gespeicherte Prozeduren und direkte SQL-Aufrufe von Ihrer Client-Anwendung zugegriffen werden. Ein umfassender Ansatz würde bedeuten, dass Sie eine Möglichkeit haben müssten, jede Tabelle nicht verfügbar zu machen (Umbenennung wurde in Kommentaren vorgeschlagen) und führen Sie dann einen vollständigen Regressionstest für Ihre Client-Anwendung durch. Sie müssen dies möglicherweise mit jeder Tabelle in der Datenbank tun. Die Clientanwendung greift möglicherweise bedingt auf die Tabellen zu, abhängig von externen Dingen wie dem angemeldeten Benutzer (und den zugehörigen Berechtigungen), dem Datum, der Konfiguration und so weiter.

Die SQL Server Profiler ist ein gutes Werkzeug zu verwenden, aber es wird nicht Ihr Problem allein lösen, weil Sie noch analysieren müssen, was es erfasst.

+0

Die Anwendung verwendet tatsächlich sowohl gespeicherte Prozeduren als auch SQL-Aufrufe vom Client.Ein Ziel von mir ist es, alle SQL-Abfragen zu gespeicherten Prozeduren für die Konsistenz und meine persönliche Gesundheit zu migrieren. Aber zuerst möchte ich das vorhandene Durcheinander aufräumen. Ich bin der Meinung, dass das Umbenennen von Tabellen nicht der beste Ansatz ist, aber da es sich um eine kleine und begrenzte Nutzung handelt, ist es wahrscheinlich etwas, womit ich leben kann. Ich habe das Gefühl, dass 3 Tische einfach tot sind, aber ich fühle mich nicht wohl, nur die Tische raus zu nehmen und auf das Beste zu hoffen. – Residualfail

+1

Es macht nie Spaß ein Chaos zu erben !!!! –

0

können Sie die Berechtigungen ändern, so dass niemand außer Ihnen und der DBO auf dem Tisch select-Berechtigung haben. Sie können nicht verhindern, dass ein dbo oder sa alle Berechtigungen für eine Tabelle hat.

Sie können auch die Tabelle verschlüsseln, siehe Encrypting database tables in SQL Server 2008 In diesem Fall ist es wirklich gesperrt.

Sie können SQL Server Audit auch verwenden, um festzustellen, ob ein Benutzer die Daten liest. Audit ist ein Produkt mit sehr geringer Auswirkung (kommt mit SQL Server 2008) und ist sehr einfach einzurichten und kann im Gegensatz zu einem Trigger Prüfungen auswählen.

Verwandte Themen