1
我需要找到的是重新創建某個表的過程,使用了哪些數據源,以及哪些腳本(如果有的話)。& c。那麼,如果以手動方式或通過查詢創建表,並且數據是從外部數據導入的數據,還是從數據庫中已有的表/視圖導入,那麼是否有可能以某種方式區分系統視圖或類似情況?我已經知道誰創造了什麼時間。我幾乎沒有結果篩選整個數據庫,現在我正在尋找元數據中的提示。在SQL-Server中創建表的方式
我需要找到的是重新創建某個表的過程,使用了哪些數據源,以及哪些腳本(如果有的話)。& c。那麼,如果以手動方式或通過查詢創建表,並且數據是從外部數據導入的數據,還是從數據庫中已有的表/視圖導入,那麼是否有可能以某種方式區分系統視圖或類似情況?我已經知道誰創造了什麼時間。我幾乎沒有結果篩選整個數據庫,現在我正在尋找元數據中的提示。在SQL-Server中創建表的方式
如果該表最近已創建,則可以從默認跟蹤中收集信息。下面的查詢將列出對象創建和更改的事件。默認跟蹤是翻轉跟蹤,因此取證信息將根據活動進行限制。
SELECT
trace.DatabaseName
,trace.ObjectName
,te.name AS EventName
,tsv.subclass_name
,trace.EventClass
,trace.EventSubClass
,trace.StartTime
,trace.EndTime
,trace.NTDomainName
,trace.NTUserName
,trace.HostName
,trace.ApplicationName
,trace.Spid
FROM (SELECT REVERSE(STUFF(REVERSE(path), 1, CHARINDEX(N'\', REVERSE(path)), '')) + N'\Log.trc' AS path
FROM sys.traces WHERE is_default = 1) AS default_trace_path
CROSS APPLY fn_trace_gettable(default_trace_path.path, DEFAULT) AS trace
JOIN sys.trace_events AS te ON
trace.EventClass=te.trace_event_id
JOIN sys.trace_subclass_values AS tsv ON
tsv.trace_event_id = EventClass
AND tsv.subclass_value = trace.EventSubClass
WHERE te.name IN(N'Object:Altered', N'Object:Created')
AND tsv.subclass_name = 'Commit'
ORDER BY trace.StartTime;
沒有這樣的元數據。與存儲過程不同,表僅作爲其內部表示進行存儲。創建它們的腳本不會在任何地方記錄。從引擎的角度來看,沒有辦法「手動創建表」 - 所有事情最終總是以(可能生成的)CREATE TABLE語句發生。 (或者'SELECT INTO',如果你想變得迂腐。) –
沒有辦法知道創建表的來源。想想這個......最後它只是執行一個sql腳本。 SSMS只是創建一個腳本併爲您執行它。 –
您可以使用第三方工具(如RedGate)查找create table語句。您可以找到何時將數據庫項目關聯到解決方案的另一種方法。在這兩種情況下,您可以搜索創建表'TableName'。 –