2012-03-03 4 views
1

Windows Server 2008マシンにSQL Server 2008 R2をセットアップしてテストデータベースを作成し、マージレプリケーションを使用します。 SQL Server 2008およびSQL Server CE 3.1の購読者に対応するために、このパブリケーションを設定しました。私はまた、thisウォークスルーを使用してIIS 7をインストールして構成しました。SQL Server CEのレプリケーションに失敗しました:内部エラー:トランスポートメッセージでHTTPヘッダー情報が破損しているか紛失しています

私は、SQl Server 2008 R2データベースからデータをコピーし、マージレプリケーションを介してローカルのSQL Server CEデータベースに置くことになっている別のPCにC#アプリケーションを開発しています。しかし、それは次のエラーで惨めに失敗します:

A first chance exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.dll 
Internal error: HTTP header information is either corrupted or missing in the transport message. It could be a network transmission error or an IIS problem. 

途中でHResult値は0x80072F76です。

サーバー側では、IISログには次の情報が含まれます。

CReplicationListenerWorker , 2012/03/03 02:21:14.939, 3400, 174, S2, INFO: =============== START PROCESSING REQUEST ============== 
CategorizeRequest    , 2012/03/03 02:21:14.940, 3400, 93, S1, ERROR: GetMessageListenerObject failed, hr = 0x80070057 
CReplicationListenerWorker , 2012/03/03 02:21:14.940, 3400, 261, S2, WARN: CategorizeRequest failed, hr = 0x80004005. 
CReplicationListenerWorker , 2012/03/03 02:21:14.940, 3400, 262, S2, WARN: Generating default web page. 
CReplicationListenerWorker , 2012/03/03 02:21:14.940, 3400, 396, S2, INFO: =============== DONE PROCESSING REQUEST =============== 

私のコードはこれです:

SqlCeReplication repl = new SqlCeReplication(); 
repl.InternetUrl = "https://winserver2008/SQLReplication/replisapi.dll"; 
repl.InternetLogin = "SQL"; 
repl.InternetPassword = "somepassword"; 
repl.Publisher = "WINSERVER2008"; 
repl.PublisherDatabase = "Test";    
repl.PublisherSecurityMode = SecurityType.DBAuthentication; 
repl.Publication = "TestPublish"; 
repl.Subscriber = "Dev System"; 
repl.SubscriberConnectionString = "Data Source=" + dbFilePath; 
repl.DistributorLogin = "SQL"; 
repl.PublisherLogin = "SQL"; 
repl.DistributorAddress = "192.168.232.128"; 

if (File.Exists(dbFilePath)) { 
    File.Delete(dbFilePath); 
} 
repl.AddSubscription(AddOption.CreateDatabase); //Create new db 

try{ 
    repl.Synchronize(); 
} catch (SqlCeException e) { 
    Console.WriteLine(e.Message + " - HResult: " + String.Format("{0:X}", e.HResult)); 
} 

私はいくつかの研究を行ってきたと私はこのエラーを取得するための2つだけの理由を見つけることができます。 1つは特定の設定が有効になっているMicrosoft ISAサーバーを使用していますが、私はそうではありません。もう1つは、パブリッシャとサブスクライバが異なるバージョンのSQL Server CEドライバを使用している場合です。レジストリによると、両方のマシンはバージョン3.5.8080.0(SQL Server CE 3.5 SP2)にあります。

これを動作させるにはどうすればよいですか?

あなたはsqlcesa35.dllを使用する必要があり、これは、SQL ServerのwebsyncへのSQL Serverのある、replisapi.dllを使用することはできません

答えて

1

- このブログ記事を参照してください。http://erikej.blogspot.com/2010/06/walkthrough-configuring-merge.html

+0

私は私がすべての上にsqlcesa35.dll見ていた奇妙だと思いましたreplisapi.dllではなくネット上の場所ですが、説明が見つかりませんでした。そのブログ記事にスナップショットの共有を作成するセクションを追加することもできます。 Web Synchronization Wizardが最初に何を求めているのか分かりませんでした。 –

関連する問題