บันทึกธุรกรรมจะไม่ย่อลง DB คิดว่ามันกำลังจำลองข้อมูล


13

ฉันมีฐานข้อมูล SQL Server 2008 R2 Express ที่ใช้ Kaspersky Security Center และฉันไม่รู้ว่าเกิดอะไรขึ้นกับการติดตั้ง แต่ฐานข้อมูลดูเหมือนจะคิดว่ามันกำลังถูกจำลองแบบและจะไม่เพิ่มพื้นที่ว่างจากบันทึกธุรกรรม เช่น:

USE master;

SELECT 
    name, log_reuse_wait, log_reuse_wait_desc, is_cdc_enabled 
FROM 
    sys.databases 
WHERE 
    name = 'KAV';

SELECT DATABASEPROPERTYEX('KAV', 'IsPublished');

ผลตอบแทน:

name | log_reuse_wait | log_reuse_wait_desc | is_cdc_enabled
-----|----------------|---------------------|---------------
KAV  | 6              | REPLICATION         | 0 
DATABASEPROPERTYEX('KAV', 'IsPublished')
----------------------------------------
0 [not published]

นอกจากนี้ยังไม่มีรายการในReplicationส่วนใน SSMS

จนถึงตอนนี้ฉันได้ลองดูสองสามข้อความที่รวบรวมจากผลลัพธ์ของ Google:

USE KAV;
EXEC sp_repldone null, null, 0,0,1;
EXEC sp_removedbreplication KAV;

แต่ฉันไม่มีโชคในการรับ DB นี้เพื่อหยุดคิดว่ามันถูกจำลองแบบ

sys.databasesข้อมูลเต็มรูปแบบ:

+-----------------------------------+------------------------------------------------------------+
| name                              | KAV                                                        |
| database_id                       | 5                                                          |
| source_database_id                | NULL                                                       |
| owner_sid                         | 0x0105000000000005150000004EB006B0C3554AB049CEA01BE8030000 |
| create_date                       | 2013-07-04 10:31:28.947                                    |
| compatibility_level               | 90                                                         |
| collation_name                    | Latin1_General_CI_AS                                       |
| user_access                       | 0                                                          |
| user_access_desc                  | MULTI_USER                                                 |
| is_read_only                      | 0                                                          |
| is_auto_close_on                  | 0                                                          |
| is_auto_shrink_on                 | 0                                                          |
| state state_desc                  | ONLINE                                                     |
| is_in_standby                     | 0                                                          |
| is_cleanly_shutdown               | 0                                                          |
| is_supplemental_logging_enabled   | 0                                                          |
| snapshot_isolation_state          | 1                                                          |
| snapshot_isolation_state_desc     | ON                                                         |
| is_read_committed_snapshot_on     | 1                                                          |
| recovery_model                    | 1                                                          |
| recovery_model_desc               | FULL                                                       |
| page_verify_option                | 2                                                          |
| page_verify_option_desc           | CHECKSUM                                                   |
| is_auto_create_stats_on           | 1                                                          |
| is_auto_update_stats_on           | 1                                                          |
| is_auto_update_stats_async_on     | 0                                                          |
| is_ansi_null_default_on           | 1                                                          |
| is_ansi_nulls_on                  | 1                                                          |
| is_ansi_padding_on                | 1                                                          |
| is_ansi_warnings_on               | 1                                                          |
| is_arithabort_on                  | 1                                                          |
| is_concat_null_yields_null_on     | 1                                                          |
| is_numeric_roundabort_on          | 0                                                          |
| is_quoted_identifier_on           | 1                                                          |
| is_recursive_triggers_on          | 0                                                          |
| is_cursor_close_on_commit_on      | 0                                                          |
| is_local_cursor_default           | 1                                                          |
| is_fulltext_enabled               | 1                                                          |
| is_trustworthy_on                 | 0                                                          |
| is_db_chaining_on                 | 0                                                          |
| is_parameterization_forced        | 0                                                          |
| is_master_key_encrypted_by_server | 0                                                          |
| is_published                      | 0                                                          |
| is_subscribed                     | 0                                                          |
| is_merge_published                | 0                                                          |
| is_distributor                    | 0                                                          |
| is_sync_with_backup               | 0                                                          |
| service_broker_guid               | 19C05AF5-8686-4C27-BF7E-93E240DA953B                       |
| is_broker_enabled                 | 0                                                          |
| log_reuse_wait                    | 6                                                          |
| log_reuse_wait_desc               | REPLICATION                                                |
| is_date_correlation_on            | 0                                                          |
| is_cdc_enabled                    | 0                                                          |
| is_encrypted                      | 0                                                          |
| is_honor_broker_priority_on       | 0                                                          |
+-----------------------------------+------------------------------------------------------------+

นอกจากนี้:

DBCC OPENTRAN;
No active open transactions.

DBCC SQLPERF(LOGSPACE);
KAV 171066  99.55339    0

