Pour quelque chose comme ça, vous n'avez pas besoin d'une implémentation complète du service Web. Vous pouvez utiliser SQLCLR (intégration .NET de SQL Server) pour soumettre la requête à l'URL, récupérer la réponse en XML (sauf si vous pouvez trouver une bibliothèque JSON qui fonctionnera sans étant défini sur UNSAFE
), puis analysez cette réponse.
Consultez les pages MSDN suivantes :
- HttpWebRequest
- HttpWebResponse
- XmlDocument
- Pour échapper l'adresse :
- Si vous utilisez SQL Server 2005, 2008 ou 2008 R2, utilisez Uri.EscapeDataString car il était disponible avant .NET Framework v4.5
- Si vous utilisez SQL Server 2012, 2014 ou une version plus récente, vous pouvez utiliser Uri.EscapeDataString ou, si le serveur a été mis à jour vers au moins .NET Framework v4.5, vous pouvez également utiliser WebUtility.UrlEncode
Selon la documentation de l'API Google Geocoding , l'URI de l'API doit avoir le format suivant :
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Soumettez simplement cela avec ces 2 variables remplacées par leurs valeurs appropriées via HttpWebRequest
, puis appelez HttpWebRequest.GetResponse
, puis appelez HttpWebResponse.GetResponseStream
. Et ne faites pas oublier d'appeler le Close
et Dispose
méthodes de HttpWebResponse
(ou instanciez-le dans un using
bloc) !!
Remarques supplémentaires :
- Si ce n'est déjà fait, vous devrez activer (une fois) "l'intégration CLR" au niveau du serveur :Activation de l'intégration CLR
- Ne prenez pas la route facile et définissez la base de données sur
TRUSTWORTHY ON
. Il suffit de signer l'assembly avec un mot de passe, puis de créer une clé asymétrique dans lemaster
base de données en pointant vers votre DLL signée, puis créez une connexion à partir de cette clé asymétrique, et enfin accordez à cette connexion leUNSAFE ASSEMBLY
autorisation. Ensuite, vous pouvez définir l'assemblageWITH PERMISSION_SET = EXTERNAL_ACCESS
. - N'utilisez pas les procédures SP_OA* comme recommandé par user3469363 . Ces procédures OLE Automation sont obsolètes depuis SQL Server 2005 et seront (espérons-le) supprimées un jour (espérons-le bientôt). Ils sont également moins efficaces et moins sécurisés que SQLCLR.
- Encore plus de notes peuvent être trouvées dans ma réponse à une question similaire sur DBA.StackExchange : Importation des données de service Web dans le serveur SQL