Professional experience and absolute product knowledge at the admin and developer level make this process much easier. Once you have ruled out the standard operational causes (" Hard disk full? ", " File explicitly locked by another user? ", etc.), it often helps to put yourself in the position of an attacker:
Was information deliberately hidden? In that case, it can usually still be found in the DBMS system tables.
Does the error only occur with the currently logged in user or also as <superadmin> ? Perhaps only a few permissions have been reset.
Are there any anomalies in the DBMS or operating system log? Processes are often logged redundantly, but with varying levels of detail, or deliberate cleanup actions are only carried out in one place (e.g. due to a lack of rights).
Fig. 2: On the left is the code for hiding a database object, with the commands on the right you can make it visible again. © T. Ahlemeyer
Fig. 2: On the left is the code for hiding a database object, with the commands on the right you can make it visible again. © T. Ahlemeyer
In the example above, a table was deliberately hidden from the eyes of the uninitiated. The other functionality remains completely intact. If you don't know the table name but at least suspect that there are additional objects, you can only find them via a system view or in the "right" place in the object explorer:
A customer's DB developer wanted to hide data from unauthorized eyes by duplicating the tables with apparently identical names. This is of course not possible. Table names must be unique by definition (at least within the same schema). But if you assign object names creatively, you can at least create a different visual impression. Here, for example, there are two tables with the name [Master data].[Article] . If you don't know the trick, you can at least query just one of them via the editor, i.e. via the source code. If you combine this approach with the trick for hiding from above, the illusion is almost perfect
Fig. 4: A <em>SELECT * FROM [master data].[article]</em> only returns data from the first table! © T. Ahlemeyer
Fig. 4: A SELECT * FROM [master data].[article] only returns data from the first table! © T. Ahlemeyer
The background of the afghanistan telegram screening idea can be seen in the CREATE code on the right. It shows how the additional table was created. In the object name, the key combination ALT+255 (number pad) was pressed after Article - this created a non-breaking space. Visually, the table names cannot be distinguished, but for the SQL Server they are two separately named objects.
This type of "security by obscurity" is strongly discouraged! Distracting people from database problems with such gimmicks is pointless and highly unprofessional. The unmaintainable and error-prone code cannot be defended against experienced specialists anyway.