Docker下SqlServer發(fā)布訂閱啟用的方法
一、準(zhǔn)備一個(gè)Docker的sqlserver
#創(chuàng)建掛載數(shù)據(jù)文件夾 mkdir -p /home/mssql/data #創(chuàng)建掛載日志文件夾 mkdir /home/mssql/log #給文件夾權(quán)限 chmod 777 /home/mssql/data chmod 777 /home/mssql/log #創(chuàng)建mssql的docker容器 docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=sa123456." -e "MSSQL_AGENT_ENABLED=true" -p 1433:1433 --name mssql -h mssql \ -v /home/mssql/data:/var/opt/mssql/data \ -v /home/mssql/log:/var/opt/mssql/log \ -d mcr.microsoft.com/mssql/server:latest
安裝完通過SqlServer Management能連上了

二、配置分發(fā)服務(wù)器
這里分發(fā)服務(wù)器也是用數(shù)據(jù)庫服務(wù)器充當(dāng),實(shí)際項(xiàng)目中如果有多余服務(wù)器可以用另外的服務(wù)器
1、創(chuàng)建發(fā)布服務(wù)器存快照的文件夾
#進(jìn)入docker docker exec -it mssql bin/bash #創(chuàng)建快照文件夾 mkdir /var/opt/mssql/ReplData #給權(quán)限 chmod 777 /var/opt/mssql/ReplData #退出容器 exit
2、錯誤的配置分發(fā)服務(wù)器做法
這里不要用數(shù)據(jù)庫管理工具上面的配置分發(fā)服務(wù)器,下面的是錯誤的做法

如果直接在界面配置的分發(fā)服務(wù)器,雖然能成功,但下發(fā)創(chuàng)建本地發(fā)布的時(shí)候會報(bào)"必須先將 xxx 作為發(fā)布服務(wù)器啟用,然后才能創(chuàng)建發(fā)布。在下列對話框中,將此服務(wù)器作為發(fā)布服務(wù)器啟用"

3、正確配置分發(fā)服務(wù)器方法
1 )查詢數(shù)據(jù)庫的所在docker的hostname
select @@servername

2)創(chuàng)建分發(fā)數(shù)據(jù)庫
在數(shù)據(jù)庫中執(zhí)行
在數(shù)據(jù)庫中執(zhí)行
use master GO EXEC sp_adddistributor @distributor = N'mssql' GO EXEC sp_adddistributiondb @database = N'distribution', @data_folder = N'/var/opt/mssql/data', @log_folder = N'/var/opt/mssql/data', @log_file_size = 2, @min_distretention = 0, @max_distretention = 72, @history_retention = 48, @deletebatchsize_xact = 5000, @deletebatchsize_cmd = 2000, @security_mode = 1,@password='sa123456.' GO SELECT name, create_date FROM sys.databases GO
@distributor:上面查出的數(shù)據(jù)庫的hostname
@database:分發(fā)數(shù)據(jù)庫名稱
其他參數(shù)代表什么意思在這里查看:https://learn.microsoft.com/zh-cn/SQL/relational-databases/system-stored-procedures/sp-adddistributiondb-transact-sql?view=sql-server-ver16
3)創(chuàng)建分發(fā)服務(wù)器
在數(shù)據(jù)庫中執(zhí)行
USE [distribution]
IF (NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'UIProperties' AND type = 'U '))
CREATE TABLE UIProperties(id INT)
GO
IF (EXISTS (SELECT * FROM ::fn_listextendedproperty('SnapshotFolder', 'user', 'dbo', 'table', 'UIProperties', null, null)))
EXEC sp_updateextendedproperty N'SnapshotFolder', N'/var/opt/mssql/ReplData', 'user', dbo, 'table', 'UIProperties'
ELSE
EXEC sp_addextendedproperty N'SnapshotFolder', N'/var/opt/mssql/ReplData', 'user', dbo, 'table', 'UIProperties'
GO
EXEC sp_adddistpublisher @publisher = N'mssql', @distribution_db = N'distribution', @security_mode = 1,
@working_directory = N'/var/opt/mssql/ReplData', @trusted = N'false', @thirdparty_flag = 0,
@publisher_type = N'MSSQLSERVER'@publisher:上面的hostname
@distribution_db:分發(fā)數(shù)據(jù)庫名稱
復(fù)制
/var/opt/mssql/ReplData:這個(gè)路徑為上面創(chuàng)建的路徑
執(zhí)行完就創(chuàng)建成功分發(fā)服務(wù)器了,能看到復(fù)制文件夾多出了一些菜單了

