翻譯|使用教程|編輯:吳園園|2020-03-24 15:47:43.023|閱讀 334 次
概述:在本文中,我們將使用JobEmpl招聘服務數據庫來演示如何使用T-SQL在主從關系上創建數據庫復制。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
dbForge SQL Complete是一款用于Microsoft SQL Server Management Studio和Microsoft Visual Studio的功能強大的插件。SQL代碼格式化程序(免費版和高級付費版)能夠提供可以取代原生的Microsoft T-SQL Intellisense特性的T-SQL代碼自動實現和格式化功能。
通常,需要創建SQL Server數據庫的只讀副本。例如,出于分離分析任務和操作任務的目的,可能需要這樣做。第一個導致數據庫上的高負載,為了減少負載,創建了主數據庫的副本以執行分析性只讀查詢。
通常,可以使用內置DBMS工具創建以下只讀副本:
但是,如果您不需要整個數據庫,而只需要其中的幾個表怎么辦?在這種情況下,您可以自己創建復制。只要數據采樣是主要目標,那么一個方向(主從)的數據庫復制就足夠了。可以使用包括SSIS和.NET在內的幾種方法來執行這種復制。
在本文中,我們將使用JobEmpl招聘服務數據庫來演示如何使用T-SQL在主從關系上創建數據庫復制。
SQL Complete是幫助我構建這些腳本的主要工具。該工具還允許代碼格式化以及重命名對象及其所有引用。
使用T-SQL在一個方向上創建SQL Server復制
首先,讓我們描述此復制的主要原理和算法。在每次迭代期間,我們需要比較Source數據庫和Target數據庫之間所選表中的數據。這意味著我們需要輸入唯一的代理鍵來比較表。為了加快比較過程,我們還需要在該鍵上創建一個索引。并且還需要為每個復制表添加一個計算字段,以便為每一行計算CHECKSUM。
同樣重要的是,選擇數據的固定部分,例如一次(每次迭代)一次特定數量的行。
因此,我們需要執行以下步驟:
現在,讓我們使用為雇用員工而創建的JobEmpl數據庫詳細查看每個步驟。
我們只需要復制Employee和JobHistory表。
從腳本中,您可以看到它必須在源JobEmpl數據庫上運行,并且應該在@src和@sch變量中相應地指定源數據庫和架構。@sql變量對于構建動態SQL是必需的,同時,@ name對于保存復制表的名稱也是必需的。
首先,我們將復制的表名稱收集到臨時#tbl表中。接下來,我們使用光標遍歷每個表名,并將表名提取到@name變量中。之后,對于每個表,將形成非IDENTITY類型的列列表,并將結果插入帶有“ +”號的@listcols變量中。
值得一提的是,首先,首先使用CAST函數將每個表名轉換為NVACHAR(MAX)類型,然后使用COALESCE函數([<ColumnName>],N'')。從每一行的所有列值中形成一個字符串。
接下來,將創建計算出的CheckSumVal字段,REPL_GUID字段及其唯一的indREPL_GUID索引。
復制的表也位于此處,對于每個表,都將刪除indREPL_GUID索引以及REPL_GUID和CheckSumVal列。
在我們的例子中,創建了以下T-SQL代碼。
DROP INDEX [indREPL_GUID] ON [dbo].[Employee]; ALTER TABLE [dbo].[Employee] DROP CONSTRAINT [Employee_DEF_REPL_GUID], COLUMN [CheckSumVal], COLUMN [REPL_GUID]; DROP INDEX [indREPL_GUID] ON [dbo].[JobHistory]; ALTER TABLE [dbo].[JobHistory] DROP CONSTRAINT [JobHistory_DEF_REPL_GUID], COLUMN [CheckSumVal], COLUMN [REPL_GUID];現在,根據上述算法的第二步,創建一個新的JobEmplRead數據庫來接收數據。然后,我們同步復制表的架構。要執行同步,請使用DbForge架構比較工具:選擇JobEmpl作為數據源,選擇jobEmplRead作為數據目標。
圖-選擇數據庫進行模式同步
然后按“ 比較”按鈕。完成用于比較的元數據創建過程后,選擇所需的表并開始配置數據庫同步過程。
圖-選擇用于模式同步的表
接下來,我們選擇默認值–腳本生成。
現在讓我們清除備份創建選項。
接下來,取消選中所有依賴項,因為我們不需要創建其他對象。并且我們稍后將在生成的模式同步腳本中手動刪除外鍵。
現在按“ 同步”按鈕,并忽略“ 摘要”選項卡上的警告。
在生成的腳本中刪除以下外鍵:更多內容歡迎持續關注我們后續的教程
想了解更多產品信息或想要購買產品正版授權請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: