トランザクションログは縮小せず、DBは複製していると考えます


13

Kaspersky Security Centerを実行しているSQL Server 2008 R2 Expressデータベースがあり、どのような状況でインストールが行われたのかわかりませんが、データベースはレプリケートされており、トランザクションログからスペースを解放しないと考えているようです。例えば:

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であるため、これらのオプションは表示されません。

私たちは主にLinuxショップであり、これが唯一のSQL Serverインスタンスです。他のすべてが実際のライセンスの取得に失敗した場合は、唯一の手段である可能性があります。非Expressインスタンスにバックアップを復元し、セットアップを試行してパブリケーションを削除し、最後にExpressに復元します。

回答:


5

公開されたデータベースを復元するためのソリューション

同様の問題に直面しました。公開されたデータベースはServer1に保存されます。このデータベースは毎日Server2でバックアップおよび復元されます。

  • エラーメッセージが頻繁に表示されます。

    複製によりログがいっぱいです

  • log_reuse_wait_descに設定されましたREPLICATION
  • このデータベースは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

このデータベースのダウンタイムは許容されますか?これはおそらく、レプリケートされたデータベースから復元されたか、不適切に削除されたサブスクライバーである可能性が高いと考えられます。Expressからバックアップを作成し、標準またはそれ以降のエディションに復元してから、レプリケーションを再度セットアップして削除してみてください。その後、標準からバックアップし、Expressに復元できます。上位エディションでデータベースの機能を有効にしない限り、ダウングレードの問題はありません。実際の停止の前にこれをテストして、ステータスを削除し、スクリプトをすべて実行してダウンタイムを最小限に抑えることができます。使用できる別のサーバーがない場合は、評価コピーを取得して、ローカルマシン、VM、受け入れ可能な場合は元のマシン、または見つけられる場所にインストールします。


ダウンタイムは、AVの集中更新/ライセンスサーバーを単に実行しているだけなので、データベースの重要な問題ではありません。[また、気づく前に数日間ダウンしていました]しかし、コメントで述べたように、私たちは主にLinuxショップであり、これが唯一のMSSQLインスタンスです。また、バックアップは180GB以上なので、外部プロバイダーへの発送もオプションではありません。
サミッチ14

同じボックスに別のインスタンスをインストールし、スペースが許せばそのデータベースのバックアップを復元できます。または、バックアップを作成してからデータベースをエクスプレスからデタッチし、評価コピーに添付して、パブリケーションのセットアップ/削除を試みることもできます。最悪の場合、元のファイルを台無しにして、ドロップしてバックアップを復元する必要があります。最良の場合、それは機能します。評価からデタッチして、再アタッチして評価をアンインストールします。
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は、レプリケーションの一部ではありませんでした。以前は、いくつかのDBCC checkdbコマンドで修復されていました。そしてある時、私たちはそれを発見しました

SELECT name, log_reuse_wait_desc 
FROM sys.databases 

理由として「REPLICATION」を示し、ログファイルが大きくなっています。

この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.