SyncNavigator v8.6.2
SyncNavigator是一款功能強大的資料庫同步軟體,适用于SQL SERVER, MySQL,具有自動/定時同步資料、無人值守、故障自動恢複、同構/異構資料庫同步、斷點續傳和增量同步等功能,支援Windows xp以上所有作業系統,适用于大容量資料庫快速同步。
安裝包下載下傳位址:https://www.syncnavigator.cn/Setup.zip
幫助文檔位址:https://www.syncnavigator.cn/Help_zh-CN.chm
Web文檔位址:https://www.syncnavigator.cn/chm/index.htm
作者:Atul Gaikwad | 更新時間:2016-04-20 | 評論(11)| 相關:更多> T-SQL
問題
在采訪SQL Server候選人時,我發現大多數人都不了解某些基本知識 SQL Server delete和truncate指令之間的差異以及這些操作是否可以 復原,是以在本技巧中,我們将介紹其中的一些方面。
解
我一直積極參與 面試過程超過10年,并且面試時間超過 從初級到進階的500個SQL DBA。 從開始面試候選人時,我遵循一個簡單的過程 基礎知識,然後讨論進階主題。 我不希望他們知道所有答案,但是 他們應該了解基礎知識,并至少在一個或兩個領域工作過 例如群集,鏡像,複制,日志傳送,性能調整, 故障排除,監視,安裝,遷移,災難恢複 政策等
如果您不知道SQL Server的工作方式,那麼您将不知道如何處理某些情況下的專業知識 是必需的。 是以我經常開始 帶有“删除和截斷有什麼差別?”, 我認為這是一個非常基本的概念,每個DBA都必須知道。 令我驚訝的是 聽到了許多令人震驚的答案。 一位候選人告訴我截斷将删除整個架構和所有表。 我說什麼 那DROP呢? (安靜)
是以我決定寫 DELETE和TRUNCATE之間的差別 舉一個例子,使人們可以有一個更好的了解。
每個人都應該知道DELETE是DML指令,而TRUNCATE是DDL指令。 DELETE删除記錄一個一個,并為每個記錄和 事務日志中的每個删除,而TRUNCATE取消配置設定頁面和 在事務日志中輸入要取消配置設定頁面的條目。
人們之間對復原也有很多誤解 在TRUNCATE或DELETE之後。 人們說DELETE可以復原,但是 可以復原TRUNCATE。 即使我們開始交易,這是真的嗎? 讓抯 嘗試尋找答案。
讓我們建立一個表并插入一些虛拟記錄以進行測試:
建立表員工
(
Empid int NOT NULL,
名稱nchar(10)NULL,
城市nchar(10)NULL
) ON [PRIMARY]
走
-指令成功完成。
插入到員工值(1,'Shweta','Pune'),(2,'Stella','Hydrabad')
-(遭受的2行)
從員工中選擇*
現在我們有了一個帶有僞記錄的表。 現在讓我們在裡面做一個DELETE 交易,看看是否可以復原:
開始交易
-從員工中選擇*
從員工那裡删除,其中Empid ='1'
從員工中選擇*
走
我們删除了Empid等于1的記錄,現在隻有一條記錄:
讓我們嘗試復原,看看能否恢複已删除的記錄:
復原交易
從員工中選擇*
如您在下面看到的,我們有記錄。
讓抯為TRUNCATE嘗試相同的方法:
開始交易
截斷員工表
從員工中選擇*
現在我們已經截斷了該表并且沒有記錄,該表為空:
讓我們嘗試復原,看看是否可以取回記錄。 跑 下面的指令 看看你得到什麼:
復原交易
從員工中選擇*
如您在下面看到的,我們得到了記錄。
是以,如果指令在A内啟動,我們也可以復原DELETE以及TRUNCATE。 交易,如果我們是,則DELETE和TRUNCATE之間沒有差別 初期復原。 自己嘗試,讓我知道您是否有經驗 任何問題。
- 截斷種子的辨別值,而删除則不。
- 截斷将全部删除 記錄和不觸發觸發。
- 與删除排序,截斷還原 因為它減少了事務日志的使用。
- 在以下情況下無法截斷 表由外鍵引用,或者表用于複制或與 索引視圖。
下一步
- 檢視這些相關提示
- 使用TRUNCATE與删除SQL Server中的資料删除指令
- 截斷SQL Server資料庫中的所有表
上次更新時間:2016-04-20
關于作者
Atul Gaikwad在SQL Server方面擁有14年以上的經驗。 他目前在Pune的一家領先的跨國公司中擔任傳遞經理。
檢視我的所有提示
相關資源
- 更多資料庫開發人員提示。。
鳴叫
成為研究員
發表評論或讓作者知道此技巧有所幫助。
所有評論都經過審查,是以請緊貼主題,否則我們可能會删除您的評論。 注意:您的電子郵件位址尚未釋出。 必填隙标标有星号(*)。
*名
*電子郵件
給我發電子郵件更新
<p></p>***注意***-如果要在文章中包含來自SQL Server Management Studio(SSMS)的代碼,請在複制以下代碼以删除以下代碼之前,從SSMS複制代碼将其插入到NotePad的文本編輯器中。 SSMS格式。
注冊我們的通訊
我同意送出資料以接收來自MSSQLTips和/或其他贊助者的有關SQL Server的通信,帳戶更新和/或特别優惠。 我已閱讀了隐私聲明,并了解我可能随時退訂。
2016年8月31日星期三-7:15:58 AM-Atul Gaikwad | 回到頂部 |
伊姆蘭,您的觀點是正确的。 大多數站點甚至Microsoft都說Truncate無法復原,但實際上,如果您在事務下啟動,則可以像delete語句一樣復原。 讓我知道您是否還有任何疑問。 |
2016年8月9日,星期二-1:39:17 AM-Imran Siddiqui | |
大家好, 根據同一網站上的文章i。e: https:// www。mssqltips。com / sqlservertip / 1080 /在帶有truncate-vs-delete-commands的sql-server中删除資料/ 在第3和第4行中說 “由TRUNCATE TABLE語句删除的記錄無法恢複。 ” 是以我對真實點感到困惑,無論是否可行。 任何人都可以确認将證明嗎? |
2016年7月4日星期一-7:12:08 AM-Atul Rajaram Gaikwad | |
Roger:它将一直持續到檢查點,并且将成為事務日志備份的一部分,這有助于您将資料庫恢複到特定的時間點。 有關更多詳細資訊,請參閱:https:// technet。微軟。com / zh-CN / library / aa933065(v = sql。80)。aspx |
2016年5月19日,星期四-11:14:49 AM-Recce | |
我有一種回到SQL Server 6的感覺。5,它将在執行DDL指令之前執行隐式COMMIT。 或者我對Oracle的行為感到困惑。 |
2016年5月18日,星期三-11:25:57 AM-湯姆·布蘭農 | |
也許有些困惑來自TRUNCATE在不同系統中的不同行為。 在Oracle中,TRUNCATE無法復原,而在SQL Server中可以復原。 |
2016年5月18日,星期三-9:56:34 AM-韋恩 | |
我認為一個重要的差別是您可以使用WHERE和JOIN進行DELETE的選擇性。 盡管如此,非常好的文章。 我沒有考慮過TRUNCATE是DML,但是您所說的是有道理的。 我需要測試您關于TRUNCATE重置IDENTITY種子的聲明,還需要測試TRUNCATE是否将跟随外鍵RI的級聯删除。 |
2016年5月18日,星期三-8:37:06 AM-Roger Plowman | |
這是有關截斷的問題。 您說它會取消配置設定頁面,并在日志中記錄下來。 哪個都很好,但是未配置設定頁面*保持*未配置設定多長時間? SQL Server會重用該頁面嗎?如果是,這是否意味着最終無法再復原該頁面? 還是恢複到某個時間點? |
2016年4月25日,星期一-12:21:47 PM-格雷格 Robidoux | |
嗨裡克, 這裡是一些其他DBA面試問題的連結。 https:// www。mssqltips。com / sql-server-tip-category / 46 / professional-development-interview-questions-dba / 謝謝 Greg |
2016年4月25日星期一-下午12:15:56-Rick Fitch | |
您是否考慮過釋出dba面試問題? 我的dba退休了,我需要聘請替代人員。 dba的責任在這裡很輕,主要是BI報告資料庫-沒有事務性的東西-但是我真的不知道當我們開始該過程時我會問哪些潛在的受訪者。 我多年來一直是sql開發人員/報告編寫者,并且在此過程中學習了很多dba基礎知識,但是我的确在知識深度上有漏洞。 我認為可能有很多人處于類似的困境中 |
2016年4月21日,星期四-8:30:53 AM-ShwetaC | |
感謝Atul提供的如此有價值且易于了解的文章。這個部落格确實消除了我的困惑!!! |
2016年4月20日,星期三-7:39:55 AM-Sagar Upadhyay | |