Đố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 Close
và Dispose
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 trongmaster
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ợpWITH 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