web-dev-qa-db-ja.com

ディストリビューターが正しくインストールされていません。データベースを発行できるようにできませんでした

サーバーの1つでパブリケーションを作成している間、継続的に次のエラーメッセージが表示されます

ディストリビューターが正しくインストールされていません。データベースを公開用に有効にできませんでした。

ディストリビューターを何度かドロップして作り直しましたが。

--==============================================================
-- replication - create publication - complete
-- marcelo miorelli
-- 06-Oct-2015
--==============================================================

select @@servername
select @@version
select @@spid
select @@servicename

--==============================================================
-- step 00 --  configuring the distributor
-- if there is already a distributor AND it is not healthy, 
-- you can have a look at the jobs related to this distributor and
-- MAYBE, if you need to get rid of it, run this step
-- generally you need to run this when adding a publication it says there is a problem with the distributor
--==============================================================

use master
go
sp_dropdistributor 
-- Could not drop the Distributor 'QG-V-SQL-TS\AIFS_DEVELOPMENT'. This Distributor has associated distribution databases.

EXEC sp_dropdistributor 
     @no_checks = 1
    ,@ignore_distributor = 1
GO

--==============================================================
-- step 01 --  configuring the distributor
-- tell this server who is the distributor and the admin password to connect there

-- create the distributor database
--==============================================================

use master
exec sp_adddistributor 
 @distributor = N'the_same_server'
,@heartbeat_interval=10
,@password='#J4g4nn4th4_the_password#'

USE master
EXEC sp_adddistributiondb 
    @database = 'dist1', 
    @security_mode = 1;
GO

--==============================================================
-- check thing out before going ahead and create the publications
--==============================================================

USE master;  
go  

--Is the current server a Distributor?  
--Is the distribution database installed?  
--Are there other Publishers using this Distributor?  
EXEC sp_get_distributor  

--Is the current server a Distributor?  
SELECT is_distributor FROM sys.servers WHERE name='repl_distributor' AND data_source=@@servername;  

--Which databases on the Distributor are distribution databases?  
SELECT name FROM sys.databases WHERE is_distributor = 1  

--What are the Distributor and distribution database properties?  
EXEC sp_helpdistributor;  
EXEC sp_helpdistributiondb;  
EXEC sp_helpdistpublisher;  









--==============================================================
-- here you need to have a distributor in place

-- Enabling the replication database
-- the name of the database we want to replicate is COLAFinance
--==============================================================
use master
exec sp_get_distributor


use master
exec sp_replicationdboption @dbname = N'the_database_to_publish', 
                            @optname = N'publish', 
                            @value = N'true'
GO

不足しているものはありますか?何か案は?

1

私はそれを釘付けにしたと思います、私がしたことは非常に簡単です

procedure sp_adddistpublisher の呼び出しがありませんでした。

指定したディストリビューションデータベースを使用するようにパブリッシャーを構成します。このストアドプロシージャは、任意のデータベースのディストリビューターで実行されます。このストアドプロシージャを使用する前に、ストアドプロシージャsp_adddistributor(Transact-SQL)およびsp_adddistributiondb(Transact-SQL)を実行しておく必要があります。

以下のスクリプトに最後のコマンドを追加して実行しましたstep01

--==============================================================
-- step 01 --  configuring the distributor
-- tell this server who is the distributor and the admin password to connect there

-- create the distributor database
--==============================================================

use master
exec sp_adddistributor 
 @distributor = N'the_same_server'
,@heartbeat_interval=10
,@password='#J4g4nn4th4_the_password#'

USE master
EXEC sp_adddistributiondb 
    @database = 'dist1', 
    @security_mode = 1;
GO

exec sp_adddistpublisher @publisher = N'the_same_server', 
                         @distribution_db = N'dist1';
GO

私は今、次のプロシージャを呼び出すときに気づきました:

EXEC sp_get_distributor 

enter image description here

distribution db installed列が1と等しいのがわかりますが、以前この表示に気付いていたはずです。

機能する場合は、この回答をそのままにします。そうでない場合は、それに応じて追加します。

4