Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách gọi dịch vụ web từ thủ tục được lưu trữ trên SQL Server

Đối với những thứ như thế này, bạn không cần triển khai dịch vụ web đầy đủ. Bạn có thể sử dụng SQLCLR (Tích hợp .NET của SQL Server) để gửi yêu cầu tới URL, nhận lại phản hồi bằng XML (trừ khi bạn có thể tìm thấy thư viện JSON sẽ hoạt động mà không cần được đặt thành UNSAFE ), và sau đó phân tích cú pháp phản hồi đó.

Xem các trang MSDN sau:

  • HttpWebRequest
  • HttpWebResponse
  • XmlDocument
  • Để thoát khỏi địa chỉ:
    • Nếu bạn đang sử dụng SQL Server 2005, 2008 hoặc 2008 R2, hãy sử dụng Uri.EscapeDataString vì nó đã có trước .NET Framework v4.5
    • Nếu bạn đang sử dụng SQL Server 2012, 2014 hoặc mới hơn, thì bạn có thể sử dụng Uri.EscapeDataString hoặc nếu máy chủ đã được cập nhật ít nhất lên .NET Framework v4.5, thì bạn có thể sử dụng WebUtility.UrlEncode

Theo tài liệu API mã hóa địa lý của Google , URI API phải được định dạng tương tự như sau:

https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}

Chỉ cần gửi điều đó với 2 biến đó được thay thế bằng các giá trị thích hợp của chúng qua HttpWebRequest , sau đó gọi HttpWebRequest.GetResponse , sau đó gọi HttpWebResponse.GetResponseStream . Và không không quên gọi CloseDispose các phương thức của HttpWebResponse (hoặc khởi tạo nó trong một using khối) !!

Ghi chú bổ sung:

  • Nếu chưa hoàn tất, bạn sẽ phải bật (một lần) "Tích hợp CLR" ở cấp máy chủ: Bật tích hợp CLR
  • Đừng đi theo con đường dễ dàng và đặt cơ sở dữ liệu thành TRUSTWORTHY ON . Chỉ cần ký hợp ngữ bằng mật khẩu, sau đó tạo khóa không đối xứng trong master cơ sở dữ liệu bằng cách trỏ đến DLL đã ký của bạn, sau đó tạo thông tin đăng nhập từ khóa không đối xứng đó và cuối cùng cấp cho thông tin đăng nhập đó là UNSAFE ASSEMBLY sự cho phép. Sau đó, bạn có thể đặt tập hợp WITH PERMISSION_SET = EXTERNAL_ACCESS .
  • Không sử dụng quy trình SP_OA * như được người dùng 3469363 ủng hộ . Các quy trình Tự động hóa OLE đó đã không được dùng nữa kể từ SQL Server 2005 và (hy vọng) sẽ bị loại bỏ vào một ngày nào đó (hy vọng sẽ sớm). Chúng cũng kém hiệu quả hơn và kém an toàn hơn so với SQLCLR.
  • Có thể tìm thấy nhiều ghi chú khác trong câu trả lời của tôi cho một câu hỏi tương tự trên DBA.StackExchange: Đưa dữ liệu dịch vụ web vào máy chủ SQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiệu suất truy vấn Entity Framework khác hẳn với việc thực thi SQL thô

  2. datetime so với datetimeoffset trong SQL Server:Sự khác biệt là gì?

  3. Cách chọn một số ký tự nhất định từ bên trái hoặc bên phải của chuỗi trong SQL Server

  4. SQL Server Management Studio - mẹo để cải thiện quy trình mã hóa TSQL

  5. Chuỗi kết nối cho SQL Server 2008 R2 Phiên bản cho SQL Server Express