最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL SERVER 開(kāi)啟CDC 實(shí)操詳細(xì)

 更新時(shí)間:2021年10月19日 09:06:13   作者:拼命十三郎  
這篇文章主要個(gè)代價(jià)介紹SQL SERVER CDC開(kāi)啟實(shí)操詳細(xì)內(nèi)容,文明芝麻官內(nèi)容有詳細(xì)代碼及解說(shuō),需要的小伙伴可以參考一下

1. 環(huán)境檢查

1.1 版本檢查

SELECT @@VERSION;


Microsoft SQL Server 2016 (SP2-GDR)

1.2 檢查CDC服務(wù)開(kāi)啟狀態(tài)

select is_cdc_enabled from sys.databases where name='dbname';
--0為關(guān)閉,1為開(kāi)啟。數(shù)據(jù)庫(kù)名為dbname

2. 開(kāi)啟CDC

2.1 開(kāi)啟SQL server agent服務(wù)

sp_configure 'show advanced options', 1;
GO -- 2.1.1
RECONFIGURE;
GO -- 2.1.2
sp_configure 'Agent XPs', 1;
GO -- 2.1.3
RECONFIGURE
GO -- 2.1.4

2.2 開(kāi)啟數(shù)據(jù)庫(kù)級(jí)別的CDC功能

ALTER AUTHORIZATION ON DATABASE::[dbname] TO [sa];
-- 2.2.1 變更為sa的權(quán)限,數(shù)據(jù)庫(kù)名為dbname
if exists(select 1 from sys.databases where name='dbname' and is_cdc_enabled=0)
begin
    exec sys.sp_cdc_enable_db
end
;
-- 2.2.2 開(kāi)啟語(yǔ)句
select is_cdc_enabled from sys.databases where name='dbname';
-- 2.2.3 檢查是否開(kāi)啟成功,為1則開(kāi)啟
/* -- 本段注釋可不看
或者
USE ERP
GO  
-- 開(kāi)啟:
EXEC sys.sp_cdc_enable_db  
-- 關(guān)閉:
EXEC sys.sp_cdc_disable_db
GO  
 
注釋: 如果在禁用變更數(shù)據(jù)捕獲時(shí)為數(shù)據(jù)庫(kù)定義了很多捕獲實(shí)例,則長(zhǎng)時(shí)間運(yùn)行事務(wù)可能導(dǎo)致 sys.sp_cdc_disable_db 的執(zhí)行失敗。
通過(guò)在運(yùn)行 sys.sp_cdc_disable_db 之前使用 sys.sp_cdc_disable_table 禁用單個(gè)捕獲實(shí)例,可以避免此問(wèn)題。
 
示例:
 
USE AdventureWorks2012; 
GO 
EXECUTE sys.sp_cdc_disable_table 
@source_schema = N'HumanResources', 
@source_name = N'Employee', 
@capture_instance = N'HumanResources_Employee';
*/


2.3 添加CDC專用的文件組和文件

SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('dbname');
-- 2.3.1 查詢dbname庫(kù)的物理文件
ALTER DATABASE dbname ADD FILEGROUP CDC1;
-- 2.3.2 為該庫(kù)添加名為CDC1的文件組
ALTER DATABASE dbname
ADD FILE
(
  NAME= 'dbname_CDC1',
  FILENAME = 'D:\DATA\dbname_CDC1.ndf'
)
TO FILEGROUP CDC1;
-- 2.3.3 將新增文件,并映射到文件組。重復(fù)2.3.1查詢操作


2.4 開(kāi)啟表級(jí)別CDC

SELECT name,is_tracked_by_cdc FROM sys.tables WHERE  is_tracked_by_cdc = 0;
-- 2.4.1 查詢未開(kāi)啟的表
IF EXISTS(SELECT 1 FROM sys.tables WHERE name='AccountBase' AND is_tracked_by_cdc = 0)
BEGIN
    EXEC sys.sp_cdc_enable_table
        @source_schema = 'dbo', -- source_schema
        @source_name = 'AccountBase', -- table_name
        @capture_instance = NULL, -- capture_instance
        @supports_net_changes = 1, -- supports_net_changes
        @role_name = NULL, -- role_name
        @index_name = NULL, -- index_name
        @captured_column_list = NULL, -- captured_column_list
        @filegroup_name = 'CDC1' -- filegroup_name
END;
-- 2.4.2 為dbname.dbo.AccountBase開(kāi)啟表級(jí)別CDC,文件組為CDC1
DECLARE @tableName nvarchar(36)  -- 聲明變量
DECLARE My_Cursor CURSOR --定義游標(biāo)
    FOR (SELECT 'new_srv_workorderBase' name
union select 'tablename1'
union select 'tablename2'
union select 'tablename3'
 ) --查出需要的集合放到游標(biāo)中