三、建數(shù)據(jù)庫發(fā)布
1、準(zhǔn)備數(shù)據(jù)庫
這里創(chuàng)建一個(gè)數(shù)據(jù)庫 MyDb(主庫)和創(chuàng)建一個(gè)數(shù)據(jù)庫MyDbSlaver(從庫,不建表,通過主庫的快照同步)
如果是實(shí)際項(xiàng)目中,數(shù)據(jù)庫的數(shù)據(jù)量已經(jīng)很大的情況下,建議從庫從主庫還原一份,不要通過快照同步,因?yàn)檫@個(gè)過程會占服務(wù)器的cpu很高,會影響到服務(wù)器
然后給MyDb(主庫)創(chuàng)建一個(gè)表測試用
CREATE TABLE SysUser (
ID INT PRIMARY KEY,
UserName NVARCHAR(50),
Age INT
);
2、新建發(fā)布


選擇事務(wù)發(fā)布,如想用其它發(fā)布類型,看對應(yīng)說明

全部勾選







成功創(chuàng)建發(fā)布

四、創(chuàng)建數(shù)據(jù)庫訂閱
1、創(chuàng)建訂閱







創(chuàng)建訂閱成功

創(chuàng)建訂閱成功后能看到從庫把主庫的表也同步過來了

2、驗(yàn)證效果
在MyDb操作的數(shù)據(jù),在從庫MyDbSlaver查到的結(jié)果是一樣的

到此這篇關(guān)于Docker下SqlServer發(fā)布訂閱啟用的方法的文章就介紹到這了,更多相關(guān)Docker SqlServer發(fā)布訂閱啟用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS 7下設(shè)置Docker代理(Linux下Systemd服務(wù)的環(huán)境變量配置)
本文給大家分享Linux下Systemd服務(wù)的環(huán)境變量配置方法,此示例將覆蓋默認(rèn)docker.service文件,對CentOS 7下設(shè)置Docker代理的相關(guān)知識感興趣的朋友跟隨小編一起看看吧2021-05-05
Docker Compose實(shí)現(xiàn)一鍵部署前后端分離項(xiàng)目的完整指南
這篇文章主要為大家詳細(xì)介紹了Docker Compose實(shí)現(xiàn)一鍵部署前后端分離項(xiàng)目的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-02-02
docker如何快速搭建幾個(gè)常用的第三方服務(wù)詳解
這篇文章主要給大家介紹了關(guān)于利用docker如何快速搭建幾個(gè)常用的第三方服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
如何將Docker的構(gòu)建時(shí)間減少40%(推薦)
這篇文章主要介紹了如何將Docker的構(gòu)建時(shí)間減少40%,本文描述了我們在優(yōu)化CI管道后獲得的一些新見解,需要的朋友可以參考下2023-11-11
修改docker網(wǎng)橋網(wǎng)段范圍實(shí)現(xiàn)方式
文章介紹了如何修改Docker默認(rèn)的172.17.0.0/16網(wǎng)橋網(wǎng)段,以避免與局域網(wǎng)沖突,提供了兩種方法:一種是修改Docker配置文件并重啟服務(wù),另一種是創(chuàng)建自定義網(wǎng)絡(luò)并指定子網(wǎng)范圍,同時(shí),還提到了一些參考命令,如查看docker0網(wǎng)橋信息和刪除docker0網(wǎng)橋2025-12-12
windows系統(tǒng)下如何修改docker的鏡像存儲地址
對于希望調(diào)整Docker鏡像存儲位置的用戶,在Windows環(huán)境下可以編輯特定配置文件實(shí)現(xiàn)這一需求,這篇文章主要介紹了windows系統(tǒng)下如何修改docker的鏡像存儲地址的相關(guān)資料,需要的朋友可以參考下2025-03-03
Docker安裝Jenkins的實(shí)現(xiàn)步驟
版本與jdk版本以及各類插件有對應(yīng)關(guān)系,所以普通安裝較為麻煩,本文主要介紹了Docker安裝Jenkins的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