EXEC sp_replcounters;
KAV 0   0   0   0x00000000000000000000  0x00000000000000000000

ฉันเพิ่งทำข้อมูลเต็มและสำรองข้อมูลบันทึก

ฉันได้พบกับโพสต์ไม่กี่สถานการณ์ที่คล้ายกันมากและวิธีแก้ปัญหาที่ได้รับคือการตั้งค่าการจำลองแบบการเผยแพร่และการกระจายแล้วลบอีกครั้ง อย่างไรก็ตามนี่เป็น Express Edition ตัวเลือกเหล่านี้จะไม่ปรากฏสำหรับฉัน

เราเป็นร้านค้าลีนุกซ์เป็นหลักและนี่เป็นอินสแตนซ์ SQL Server เดียวที่เรามี หากทุกคนล้มเหลวในการได้รับใบอนุญาตจริงอาจเป็นเพียงการขอความช่วยเหลือของเรา: การคืนค่าการสำรองข้อมูลไปยังอินสแตนซ์ที่ไม่ใช่ Express และลองตั้งค่าจากนั้นลบสิ่งพิมพ์ออก

คำตอบ:


5

โซลูชันสำหรับการกู้คืนฐานข้อมูลที่เผยแพร่

เราประสบปัญหาที่คล้ายกัน: ฐานข้อมูลที่เผยแพร่ถูกเก็บไว้ใน Server1 ทุกวันฐานข้อมูลนี้จะถูกสำรองและกู้คืนใน Server2

  • เราได้รับข้อความแสดงข้อผิดพลาดบ่อยครั้ง:

    เข้าสู่ระบบเต็มเนื่องจาก REPLICATION

  • log_reuse_wait_descREPLICATIONถูกกำหนดให้
  • ไม่สามารถลบการจำลองแบบได้เนื่องจากฐานข้อมูลนี้ไม่ได้เผยแพร่ใน Server2

วิธีการแก้

หลังจากเรียกคืนฐานข้อมูลให้เปิดใช้งานสิ่งพิมพ์และลบออก:

USE MyDatabase
GO
-- 1.) enable publication for MyDatabase
EXEC sp_replicationdboption 
  @dbname = 'MyDatabase', 
  @optname = N'publish', 
  @value = N'true';
GO
-- 2.) remove publication from database. Use the PUBLICATION-name (not database name)
sp_removedbreplication 'Publ_MyDatabase','both'

-- 3.) disable publication for MyDatabase
EXEC sp_replicationdboption 
  @dbname = 'MyDatabase', 
  @optname = N'publish', 
  @value = N'false';
GO

-- Verify: log_reuse_wait_desc should have changed from REPLICATION to NOTHING
SELECT name, log_reuse_wait_desc, * FROM sys.databases WHERE name = 'MyDatabase'

1

เป็นที่ยอมรับหรือไม่ที่จะหยุดทำงานในฐานข้อมูลนี้? นี่อาจเป็นคืนค่าจากฐานข้อมูลที่จำลองแบบหรืออาจเป็นสมาชิกที่ถูกลบอย่างไม่เหมาะสมแม้ว่าจะไม่น่าเป็นไปได้ คุณสามารถลองทำการสำรองข้อมูลจากแบบด่วนและการกู้คืนเป็นรุ่นมาตรฐานหรือสูงกว่าจากนั้นตั้งค่าการจำลองแบบอีกครั้งแล้วลบออก จากนั้นคุณสามารถสำรองข้อมูลจากมาตรฐานและกู้คืนเพื่อแสดง ตราบใดที่คุณไม่ได้เปิดใช้งานฟีเจอร์ใด ๆ ในฐานข้อมูลในขณะที่รุ่นที่สูงกว่าก็ไม่ควรมีปัญหาในการลดระดับ คุณสามารถทดสอบสิ่งนี้ล่วงหน้าก่อนเกิดไฟดับที่เกิดขึ้นจริงเพื่อให้แน่ใจว่ามันจะลบสถานะและสคริปต์ทั้งหมดเพื่อลดเวลาหยุดทำงาน หากคุณไม่มีเซิร์ฟเวอร์อื่นที่คุณสามารถใช้ได้คว้าสำเนาการประเมินผลและติดตั้งบนเครื่องท้องถิ่นของคุณ VM เครื่องดั้งเดิมหากเป็นที่ยอมรับหรือที่ใดก็ได้ที่คุณสามารถหาได้


การหยุดทำงานไม่ใช่ปัญหาที่สำคัญกับฐานข้อมูลเนื่องจากเป็นเพียงการเรียกใช้เซิร์ฟเวอร์การอัพเดท / ออกใบอนุญาตส่วนกลางสำหรับ AV ของเรา [มันก็หยุดลงก่อนที่ฉันจะสังเกตุสองสามวัน] อย่างไรก็ตามอย่างที่ฉันพูดถึงในความคิดเห็นเราเป็นร้านค้าลีนุกซ์เป็นหลักและนี่เป็นอินสแตนซ์ MSSQL ของเราเท่านั้น นอกจากนี้การสำรองข้อมูลยังเป็น 180GB + ดังนั้นการส่งออกไปยังผู้ให้บริการภายนอกจึงไม่ใช่ตัวเลือก
Sammitch

