2017-08-08 68 views
0

我試圖運行一個使用SQL Server傳輸和SQL持久性的NServiceBus主機應用程序。當我將transport和persistence連接字符串都指向同一個數據庫時,一切正常。然而,當我指出他們單獨的數據庫,在收到了第一條消息,拋出該異常的程序崩潰:System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'persistence.MyService_MySaga'.NServiceBus不同數據庫上的SQL Server傳輸和SQL持久性

這裏是我的端點配置:

var persistenceConnection = @"Data Source=.\SqlExpress;Database=MyServicePersistence;Integrated Security=True;Max Pool Size=100;"; 
var transportConnection = @"Data Source=.\SqlExpress;Database=MyServiceTransport;Integrated Security=True;Max Pool Size=100;"; 

var endpointConfiguration = new EndpointConfiguration("MyService"); 
endpointConfiguration.SendFailedMessagesTo("error"); 
endpointConfiguration.AuditProcessedMessagesTo("audit"); 
endpointConfiguration.EnableInstallers(); 

var transport = endpointConfiguration.UseTransport<SqlServerTransport>(); 
transport.ConnectionString(transportConnection); 
transport.UseSchemaForQueue("error", "dbo"); 
transport.UseSchemaForQueue("audit", "dbo"); 
transport.Transactions(TransportTransactionMode.SendsAtomicWithReceive); 

var persistence = endpointConfiguration.UsePersistence<SqlPersistence>(); 
persistence.SqlVariant(SqlVariant.MsSqlServer); 
persistence.ConnectionBuilder(() => new SqlConnection(persistenceConnection)); 
persistence.Schema("persistence"); 

var subscriptions = persistence.SubscriptionSettings(); 
subscriptions.CacheFor(TimeSpan.FromMinutes(1)); 

潛在值得注意:我可以防止異常如果我將TransportTransactionModeSendsAtomicWithReceive更改爲None就會被拋出。但我不想這樣做,因爲它會導致所有失敗的消息直接轉到錯誤隊列,繞過所有重試。

回答

1

好像你發現了我們實現中的一個錯誤,感謝提升它。

我在SQL持久性回購中創建了一個問題,您可以跟蹤它there

我們很可能會在即將到來的新專業中發佈修復程序,希望對您有用。你能指出問題的嚴重性嗎?

+0

其實,我剛剛發現我們團隊中的其他人已經與來自特定人(西蒙我相信?)的其他人聯繫過這個問題。就緊急情況而言,我不會說因爲有解決方法而非常緊迫。但是,我們的情況並不完全需要解決方法。 – RobotJones

+0

我明白了,我會讓你更新! – wlabaj