1 / 18

MS SQL Server 2005

MS SQL Server 2005. SQL Server 2005 - Native XML Web Services. Sposób dostępu do bazy danych. Przed MS SQL Server 2005 – Tabular Data Stream (TDS) MS SQL Server 2005 – SOAP via HTTP Język T-SQL z wykorzystaniem parametrów Procedury składowane, rozszerzone procedury, funkcje użytkownika.

lam
Download Presentation

MS SQL Server 2005

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MS SQL Server 2005 SQL Server 2005 - Native XML Web Services

  2. Sposób dostępu do bazy danych • Przed MS SQL Server 2005 – Tabular Data Stream (TDS) • MS SQL Server 2005 – SOAP via HTTP • Język T-SQL z wykorzystaniem parametrów • Procedury składowane, rozszerzone procedury, funkcje użytkownika

  3. MS SQL Server 2005 – SOAP via HTTP • Otwarty protokół • Szerokie możliwości podłączenia zróżnicowanych klientów – wyeliminowanie konieczności posiadania przez klienta komponentów MDAC • Wykorzystanie technologii XML i HTML • SQL Server dostępny dla każdego środowiska, które potrafi przetwarzać język XML oraz wysłać żądania HTTP • Wyeliminowanie konieczności wykorzystywania driver’ów ODBC/JDBC przy łączeniu się z bazą danych

  4. Jak stworzyć Native XML Web Service? • Zdefiniować funkcje lub procedury składowane, które chcemy udostępnić • Utworzyć ENDPOINT, który udostępni zdefiniowane funkcje lub procedury (tzw. Web services) • Aplikacje, które potrafią wysłać i odbierać komunikaty SOAP mogą się łączyć z ENDPOINTEM i wysłać lub pobierać dane • Wszystkie udostępnione obiekty (Web services) opisane są za pomocą języka WSDL (web services description language)

  5. Konfiguracja serwera SQL jako Web Service (1) Zdefiniowanie procedury składowanej w języku T-SQL USE AdventureWorks GO CREATE FUNCTION dbo.GetCustomerName(@CustomerId INT) RETURNS nvarChar(MaX) AS BEGIN RETURN (SELECT Name FROM Sales.Store where CustomerID=@CustomerId) END

  6. Konfiguracja serwera SQL jako Web Service (2) CREATE ENDPOINT GetCustomerName STATE = STARTED AS HTTP ( PATH = '/Customer', AUTHENTICATION = (INTEGRATED), PORTS = (CLEAR), SITE = 'localhost' ) FOR SOAP ( WEBMETHOD 'CustomerName' (NAME='AdventureWorks.dbo.GetCustomerName'), BATCHES = DISABLED, WSDL = DEFAULT, DATABASE = 'AdventureWorks', NAMESPACE = 'http://AdventureWorks/Customer' ) Definiowanie ENDPOINT’a

  7. CREATE ENDPOINT– opis parametrów • STATE - poczatkowy stan endpoint’u (started,stopped,disabled) • AS HTTP – uzywany protokol transportowy (np. AS TCP) • PATH – URL na serwerze, który klienci będą uzywali do polaczenia się z Web servisem • AUTHENTICATION – sposób autoryzacji (BASIC, DIGETS, NTLM, KERBEROS, INTEGRATED) • PORTS – typ portu na którym serwis nasluchuje (CLEAR lub SSL) • SITE – nazwa hosta dla komputera, który będzie odpowiadal na zadania • FOR SOAP – informacja ze endpoint będzie uzywal protokolu SOAP • WEBMETHOD – definuje Webmetode, mapuje nazwe procedury skladowanej na Webmetode • BATCHES – okresla czy endpoint będzie przetwarzal zapytania SQL-owe • WSDL - czy endpoint będzie wpieral WSDL • DATABASE - nazwa wykorzystywanej bazy danych • NAMESPACE - przstrzen nazw dla jezyka XML

  8. WSDL • Jezyk XML • Opis Web services • Jeśli dla ENDPOINT’a parametr WSDL = DEFAULT wysyłając odpowiednie żądnie HTTP możemy uzyskać plik WSDL opisujący udostępnione Web services • Rozbudowane środowiska (VS .NET, JBulider) wykorzystują WSDL do tworzenia klas proxy upraszczając wykorzystywanie Web services w aplikacjach http://localhost/Customer?wsdl

  9. WSDL – opis procedury składowanej wraz z parametrami - <xsd:element name="CustomerName"> - <xsd:complexType> - <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="1" name="CustomerId" type="sqltypes:int" nillable="true" /> </xsd:sequence> </xsd:complexType> </xsd:element> - <xsd:element name="CustomerNameResponse"> - <xsd:complexType> - <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="1" name="CustomerNameResult" type="sqltypes:int" nillable="true" /> </xsd:sequence> </xsd:complexType> </xsd:element>

  10. Visual Studio 2005 – wykorzystanie Native XML Web services • Pobranie web referencji do udostępnionego serwisu (plik WSDL) • Utworzenie klasy proxy Web service • Klasa proxy udostępnia te wszystkie metody, które zdefiniowane zostały dla ENDPOINT’u • Jeśli ENDPOINT zezwala na wykonywanie zapytań ad hoc udostępniona jest również metoda sqlbatch • Klient wysyła do SQL Server 2005 komunikat SOAP • SQL Server zwraca wynik żądanej metody do klienta

  11. Visual Studio 2005 - przetwarzanie odpowiedzi • Rezultaty operacji mogą być zwracane jako tablica obiektów • Kod powrotu procedury (return code) zwracany jest w tablicy jako obiekt typu int

  12. SOAP via RPC <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <m:CustomerName xmlns:m="http://AdventureWorks/Customer"> <m:CustomerId>0</m:CustomerId> </m:CustomerName> </SOAP-ENV:Body> </SOAP-ENV:Envelope> • Żądanie SOAP udostępnionego Web service • Odpowiedź MS SQL 2005 <SOAP-ENV:Envelope><SOAP-ENV:Body> <method:CustomerNameResponse> <method:CustomerNameResult>A Bike Store</method:CustomerNameResult> </method:CustomerNameResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>

  13. Visual Studio 2005 – Web services w oparciu o klasy proxy tworzone na podstawie plików WSDL • Dodanie Web referenece • Utworzenie i wykorzystanie klasy proxy do wywoływania Web service SQLHTTP.Customer ws = new SQLHTTP.Customer(); //create proxy class ws.Credentials = System.Net.CredentialCache.DefaultCredentials; MessageBox.Show(„Customer Name: „+ ws.customerName(1).toString());

  14. Batches: AdHoc Queries • BATCHES=ENABLED • ENDPOINT udostępnia metodę sqlbatch • Sqlbatch pozwala na wykonywanie procedur T-SQL poprzez komunikaty SOAP • Sqlbatch – parametry: • <BatchCommands> - procedura T-SQL • <Parameters> (opcjonalnie) – tablica parametrów, jeśli procedura ich wymaga

  15. SOAP via RPC - sqlbatch (1) • Wywołanie metody sqlbatch wraz z parametrami <m:sqlbatch xmlns:m="http://schemas.microsoft.com/sqlserver/2004/SOAP"> <m:BatchCommands> SELECT LoginID,Title FROM HumanResources.Employee WHERE EmployeeID=@x FOR XML AUTO; </m:BatchCommands> <m:Parameters> <m0:SqlParameter name="x" sqlDbType="Int" direction="Input" maxLength="1" precision="18" scale="0" clrTypeName="" sqlCompareOptions="Default" localeId="-1" sqlCollationVersion="0" sqlSortId="0" xmlSchemaCollection=""> <m0:Value>1</m0:Value> </m0:SqlParameter> </m:Parameters> </m:sqlbatch>

  16. SOAP via RPC - sqlbatch (2) • Odpowiedź SQL Server 2005 <sqlresultstream:SqlXml xsi:type="sqlsoaptypes:SqlXml"> <SqlXml><HumanResources.Employee LoginID="adventure-works\guy1" Title="Production Technician - WC60"/></SqlXml> </sqlresultstream:SqlXml>

  17. Visual Studio 2005 – metoda sqlbatch SQLHTTP.Customer ws = new SQLHTTP.Customer; ws.Credentials = System.Net.CredentialCache.DefaultCredentials; WApp.localhost.SqlParameter[] p = new WApp.localhost.SqlParameter[1]; p[0] = new WApp.localhost.SqlParameter(); p[0].name = "x"; p[0].Value = "1"; p[0].maxLength = 20; p[0].sqlDbType = WApp.localhost.sqlDbTypeEnum.Int; p[0].direction = NativeSOAPApp1.server.ParameterDirection.Input; string s = "SELECT LoginID, Title " + "FROM HumanResources.Employee Where EmployeeID=@x " + "FOR XML AUTO;"; object[] results = ws.sqlbatch(s, ref p);// proxy.sqlbatch(s); string wynik = ""; for (int j = 0; j < results.Length; j++) { object e1; System.Xml.XmlElement xmlResult; e1 = results[j]; switch (e1.ToString()) { case "System.Xml.XmlElement": xmlResult = (System.Xml.XmlElement)results[j]; wynik = wynik + xmlResult.OuterXml+"\n"; break; } } MessageBox.Show(wynik);

  18. MS SQL Server 2005 SQL Server 2005 - Native XML Web Services

More Related