คุณสามารถติดตั้งอินสแตนซ์อื่นในกล่องเดียวกันและคืนค่าการสำรองข้อมูลของฐานข้อมูลนั้นซึ่งอนุญาตให้ใช้พื้นที่ได้ หรือคุณสามารถสำรองข้อมูลจากนั้นแยกฐานข้อมูลออกจาก Express และแนบกับสำเนาการประเมินผลแล้วลองติดตั้ง / ลบสิ่งพิมพ์ กรณีที่เลวร้ายที่สุดคุณไขสกรูของเดิมและต้องวางและเรียกคืนข้อมูลสำรอง กรณีที่ดีที่สุดใช้งานได้คุณจะแยกออกจากการประเมินและติดตั้งใหม่เพื่อแสดงและถอนการติดตั้งการประเมินผล
Your_comment_is_not_funny

1

คุณลองตั้งค่าฐานข้อมูลเป็นไม่เผยแพร่หรือไม่

use master
exec sp_replicationdboption @dbname = N'<DATABASENAME>', @optname = N'publish', @value = N'false'
GO

จากนั้นสำรองข้อมูลบันทึกเพื่อดูว่าเกิดอะไรขึ้น

แก้ไข 1: t-sql ต่อไปนี้ส่งคืนอะไรบ้าง

-- Run on publisher database for Pub, subscriber information

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SELECT  sa.name AS ArticleName,
        sp.name AS PublicationName,
        d.datasource AS Distributor,
        s.dest_db AS Destination_DB,
        srv.srvname AS SubscriptionServer
FROM    dbo.syspublications sp  
LEFT JOIN
        dbo.sysarticles sa 
        on sp.pubid = sa.pubid 
LEFT JOIN
        dbo.syssubscriptions s 
        on sa.artid = s.artid 
LEFT JOIN
        master.dbo.sysservers srv 
        on s.srvid = srv.srvid 
OUTER APPLY 
        (
        SELECT  datasource
        FROM    master.dbo.sysservers
        WHERE   srvstatus & 8 <> 0
        ) d

1

ฉันมีปัญหาเดียวกันแน่นอน SQL Express DB ไม่เคยเป็นส่วนหนึ่งของการจำลองแบบ ในอดีตมันได้รับการซ่อมแซมด้วยคำสั่ง checkdb บางคำสั่ง และในบางครั้งเราก็ค้นพบสิ่งนั้น

SELECT name, log_reuse_wait_desc 
FROM sys.databases 

ได้แสดงให้เห็นว่า "REPLICATION" เป็นเหตุผลและ logfile เพิ่มขึ้น

เราลบการจำลองแบบโดยใช้ tsql นี้:

declare @db as varchar(100) = 'dbname'

exec sp_removedbreplication @db

นั่นแก้ไขมันและเราสามารถหดบันทึก


0

ฉันจะลองต่อไปนี้:

USE <database_name_here>
GO
EXEC sp_repldone 
    @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1

หลังจากนั้นคุณสามารถลองเพิ่มการจำลองแบบและลบการจำลองแบบสำหรับแต่ละตารางในฐานข้อมูลตามที่แนะนำในการโพสต์ต่อไปลง

เรามีฐานข้อมูลในครั้งเดียวที่เปลี่ยนไปใช้โหมดการจำลองแม้ว่าการแจกจ่ายและการจำลองแบบไม่ได้ถูกติดตั้งบน SQL Server

ฉันไม่พบสคริปต์ดั้งเดิมที่ฉันใช้สำหรับปัญหาของฉันดังนั้นฉันจึงทำการค้นหาและพบรายการนี้ที่ MSDN:

log_reuse_wait_desc = การจำลองแบบบันทึกธุรกรรมจะไม่หยุดเติบโต

มีสาเหตุบางอย่างที่ไม่เฉพาะเจาะจงสำหรับปัญหานี้และมันเกิดขึ้นทั่วทุกมุมโลก

การล่าสัตว์ที่ดี!


-1

หากคุณลองทุกอย่างแล้วอาจเป็นไปได้ (ให้แน่ใจว่าคุณมีการสำรองที่ดีก่อน!) เพื่อแยกฐานข้อมูลเปลี่ยนชื่อไฟล์บันทึก (ดังนั้น SQL Server ไม่สามารถหาได้) จากนั้นแนบฐานข้อมูลอีกครั้ง ฉันเชื่อว่านี่จะบังคับให้ SQL Server สร้างไฟล์บันทึกใหม่ ไม่ว่าจะหยุดคิดหรือไม่ว่าฐานข้อมูลจะถูกจำลองแบบฉันไม่มีความคิด แต่อย่างน้อยก็เป็นไปได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.