OPEN My_Cursor; --打開(kāi)游標(biāo)
FETCH NEXT FROM My_Cursor INTO @tableName;
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC sys.sp_cdc_enable_table
         @source_schema = 'dbo', -- source_schema
         @source_name = @tableName, -- table_name
         @capture_instance = NULL, -- capture_instance
         @supports_net_changes = 1, -- supports_net_changes
         @role_name = NULL, -- role_name
         @index_name = NULL, -- index_name
         @captured_column_list = NULL, -- captured_column_list
         @filegroup_name = 'CDC1' -- filegroup_name;
    FETCH NEXT FROM My_Cursor INTO @tableName;
END
CLOSE My_Cursor; --關(guān)閉游標(biāo)
DEALLOCATE My_Cursor; --釋放游標(biāo)
-- 2.4.3 游標(biāo)批量開(kāi)啟表
SELECT name,is_tracked_by_cdc FROM sys.tables WHERE  is_tracked_by_cdc = 1 ORDER BY NAME;
-- 2.4.4 查詢已開(kāi)啟的表


2.5 單表開(kāi)啟測(cè)試范例(僅供參考,可略過(guò))

create table test_hht
(id varchar(36) not null primary key,
city_name varchar(20),
userid bigint,
useramount decimal(18,6),
ismaster bit,
createtime datetime default getdate()); -- 測(cè)試表test_hht
IF EXISTS(SELECT 1 FROM sys.tables WHERE name='test_hht' AND is_tracked_by_cdc = 0)
BEGIN
    EXEC sys.sp_cdc_enable_table
        @source_schema = 'dbo', -- source_schema
        @source_name = 'test_hht', -- table_name
        @capture_instance = NULL, -- capture_instance
        @supports_net_changes = 1, -- supports_net_changes
        @role_name = NULL, -- role_name
        @index_name = NULL, -- index_name
        @captured_column_list = NULL, -- captured_column_list
        @filegroup_name = 'CDC1' -- filegroup_name
END; -- 開(kāi)啟表級(jí)別CDC
insert into test_hht(id,city_name,userid,useramount,ismaster)values('1','wuhan',     10,1000.25,1);
insert into test_hht(id,city_name,userid,useramount,ismaster)values('1A','xiangyang',11,11000.35,0);
insert into test_hht(id,city_name,userid,useramount,ismaster)values('1B','yichang',  12,12000.45,0); -- 插入數(shù)據(jù)測(cè)試
select *  from dbname.dbo.test_hht; -- 數(shù)據(jù)表
SELECT * FROM [cdc].[dbo_test_hht_CT]; -- CDC日志表

2.6 開(kāi)啟成功說(shuō)明

dbname庫(kù)出現(xiàn)cdc模式,并有CT系列表。

/*
cdc.<capture_instance>_CT   可以看到,這樣命名的表,是用于記錄源表更改的表。

對(duì)于insert/delete操作,會(huì)有對(duì)應(yīng)的一行記錄,而對(duì)于update,會(huì)有兩行記錄。
對(duì)于__$operation列:1 = 刪除、2= 插入、3= 更新(舊值)、4= 更新(新值)
對(duì)于__$start_lsn列:由于更改是來(lái)源與數(shù)據(jù)庫(kù)的事務(wù)日志,所以這里會(huì)保存其事務(wù)日志的開(kāi)始序列號(hào)(LSN)
*/

2.7 DDL操作:DDL操作需要重新收集表的信息(以測(cè)試表test_hht為例)

alter  table test_hht add   product_count decimal(18,2);
-- 2.7.1 增加新的一列測(cè)試
insert into test_hht(id,city_name,userid,useramount,ismaster,product_count)values('2','wuhan',     20,2000.25,1,2.5);
-- 2.7.2 插入數(shù)據(jù)測(cè)試
SELECT * FROM [cdc].[dbo_test_hht_CT];
-- 2.7.3 CT表無(wú)新的一列,CDC正常捕獲到之前的列變化
EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo'
,@source_name = 'test_hht'
,@capture_instance ='dbo_test_hht_v2' -- 給一個(gè)新的名字
,@supports_net_changes = 1
,@role_name = NULL
,@index_name = NULL
,@captured_column_list = NULL
,@filegroup_name = 'CDC1';
-- 2.7.4 為表dbo.test_hht開(kāi)啟一個(gè)新的CDC捕獲
insert into test_hht(id,city_name,userid,useramount,ismaster,product_count)values('2A','xiangyang',21,121000.35,0,12.5);
-- 2.7.5 插入數(shù)據(jù)測(cè)試
EXEC sys.sp_cdc_disable_table @source_schema = 'dbo',@source_name = 'test_hht', @capture_instance = 'dbo_test_hht';
-- 2.7.6 SQL SERVER最多允許兩個(gè)捕獲表,所以多次改變時(shí)需要先禁用之前的表

3. 關(guān)閉CDC

EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo'
,@source_name = 'test_hht'
,@capture_instance ='dbo_test_hht_v2'
-- 3.1 單表禁用
USE dbname
GO
EXEC sys.sp_cdc_disable_db
GO
-- 3.2 全庫(kù)禁用(禁用后cdc的模式消失)

