2014-01-29 50 views
-1

我最近繼承了一組非常大的SQL Server數據庫。應用程序和數據庫模式是一團糟。我已經在數據庫中的幾個字段中存儲了不同類型的敏感數據,它們不應該存儲在這些字段中。由於我的數據庫中有將近10,000個表,我迫切需要一種以編程方式掃描這些數據庫中的一些數據庫以找出數據的位置的方法。我意識到這將非常耗費資源,所以我已經專門設置了一臺服務器來運行數據庫備份的掃描。以編程方式掃描整個數據庫

我也有零美元購買任何工具。

有誰知道用C#和SQL的方式,我可以掃描數據庫中的所有用戶表以獲取敏感數據嗎?

掃描一種數據類型(例如SSN)的示例將非常有幫助。我相信我可以將其推斷到我需要的所有場景中。

非常感謝。

+0

如果我理解你的問題,你正在尋找具有特定數據類型的表中的列名稱? –

+0

在SSE上有類似的問題http://security.stackexchange.com/questions/8434/tools-to-scan-for-pii我認爲這是你需要的。該工具能夠在不同數據庫中查找PII。 – 2014-01-29 16:19:59

+0

謝謝sauce,我會研究它,但它的Perl和具有諷刺意味的是,我們公司在我們的系統中有一個針對perl的策略。 – user2219930

回答

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個, Ø

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; 
0

列,這可能在此無關但應作爲附加說明:您可以使用信息模式視圖來查詢符合INFORMATION_SCHEMA的ISO標準定義的數據庫對象。

MSDN LINK

0

如果你能打開數據庫到Microsoft SQL Server的梟雄Studio,您可以嘗試使用ApexSQL。這是一個可以從這裏下載一個插件:

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

例如:你選擇的數據庫,你可以找一個列名。它會向您顯示您擁有該欄的所有表格。 希望它有幫助。

相關問題