使用 SOAP 工作階段
未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
若要在現有工作階段的內容內執行 SOAP 要求,必須將下列項目指定為伺服器之 SOAP 工作階段要求的一部份:
伺服器先前提供給用戶端的相同工作階段識別碼。
先前初始 SOAP 工作階段之結束點的相對應 HTTP 結束點識別碼
相同的使用者內容。視結束點的 SOAP 屬性中支援的 LOGIN_TYPE 而定,可以是 Windows 或 SQL Server 使用者。
如果指定的工作階段識別碼不存在或者格式不正確,會使用 terminate 屬性以標頭中的 sqlSession 元素傳回 SOAP 錯誤訊息。否則,伺服器會藉由回應到相同的 sqlSession 標頭 (用戶端在要求中傳送的標頭) 以做出回應。
如果使用與初始工作階段不同的安全性內容或結束點執行要求,則會傳回 SOAP 錯誤。在回應中將指定 SOAP 層終止的 SOAP 錯誤碼,而在 sqlSession 標頭中,terminate 屬性會與 true 值一起加入。
此外,若要防止惡意使用者判斷工作階段是否存在,將會設定 terminate 屬性,伺服器會傳回 SOAP 錯誤當做要求的唯一回應訊息,而編列識別的工作階段對伺服器來說則是不明。
範例
下列範例中示範編列 SOAP 工作階段。要求在現有的 SOAP 工作階段中編列時,會顯示用戶端傳送的 SOAP 訊息格式。請注意,sessionId 的實際值會是工作階段特定的識別碼。
<SOAP-ENV:Header
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
<!-- enlist in an existing session --><sqloptions:sqlSession sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>
伺服器會將訊息回應回用戶端以指出可以存取工作階段,或者若要求中識別的工作階段無法存取,則會傳回 SOAP 錯誤。