到此這篇關(guān)于SQL SERVER CDC開(kāi)啟實(shí)操詳細(xì)的文章就介紹到這了,更多相關(guān)SQL SERVER CDC開(kāi)啟實(shí)操內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Sql Server基本函數(shù)

    Sql Server基本函數(shù)

    Sql Server基本函數(shù)...
    2006-08-08
  • SQLServer數(shù)據(jù)庫(kù)從高版本降級(jí)到低版本實(shí)例詳解

    SQLServer數(shù)據(jù)庫(kù)從高版本降級(jí)到低版本實(shí)例詳解

    這篇文章主要介紹了SQLServer數(shù)據(jù)庫(kù)從高版本降級(jí)到低版本實(shí)例詳解的相關(guān)資料,在工程項(xiàng)目需要遷移的時(shí)候,偶爾會(huì)用到這樣的知識(shí),需要的朋友可以參考下
    2016-12-12
  • sqlserver 行列互轉(zhuǎn)實(shí)現(xiàn)小結(jié)

    sqlserver 行列互轉(zhuǎn)實(shí)現(xiàn)小結(jié)

    列轉(zhuǎn)行比較經(jīng)典,需要的朋友可以參考下。
    2010-04-04
  • sql 中 case when 語(yǔ)法使用方法

    sql 中 case when 語(yǔ)法使用方法

    sql語(yǔ)言中有沒(méi)有類似C語(yǔ)言中的switch case的語(yǔ)句?
    2010-05-05
  • 公網(wǎng)遠(yuǎn)程訪問(wèn)局域網(wǎng)SQL Server數(shù)據(jù)庫(kù)

    公網(wǎng)遠(yuǎn)程訪問(wèn)局域網(wǎng)SQL Server數(shù)據(jù)庫(kù)

    數(shù)據(jù)庫(kù)的重要性相信大家都有所了解,在某些場(chǎng)景下,數(shù)據(jù)庫(kù)已經(jīng)成為企業(yè)正常運(yùn)行必不可少的條件之一。與企業(yè)的其他工作一樣,數(shù)據(jù)庫(kù)也需要進(jìn)行必要的維護(hù),想詳細(xì)了解的同學(xué)可以參考這篇文章
    2023-04-04
  • 解析SQLServer任意列之間的聚合

    解析SQLServer任意列之間的聚合

    這里介紹一個(gè)通過(guò)xml合并列并轉(zhuǎn)為行集后直接用聚合函數(shù)求值的方法,測(cè)試用例和代碼如下
    2013-06-06
  • SQL Server 觸發(fā)器實(shí)例詳解

    SQL Server 觸發(fā)器實(shí)例詳解

    觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,它不同于之前的我們介紹的存儲(chǔ)過(guò)程。觸發(fā)器主要是通過(guò)事件進(jìn)行觸發(fā)被自動(dòng)調(diào)用執(zhí)行的,接下來(lái)本文通過(guò)實(shí)例詳解sqlserver觸發(fā)器,對(duì)sqlserver觸發(fā)器相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Android實(shí)現(xiàn)矩形區(qū)域截屏的方法

    Android實(shí)現(xiàn)矩形區(qū)域截屏的方法

    對(duì)屏幕進(jìn)行截屏并裁剪有兩種方式:早截圖和晚截圖,對(duì)于早截圖和晚截圖的概念大家通過(guò)本文詳解學(xué)習(xí)。本文重點(diǎn)給大家介紹android實(shí)現(xiàn)矩形區(qū)域截屏的方法,需要的朋友參考下
    2017-01-01
  • Windows故障轉(zhuǎn)移群集 和 SQLServer AlwaysOn 配置搭建詳細(xì)教程

    Windows故障轉(zhuǎn)移群集 和 SQLServer AlwaysOn 配置搭建詳

    這篇文章主要介紹了Windows故障轉(zhuǎn)移群集 和 SQLServer AlwaysOn 搭建教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Sql Server觸發(fā)器的使用

    Sql Server觸發(fā)器的使用

    觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,不能被顯式調(diào)用,只能在對(duì)表進(jìn)行insert、update、delete操作時(shí)被自動(dòng)激活。所以觸發(fā)器可以用來(lái)實(shí)現(xiàn)對(duì)表進(jìn)行復(fù)雜的完整性約束
    2012-12-12

最新評(píng)論

斗六市| 涟源市| 诸城市| 陆丰市| 遂平县| 淮滨县| 仁寿县| 莫力| 闻喜县| 开封市| 合山市| 屯昌县| 禄劝| 隆尧县| 桃园市| 铁岭县| 阜康市| 周至县| 香格里拉县| 青龙| 广汉市| 桂林市| 辽中县| 松原市| 纳雍县| 平阴县| 奎屯市| 上栗县| 饶阳县| 广水市| 镇巴县| 公主岭市| 曲阳县| 香河县| 奉新县| 周宁县| 开阳县| 格尔木市| 长岛县| 佛冈县| 江永县|