Yerel XML Web Hizmetleri istekleri gönderme için örnek uygulamalar

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

SOAP istekleri nasıl gönderileceğini göstermek için aşağıdaki çalışma örnekleri sağlanır ve yanıtları işlenir.Bu örnekler dahil bir Visual Studio 2005 istemci, hem C# ve Visual Basic.

Başlangıç kurulumu

Örnek uygulamalar, ortak bir kurulumunu gerektirir.Kur, aşağıdaki adımları içerir:

  1. Örnek oluşturma saklı yordam.

  2. Kullanıcı tanımlı bir işlev oluşturun.

  3. HTTP SOAP son nokta oluşturun.

Not

Bu nesneleri oluşturmak için AdventureWorks Örnek veritabanı, kullanabilirsiniz SQL Server Management Studio veya Osql komut yardımcı programı.Nasıl yükleneceği hakkında bilgi için AdventureWorks Veritabanı örnek için bkz: SQL Server Örnekleri ve Örnek Veritabanlarının Yüklenmesiyle İlgili Önemli Noktalar.

saklı yordam (GetCustomerInfo) oluşturma

Saklı yordamını, hata oluştuğu için bir istemci uygulaması giriş ve çıkış parametreleri, dönüş kodu, sorgu sonuçlarını ve hataları işleme biçimini göstermek için tasarlanmıştır.

USE AdventureWorks
GO
DROP PROCEDURE GetCustomerInfo
GO
CREATE PROCEDURE GetCustomerInfo
                    @CustomerID nchar(5),
                    @OutputParam nchar(5) OUTPUT 
AS  

  SELECT @OutputParam = '99999'  
  -- The following INSERT should fail, and an-error returned 
  -- to the client.
  INSERT Store (CustomerID) VALUES (1)

 -- Execute a SELECT statement.
 SELECT top 3 SalesOrderID, OrderDate 
 FROM   Sales.SalesOrderHeader
 WHERE  CustomerID = @CustomerID

 -- Execute SELECT returning XML.
  SELECT CustomerID, SalesOrderID, OrderDate 
  FROM   Sales.SalesOrderHeader
  WHERE  CustomerID = @CustomerID
  for xml auto, XMLSCHEMA

  PRINT 'Hello World'
RETURN 0
Go

Bu saklı yordam, iki parametresi vardır: (bir girdi parametresiCustomerID) ve bir çıkış parametresi (OutParam) parametreleri nasıl geçtiğini göstermek için.

saklı yordam, aþaðýdaki yürütür:

  • Bir INSERT kasıtlı olarak, bir hata dönmeden başarısız ekstresi. Hatayı bilerek nasıl hataları SOAP yanıtta döndürülen göstermek için ' dir.Içinde Visual Studio 2005, hataları verilir SqlMessage nesneler.

  • C SELECT deyim. Içinde Visual Studio 2005, sonuç satır kümesi olarak döndürülen bir DataSet nesnesi.

  • C SELECT FOR XML XML verilerini döndüren sorgu. Içinde Visual Studio 2005, sonuç kümesi olarak döndürülen bir SqlXml nesnesi.

  • C PRINT deyim. Bu sonuç döndürdü Visual Studio 2005 gibi bir SqlMessage nesnesi.

Kullanıcı tanımlı işlev (UDFREturningAScalar) oluşturma

Bu işlev, tamsayı değerini döndürür.

USE AdventureWorks
GO
CREATE FUNCTION UDFReturningAScalar() 
RETURNS int
AS
BEGIN
   RETURN 555
END
Go

HTTP SOAP bitiş noktası'nı (sql_endpoint) oluşturma

Bu bitiş noktası, saklı yordam ve kullanıcı tanımlı bir işlev Web yöntemlerini gösterir.Son nokta için ad hoc sorgulara izin vermek üzere de yapılandırılır.Istemci uygulaması, son nokta için ad hoc sorguları için SOAP istekleri gönderebilir.

Sunucu adı olarak sağlamak zorunda Not anabilgisayaradı (HTTP ad alanı rezerve ettiğinizdesp_reserve_http_namespace), bitiş noktası ve ayrıca, zaman tamamlamak için SITE Parametre. Ayrıca, değeri Bağlantı Noktası örnek tarafından kullanılan HTTP bağlantı noktası karşılık gelmelidirSQL Server, gibi "80" veya başka bir TCP bağlantı noktası numarası geçerli durumunda.

USE AdventureWorks
GO
DROP ENDPOINT sql_endpoint
GO
EXEC sp_reserve_http_namespace N'http://hostname:port/sql' 
-- EXEC sp_reserve_http_namespace N'https://www.microsoft.com:80/sql' for example
GO
CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS HTTP(
   PATH = '/sql', 
   AUTHENTICATION = (INTEGRATED ), 
   PORTS = ( CLEAR ),
   SITE = 'server'
)
FOR SOAP (
   WEBMETHOD 'http://tempUri.org/'.'GetCustomerInfo' 
            (name='AdventureWorks.dbo.GetCustomerInfo', 
             schema=STANDARD ),
   WEBMETHOD 'UDFReturningAScalar' 
            (name='AdventureWorks.dbo.UDFReturningAScalar'),
   BATCHES = ENABLED,
   WSDL = DEFAULT,
   DATABASE = 'AdventureWorks',
   NAMESPACE = 'http://Adventure-Works/Customers'
)
GO
USE master
EXEC sp_grantlogin @loginame='domain\userOrGroup'
EXEC sp_grantdbaccess @loginame='domain\userOrGroup'
GRANT CONNECT ON ENDPOINT::sql_endpoint TO [domain\userOrGroup]
GO

Önceki kodda, aşağıdakilere dikkat edin:

  • Bu son nokta oluşturmak için tanımlanan iki Web yöntemleri vardır.

  • The WSDL value is küme to DEFAULT. Bu nedenle, istemci, sunucudan bir WSDL yanıt isteyebilirler.

  • The BATCHES value is küme to ENABLED. Bu nedenle, istemci, geçici sorgu isteği bu bitiş noktasına gönderebilirsiniz.

  • Web yöntem UDFReturningAScalar isteğe bağlı ad alanı belirtmiyor. Belirtilen ad alanı kullandığı NAMESPACE Değer.

  • Değerleri domain\userOrGroup biçiminde oluşturulmuşSQL Server oturum açma olmalıdır küme gerçek etki alanı kullanıcı veya gruba, HTTP bitiş noktası erişim gerektiren.