2016-08-29 14 views
2

我創建了一個包含兩個業務流程的BizTalk應用程序,每個我公開的作爲SOAP服務公開的方法之一。每種方法在SQL Server中運行特定的存儲過程並返回結果。它在開發和測試中都工作得很好,但是當我投入生產時,我遇到了一個道路顛簸。在我們的測試環境中,存儲過程的所有權是DBO。但在生產中,事實並非如此。這是[味精]。所以程序是[數據庫]。[msg]。[stored_procedure]而不是[database]。[dbo]。[stored_procedure],所以我得到一個錯誤。BizTalk 2010 WCF定製適配器和數據庫對象所有權

我試着改變SOAP Action Header,但是我得到一個錯誤,說明(正確)存儲過程SP_XXXX1,例如,不存在。

Error Description: Microsoft.ServiceModel.Channels.Common.MetadataException: Object [dbo].[SP_XXXX1] of type StoredProcedure does not exist

<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Operation Name="SP_XXXX1" Action="Procedure/dbo/SP_XXXX1" /> 
    <Operation Name="SP_XXXX2" Action="Procedure/dbo/SP_XXXX2" /> 
</BtsActionMapping> 

我試圖改變「DBO」上面「味精」,但我也得到一個錯誤:

Error Description: Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: The start element with name "SP_XXXX1" and namespace " http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo " was unexpected. Please ensure that your input XML conforms to the schema for the operation.

我需要重新生成的一切,再次運行該向導來創建模式等,然後再次測試它在開發環境中重新創建環境?

我沒有這樣做,因爲我認爲這將很容易在發送端口配置。

回答

1

如果您從存儲過程創建模式,您的模式將包含對SQL模式的引用(例如dbo)。我的建議是在所有環境中調整SQL模式並重新生成模式並調整映射。

公平地說,在SQL中,dbo SQL模式中的表'Sales'與'msg'SQL模式中的表'Sales'不同。

+0

謝謝你的回答彼得。我將重新生成一切並更新應用程序模式。我已將開發計算機上的架構更改爲MSG,而不是DBO,因此可以進行測試。我希望它更簡單,但我想它確實有道理。正如你所指出的,SQL中不同模式中的對象是不同的。 :) –

相關問題