web-dev-qa-db-ja.com

トランザクションログは縮小されず、DBは複製していると判断します

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]

また、SSMSのReplicationセクションには何もリストされていません。

これまでのところ、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

完全なデータとログのバックアップも実行しました。

veryの同様の状況でいくつかの投稿に出くわしましたが、与えられた解決策は、レプリケーションのパブリッシングとディストリビューションをセットアップしてから、もう一度削除することでした。ただし、これはExpress Editionなので、これらのオプションは表示されません。

私たちは主にLinuxショップであり、これが唯一のSQL Serverインスタンスです。他のすべてが失敗して実際のライセンスを取得できない場合は、Express以外のインスタンスにバックアップを復元し、パブリケーションをセットアップして削除してから、最後にExpressに復元してください。

13
Sammitch

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

同様の問題に直面しました。公開されたデータベースが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'
5

このデータベースでダウンタイムが発生しても問題ありませんか?これはおそらく、レプリケートされたデータベースから復元されたか、サブスクライバーである可能性は低いですが、不適切に削除された可能性があります。エクスプレスからバックアップを作成し、スタンダードエディション以上に復元してから、レプリケーションを再度セットアップして削除することもできます。その後、標準からバックアップし、復元して表現することができます。上位エディションでデータベースの機能を有効にしない限り、ダウングレードの問題は発生しません。実際の停止の前にこれをテストして、ステータスが削除されることを確認し、スクリプトを作成してダウンタイムを最小限に抑えることができます。使用できる別のサーバーがない場合は、評価版を入手して、ローカルマシン、VM、元のマシン(可能な場合)、または見つけられる場所にインストールします。あなたが観察したように、あなたはエクスプレスで限られたオプションを持っています。

私はまったく同じ問題を抱えていました。 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

これで解決し、ログを縮小できました。

1
baitronic

データベースを公開しないように設定してみましたか?

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
Pixelated

私は以下を試します:

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 =レプリケーション、トランザクションログは成長を停止しません

この問題には根本的な原因がいくつかあり、世界中で発生しています。

いい狩り!

0