サーバーの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
不足しているものはありますか?何か案は?
私はそれを釘付けにしたと思います、私がしたことは非常に簡単です
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
distribution db installed
列が1
と等しいのがわかりますが、以前この表示に気付いていたはずです。
機能する場合は、この回答をそのままにします。そうでない場合は、それに応じて追加します。