Сканирование всей БД программно

Недавно я унаследовал набор очень больших баз данных SQL Server. схема приложения и базы данных - беспорядок. Я наткнулся на несколько полей в базе данных, которые хранят различные типы конфиденциальных данных, где они не должны храниться. поскольку в моей базе данных почти 10000 таблиц, мне крайне необходим способ программного сканирования нескольких из этих баз данных, чтобы выяснить, где находятся данные. Я понимаю, что это будет очень ресурсоемким, поэтому я настроил сервер специально для сканирования резервных копий баз данных.

У меня также есть ноль долларов для покупки любых инструментов.

Кто-нибудь знает способ с C# и SQL, что я могу сканировать все пользовательские таблицы в базе данных для чувствительных данных?

Пример сканирования для одного типа данных (например, SSN) был бы чрезвычайно полезным. Я уверен, что смогу экстраполировать это на все сценарии, которые мне понадобятся.

Спасибо большое.

4 ответа

Решение

Этот sql перечислит все пользовательские таблицы и количество строк в базе данных. Это будет отправной точкой..

SELECT o.name,
  ddps.row_count 
FROM sys.indexes AS i
  INNER JOIN sys.objects AS o ON i.OBJECT_ID = o.OBJECT_ID
  INNER JOIN sys.dm_db_partition_stats AS ddps ON i.OBJECT_ID = ddps.OBJECT_ID
  AND i.index_id = ddps.index_id 
WHERE i.index_id < 2  AND o.is_ms_shipped = 0 ORDER BY o.NAME 

Hth, O

Этот запрос поможет вам найти столбец с определенным именем и типом данных.

SELECT t.name AS table_name,
    SCHEMA_NAME(t.schema_id) AS schema_name,
    c.name AS column_name ,tp.name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.types tp ON tp.user_type_id=c.user_type_id
WHERE c.name LIKE '%Product%' AND tp.name LIKE '%int%'
ORDER BY schema_name, table_name;

Если вы можете открыть БД в Microsoft SQL Server Managment Studio, вы можете попробовать использовать ApexSQL . Это плагин, который можно скачать здесь:

http://www.apexsql.com/sql_tools_search.aspx

Например: вы выбираете базу данных и можете искать имя столбца. Он покажет вам все таблицы, в которых у вас есть этот столбец. Надеюсь, поможет.

Это может быть неактуально в данный момент, но должно служить дополнительным примечанием: Вы можете использовать представления информационной схемы для запроса объектов базы данных, которые соответствуют стандартному определению ISO для INFORMATION_SCHEMA.

MSDN LINK

Другие вопросы по тегам