dbForge SQL Complete是一款用于Microsoft SQL Server Management Studio和Microsoft Visual Studio的功能强大的插件。SQL代码格式化程序(免费版和高级付费版)能够提供可以取代原生的Microsoft T-SQL Intellisense特性的T-SQL代码自动实现和格式化功能。
通常,需要创建SQL Server数据库的只读副本。例如,出于分离分析任务和操作任务的目的,可能需要这样做。第一个导致数据库上的高负载,为了减少负载,创建了主数据库的副本以执行分析性只读查询。
通常,可以使用内置DBMS工具创建以下只读副本:
- 日志传送
- SQL Server复制
- AlwaysOn可用性组。
但是,如果您不需要整个数据库,而只需要其中的几个表怎么办这种情况下,您可以自己创建复制。只要数据采样是主要目标,那么一个方向(主从)的数据库复制就足够了。可以使用包括SSIS和.NET在内的几种方法来执行这种复制。
SQL Complete是帮助我构建这些脚本的主要工具。该工具还允许代码格式化以及重命名对象及其所有引用。
使用T-SQL在一个方向上创建SQL Server复制
首先,让我们描述此复制的主要原理和算法。在每次迭代期间,我们需要比较Source数据库和Target数据库之间所选表中的数据。这意味着我们需要输入唯一的代理键来比较表。为了加快比较过程,我们还需要在该键上创建一个索引。并且还需要为每个复制表添加一个计算字段,以便为每一行计算CHECKSUM。
同样重要的是,选择数据的固定部分,例如一次(每次迭代)一次特定数量的行。
因此,我们需要执行以下步骤:
- 在源表上,创建一个REPL_GUID列和一个唯一的REPL_GUID索引,以在源表和目标表之间建立一对一的关系。您还应该创建一个计算出的CheckSumVal列,该列将为每一行计算CHECKSUM值。
- 创建一个名为Target的新目标数据库。
- 跨源数据库和目标数据库同步复制表的架构,并删除对不存在对象的所有引用。
- 禁用目标数据库的外键。
- 运行复制并监视源数据库和目标数据库之间有多少行不同。
现在,让我们使用为雇用员工而创建的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作为数据目标。

图-选择数据库进行模式同步
然后按“ 比较”按钮。完成用于比较的元数据创建过程后,选择所需的表并开始配置数据库同步过程。

图-选择用于模式同步的表
接下来,我们选择默认值–脚本生成。

图-选择脚本生成作为同步输出
现在让我们清除备份创建选项。
接下来,取消选中所有依赖项,因为我们不需要创建其他对象。并且我们稍后将在生成的模式同步脚本中手动删除外键。

图6取消选择所有依赖项
现在按“ 同步”按钮,并忽略“ 摘要”选项卡上的警告。
在生成的脚本中删除以下外键:
- FK_JobHistory_Company_CompanyID
- FK_JobHistory_Position_PositionID
- FK_JobHistory_Project_ProjectID
更多内容欢迎持续关注我们后续的教程
想了解更多产品信息或想要购买产品正版授权请点击【咨询在线客服】
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!