SQLServer Replication 创建技巧
SQLServer的Replication技术从2005开始,已经变得非常成熟了,而且效果也很好,很多的公司在做读写分离时,都选择了这项技术;Replication现在包括事务、 合并和快照三种,每项都有各自的应用优势,大家用得最多的无疑是事物复制了,这种技术能保证我们发布
SQLServer的Replication技术从2005开始,已经变得非常成熟了,而且效果也很好,很多的公司在做读写分离时,都选择了这项技术;Replication现在包括事务、
合并和快照三种,每项都有各自的应用优势,大家用得最多的无疑是事物复制了,这种技术能保证我们发布端的数据的变更能及时传输到订阅端,网络带宽和服务器配置
如果不差的话,两台机器之间的数据延时是非常小的,这为我们的读写分离技术提供了有力的保障(很少出现用户刚刚新加的数据查不到的现象),不仅分散了读写的压
力,而且在做机器维护时也游刃有余,并且用户体验也得到了比较好的提升,下面我们以事务复制为例,来介绍下创建复制链的技巧。
创建Replication有三种方法:
方法一:使用备份还原的技术
这个方法对数据量比较大,而且停机时间要求非常紧的数据库复制是很好的选择,实现方式很简单,就是在停站的情况下,把我们的发布端的数据库备份,
然后还原到订阅端,这样发布端和订阅端的数据是一致的;然后我们再将同步链建上即可。
不过,这个方法有个要求是,我们把数据还原到订阅端后,需要检查所有的表是否有自增列,如果有自增列,我们需要将自增列改为普通列,方式如下:
1. 在订阅端还原的数据库上查找自增列:
<p><span>--</span><span>查找数据库自增列</span><span><br></span><span>SELECT</span><span><br> 表名</span><span>=</span><span> D.NAME, <br> 列名</span><span>=</span><span> A.NAME,<br> 是否自增</span><span>=</span><span>CASE</span><span>WHEN</span><span>COLUMNPROPERTY</span><span>( A.ID,A.NAME, </span><span>'</span><span>ISIDENTITY </span><span>'</span><span>)</span><span>=</span><span>1</span><span>THEN</span><span>'</span><span>√</span><span>'</span><span>ELSE</span><span>''</span><span>END</span><span>,<br> 主键</span><span>=</span><span>CASE</span><span>WHEN</span><span>EXISTS</span><span>(</span><span>SELECT</span><span>1</span><span>FROM</span><span> SYSOBJECTS </span><span>WHERE</span><span> XTYPE</span><span>=</span><span>'</span><span>PK </span><span>'</span><span>AND</span><span> PARENT_OBJ</span><span>=</span><span>A.ID </span><span>AND</span><span> NAME </span><span>IN</span><span> (<br> </span><span>SELECT</span><span> NAME </span><span>FROM</span><span> SYSINDEXES </span><span>WHERE</span><span> INDID </span><span>IN</span><span>(<br> </span><span>SELECT</span><span> INDID </span><span>FROM</span><span> SYSINDEXKEYS </span><span>WHERE</span><span> ID </span><span>=</span><span> A.ID </span><span>AND</span><span> COLID</span><span>=</span><span>A.COLID))) </span><span>THEN</span><span>'</span><span>√</span><span>'</span><span>ELSE</span><span>''</span><span>END</span><span><br> </span><span>FROM</span><span> SYSCOLUMNS A<br> </span><span>LEFT</span><span>JOIN</span><span> SYSTYPES B </span><span>ON</span><span> A.XUSERTYPE</span><span>=</span><span>B.XUSERTYPE<br> </span><span>INNER</span><span>JOIN</span><span> SYSOBJECTS D </span><span>ON</span><span> A.ID</span><span>=</span><span>D.ID </span><span>AND</span><span> D.XTYPE</span><span>=</span><span>'</span><span>U</span><span>'</span><span>AND</span><span> D.NAME </span><span></span><span>'</span><span>DTPROPERTIES </span><span>'</span><span><br> </span><span>where</span><span>COLUMNPROPERTY</span><span>( A.ID,A.NAME, </span><span>'</span><span>ISIDENTITY </span><span>'</span><span>)</span><span>=</span><span>1</span></p>
结果如下:
2. 将自增列修改成普通列:
方法是先重名了这些表,然后新建同名的表,表结构一样,但是去掉自增列属性,然后将重命名的表数据导入到新表中,完成后我们就得到了没有自增列
的表,然后就可以创建同步链了。
方法二:BCP和TableDiff
BCP结合TableDiff在我们为已有的同步链添加新表,而且要求发布端必须保持在线,并对发布端业务影响最小时是非常好的方法,它的实现步骤如下:
1. 将需要新加到同步链的表结构新建到订阅端;
2. 在发布端准备好BCP导出导入脚本,并将要新加的表通过BCP导出到文件中;
3. 将新表加入到同步链中(可以通过脚本,也可以直接通过可视化界面操作),暂停这条链上同步数据的JOB;
4. 运行BCP导入脚本,将数据导入到订阅端;
5. 用TableDiff比较新表在订阅端和发布端的数据,并补齐差异数据(TableDiff 比较后会自动生成不起差异数据的脚本,在订阅端运行即可);
6. 开启暂停的同步链的JOB,这样就完成了。
整个过程对系统业务影响非常小。
方法三:直接初始化快照
这种方式是最简单的,但是对业务影响非常大,而且耗时也很长,基本不推荐(不过这个方法很多人在用,如果是很小的库还是可以考虑)。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

导入步骤如下:将 MDF 文件复制到 SQL Server 的数据目录(通常为 C:\Program Files\Microsoft SQL Server\MSSQL\DATA)。在 SQL Server Management Studio(SSMS)中,打开数据库并选择“附加”。单击“添加”按钮,选择 MDF 文件。确认数据库名称,点击确定按钮即可。

对于 SQL Server 数据库中已存在同名对象,需要采取以下步骤:确认对象类型(表、视图、存储过程)。如果对象为空,可使用 IF NOT EXISTS 跳过创建。如果对象有数据,使用不同名称或修改结构。使用 DROP 删除现有对象(谨慎操作,建议备份)。检查架构更改,确保没有引用删除或重命名的对象。

当 SQL Server 服务无法启动时,可采取以下步骤解决:检查错误日志以确定根本原因。确保服务帐户具有启动服务的权限。检查依赖项服务是否正在运行。禁用防病毒软件。修复 SQL Server 安装。如果修复不起作用,重新安装 SQL Server。

要查看 SQL Server 端口号:打开 SSMS,连接到服务器。在对象资源管理器中找到服务器名称,右键单击它,然后选择“属性”。在“连接”选项卡中,查看“TCP 端口”字段。

SQL Server 数据库文件通常存储在以下默认位置:Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data可通过修改数据库文件路径设置来自定义数据库文件位置。

若误删 SQL Server 数据库,可采取以下步骤恢复:停止数据库活动;备份日志文件;检查数据库日志;恢复选项:从备份恢复;从事务日志恢复;使用 DBCC CHECKDB;使用第三方工具。请定期备份数据库并启用事务日志以防止数据丢失。

如果 SQL Server 安装失败,可通过以下步骤清理:卸载 SQL Server删除注册表项删除文件和文件夹重启计算机

SQL Server 英文安装可通过以下步骤更改为中文:下载相应语言包;停止 SQL Server 服务;安装语言包;更改实例语言;更改用户界面语言;重启应用程序。
