-1

最近、一連の非常に大規模な SQL Server データベースを継承しました。アプリケーションとデータベースのスキーマは混乱しています。さまざまな種類の機密データを格納するデータベース内のいくつかのフィールドに出くわしましたが、それらは格納されるべきではありません。私のデータベースにはほぼ 10,000 のテーブルがあるため、これらのデータベースのいくつかをプログラムでスキャンして、データの場所を見つける方法がどうしても必要です。これは非常にリソースを集中的に使用することになるので、データベースのバックアップに対してスキャンを実行するように特別にサーバーをセットアップしました。

また、ツールを購入するためのゼロドルも持っています。

C# と SQL を使用して、データベース内のすべてのユーザー テーブルをスキャンして機密データを探す方法を知っている人はいますか?

1 つのタイプのデータ (SSN など) をスキャンする例は非常に役立ちます。必要なすべてのシナリオにそれを当てはめることができると確信しています.

4

4 に答える 4

0

この 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 

H番目、O

于 2014-01-29T16:03:34.653 に答える
0

このクエリは、特定の名前とデータ型を持つ列を見つけるのに役立ちます

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;
于 2014-01-29T16:36:01.437 に答える
0

これは現時点では関係ないかもしれませんが、追加のメモとして役立ちます。情報スキーマ ビューを使用して、INFORMATION_SCHEMA の ISO 標準定義に準拠するデータベース オブジェクトを照会できます。

MSDN リンク

于 2014-05-21T18:34:20.390 に答える