Yerel xml Web Hizmetleri istekleri göndermek için örnek uygulamalar

Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.

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 içeren bir Visual Studio 2005 istemci, her iki C# ve Visual Basic.

İlk kurulum

Örnek uygulamalar yaygın kurulum gerektirir.Kur aşağıdaki adımları içerir:

  1. Bir örnek saklı yordam oluşturun.

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

  3. http soap bitiş noktası oluşturun.

Not

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

Saklı yordam (GetCustomerInfo) oluşturma

Aşağıdaki saklı yordam tasarlanmış bir istemci uygulaması giriş ve çıkış parametrelerini işleme biçimini göstermek, dönüş kodu, sorgulamak için sonuçlar, ve bir hata varsa hataları bir biçimde gerçekleşmesi için.

USE AdventureWorks2008R2;
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 parametresini (CustomerID) ve bir çıkış parametresi (OutParam) parametreleri nasıl geçtiğini göstermek için.

Saklı yordam aşağıdaki ifadeleri yürütür:

  • Bir INSERT deyim, kasıtlı olarak başarısız, döndüren bir hata.Hata nasıl soap yanıtı bir hata döndürülmez göstermek için uygulanmıştır.De Visual Studio 2005, hataları olarak dönen SqlMessage nesneler.

  • A SELECT deyim.De Visual Studio 2005, elde edilen satır kümesi olarak dönen bir DataSet nesne.

  • A SELECT FOR XML sorgu döndürür, xml verileri.De Visual Studio 2005, elde edilen satır kümesi olarak dönen bir SqlXml nesne.

  • A PRINT deyim.Bunun sonucunda, iade Visual Studio 2005 olarak bir SqlMessage nesne.

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

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

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

http soap bitiş noktası (sql_endpoint) oluşturma

Bu bitiş noktası Web yöntemleri olarak saklı yordam ve kullanıcı tanımlı işlev sunar.Bitiş noktası aynı zamanda ad hoc sorguları için izin verecek şekilde yapılandırılır.istemci uygulaması son nokta için ad hoc sorguları için soap istekleri gönderebilir.

Sunucu adı değerini vermeniz gerekecek unutmayın ana bilgisayar adı http ad alanı ayırma ne zaman (sp_reserve_http_namespace) bitiş ve aynı zamanda ne zaman tamamlamak için SITE parametresi.Ayrıca, değeri bağlantı noktası örnek tarafından kullanılan http bağlantı noktasını karşılık gelmesi gerekir SQL Server, gibi "80" ya da varsa başka bir tcp bağlantı noktası numarası.

USE AdventureWorks2008R2;
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='AdventureWorks2008R2.dbo.GetCustomerInfo', 
             schema=STANDARD ),
   WEBMETHOD 'UDFReturningAScalar' 
            (name='AdventureWorks2008R2.dbo.UDFReturningAScalar'),
   BATCHES = ENABLED,
   WSDL = DEFAULT,
   DATABASE = 'AdventureWorks2008R2',
   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 bitiş noktası oluşturma içinde tanımlanan iki Web yöntemi vardır.

  • The WSDL value is set to DEFAULT.Bu nedenle, istemci sunucudan bir wsdl yanıt talep edebilirsiniz.

  • The BATCHES value is set to ENABLED.Bu nedenle, istemci ad hoc sorgu isteği bu bitiş noktasına gönderebilirsiniz.

  • Web yöntem UDFReturningAScalar belirtilmemiştir isteğe bağlı ad.Belirtilen ad alanı kullanan NAMESPACE değer.

  • Değerleri domain\userOrGroup olarak oluşturulan bir SQL Server login olması gereken küme gerçek etki alanı kullanıcı veya grup erişmesi için http bitiş noktası.