Error 2812: Could not find stored procedure附加數據庫會攜帶**復制相關系統表**(12 表 + 1 視圖),但服務器級復制元數據(sysservers、分發庫等)不存在,導致系統存儲過程調用失敗。
| 系統表/視圖 | 有數據 | 復制必需 |
|---|---|---|
| MSpeer_lsns | 否 | 否 |
| MSpeer_request | 否 | 否 |
| MSpeer_response | 否 | 否 |
| Mspub_identity_range | 否 | 否 |
| Sysarticlecolumns | 是 | 是 |
| Sysarticles | 是 | 是 |
| Sysarticlesupdates | 否 | 是 |
| syspublications | 是 | 是 |
| Sysreplservers | 是 | 是 |
| Sysschemaarticles | 否 | 是 |
| Syssubscriptions | 是 | 是 |
| systranschemas | 否 | 否 |
| sysextendedarticlesview (視圖) | 否 | 是 |
SELECT * FROM sysreplservers;
-- 結果:
-- Srvname Srvid
-- OLD_SERVER 0
此表記錄舊發布服務器名稱,導致新建發布時系統存儲過程邏輯混亂。
DELETE FROM sysreplservers;
-- SSMS 或 T-SQL 創建任意發布
-- 然後刪除該發布
-- 再次查看系統表,應僅剩結構無數據
SELECT * FROM sysarticles; -- 空
SELECT * FROM syspublications; -- 空
USE DB1;
GO
-- 1. 刪除復制相關系統表數據(保留表結構)
DELETE FROM syssubscriptions;
DELETE FROM sysarticles;
DELETE FROM sysarticlecolumns;
DELETE FROM syspublications;
DELETE FROM sysreplservers;
DELETE FROM Sysschemaarticles;
DELETE FROM Sysarticlesupdates;
DELETE FROM Mspub_identity_range;
DELETE FROM MSpeer_lsns;
DELETE FROM MSpeer_request;
DELETE FROM MSpeer_response;
DELETE FROM systranschemas;
-- 2. 刪除視圖(可選)
-- DROP VIEW sysextendedarticlesview;
-- 3. 刪除復制相關觸發器(如有)
SELECT 'DROP TRIGGER ' + name + ';'
FROM sysobjects
WHERE type = 'TR' AND name LIKE 'MSsync%' OR name LIKE 'sp_MS%';
-- 複製輸出的語句執行
sp_removedbreplication 'DB1' 徹底移除復制標記BACKUP/RESTORE 替代附加,可通過 KEEP_REPLICATION 選項控制-- 重新創建發布應無報錯
-- 檢查錯誤日誌無 2812 相關條目