Pessoal,
segue link interessante para aqueles que estão estudando para a prova de entrada do SQL 2008.
http://estudandopara70433.wordpress.com/
abraços,
Péricles.
This space is intended to be a channel of communication
between the enthusiasts of SQL Server.
We must be humble to recognise that we don't know everything.
In fact we know nothing... Everyday it's an opportunity to learn something new.
Questions and comments are welcome.
Contact me at
periclessevegnani@gmail.com or +55(47)999-189-109.
domingo, 13 de março de 2011
sábado, 12 de março de 2011
Google Maps - Geocode pelo Endereço
Olá,
existe uma forma de retornar a Latitude/Longitude de um determinado endereço, utilizando-se a API do Google Maps, a partir do SQL Server.
No mundo real, acredito que tal aplicação não estaria dentro do banco de dados, e sim em uma aplicação CLR, porém, para ilustrar o recurso disponível no SQL, resolvi demonstrá-lo aqui.
O objeto a ser utilizado é o MSXML2.ServerXMLHttp, praticamente da mesma forma que é feito em AJAX, e é acessado através das Procedures de Automação OLE do SQL Server, e para isto, você precisa habilitar o recurso.
Testei no SQL 2005 e 2008, não sei dizer se funciona no SQL 2000.
Abstract: using the SQL Server to return the coordinates of an address at Google Maps with OLE Automation Procedures (XMLHttp GET).
Segue o código:
-- Para habilitar o uso de OLE
-- Activate OLE
sp_configure 'show advanced options', 1
go
reconfigure
go
sp_configure 'Ole Automation Procedures', 1
go
reconfigure
go
-- Variaveis
-- Variables
DECLARE @Response VARCHAR(8000)
DECLARE @XML XML
DECLARE @Obj INT
DECLARE @Result INT
DECLARE @HTTPStatus INT
DECLARE @ErrorMsg VARCHAR(MAX)
DECLARE @URL VARCHAR(MAX)
DECLARE @GPSLatitude NUMERIC(20,6)
DECLARE @GPSLongitude NUMERIC(20,6)
DECLARE @Endereco VARCHAR(100)
-- Endereco para teste
-- Test address
SELECT @Endereco = 'Av. Paulista, 500, Sao Paulo, SP'
SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?sensor=false&address=' + @Endereco
-- Criacao do objeto XMLHttp
-- Object XMLHttp creation
EXEC @Result = sp_OACreate 'MSXML2.ServerXMLHttp', @Obj OUT
-- Envio do comando GET
-- GET command
BEGIN TRY
EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL,
'Content-Type', 'application/x-www-form-urlencoded'
EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml', @Response OUT
END TRY
BEGIN CATCH
-- Controle de Erro com bloco Try/Catch
-- Error Control
SELECT @ErrorMsg = ERROR_MESSAGE()
END CATCH
-- Destruicao do objeto
-- Object free
EXEC @Result = sp_OADestroy @Obj
-- Transformacao do resultado em XML
-- Convert result in XML Datatype
SELECT @XML = CAST(@Response AS XML)
-- Leitura dos valores desejados (latitude/longitude)
-- Gathering coordinates from XML
SELECT @GPSLatitude = @XML.value('(/GeocodeResponse/result/geometry/location/lat) [1]', 'numeric(10,6)')
SELECT @GPSLongitude = @XML.value('(/GeocodeResponse/result/geometry/location/lng) [1]', 'numeric(10,6)')
-- Exibicao dos resultados
-- Results
SELECT @GPSLatitude AS [Latitude], @GPSLongitude AS [Longitude], @XML AS [XML]
go
[]s
Péricles.
existe uma forma de retornar a Latitude/Longitude de um determinado endereço, utilizando-se a API do Google Maps, a partir do SQL Server.
No mundo real, acredito que tal aplicação não estaria dentro do banco de dados, e sim em uma aplicação CLR, porém, para ilustrar o recurso disponível no SQL, resolvi demonstrá-lo aqui.
O objeto a ser utilizado é o MSXML2.ServerXMLHttp, praticamente da mesma forma que é feito em AJAX, e é acessado através das Procedures de Automação OLE do SQL Server, e para isto, você precisa habilitar o recurso.
Testei no SQL 2005 e 2008, não sei dizer se funciona no SQL 2000.
Abstract: using the SQL Server to return the coordinates of an address at Google Maps with OLE Automation Procedures (XMLHttp GET).
Segue o código:
-- Para habilitar o uso de OLE
-- Activate OLE
sp_configure 'show advanced options', 1
go
reconfigure
go
sp_configure 'Ole Automation Procedures', 1
go
reconfigure
go
-- Variaveis
-- Variables
DECLARE @Response VARCHAR(8000)
DECLARE @XML XML
DECLARE @Obj INT
DECLARE @Result INT
DECLARE @HTTPStatus INT
DECLARE @ErrorMsg VARCHAR(MAX)
DECLARE @URL VARCHAR(MAX)
DECLARE @GPSLatitude NUMERIC(20,6)
DECLARE @GPSLongitude NUMERIC(20,6)
DECLARE @Endereco VARCHAR(100)
-- Endereco para teste
-- Test address
SELECT @Endereco = 'Av. Paulista, 500, Sao Paulo, SP'
SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?sensor=false&address=' + @Endereco
-- Criacao do objeto XMLHttp
-- Object XMLHttp creation
EXEC @Result = sp_OACreate 'MSXML2.ServerXMLHttp', @Obj OUT
-- Envio do comando GET
-- GET command
BEGIN TRY
EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL,
'Content-Type', 'application/x-www-form-urlencoded'
EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml', @Response OUT
END TRY
BEGIN CATCH
-- Controle de Erro com bloco Try/Catch
-- Error Control
SELECT @ErrorMsg = ERROR_MESSAGE()
END CATCH
-- Destruicao do objeto
-- Object free
EXEC @Result = sp_OADestroy @Obj
-- Transformacao do resultado em XML
-- Convert result in XML Datatype
SELECT @XML = CAST(@Response AS XML)
-- Leitura dos valores desejados (latitude/longitude)
-- Gathering coordinates from XML
SELECT @GPSLatitude = @XML.value('(/GeocodeResponse/result/geometry/location/lat) [1]', 'numeric(10,6)')
SELECT @GPSLongitude = @XML.value('(/GeocodeResponse/result/geometry/location/lng) [1]', 'numeric(10,6)')
-- Exibicao dos resultados
-- Results
SELECT @GPSLatitude AS [Latitude], @GPSLongitude AS [Longitude], @XML AS [XML]
go
[]s
Péricles.
sexta-feira, 4 de março de 2011
Five Classic Videos Every DBA Should Watch
Brent Ozar made a series of interviews and presentations that we should watch carefully.
It's actually Four videos...
http://www.brentozar.com/archive/2011/03/five-videos-every-dba-should-watch/
Péricles.
It's actually Four videos...
http://www.brentozar.com/archive/2011/03/five-videos-every-dba-should-watch/
Péricles.
quarta-feira, 2 de março de 2011
Check DB
Olá a todos !
Só pra lembrar, comando básico para fazer uma checagem no database...
De vez em quando é bom !
ALTER DATABASE Pubs SET SINGLE_USER
go
DBCC CHECKDB (Pubs, REPAIR_ALLOW_DATA_LOSS)
go
ALTER DATABASE Pubs SET MULTI_USER
go
Troque "Pubs" pelo nome do database em questão.
O database deve estar em SINGLE_USER MODE.
O parâmetro importante do CHECKDB tem 3 opções:
- REPAIR_ALLOW_DATA_LOSS: esta forma de reparo pode causar a perda de dados.
- REPAIR_FAST: mantido por questões de compatibilidade, não faz nada estrutural.
- REPAIR_REBUILD: corrige estruturas que não irão causar perda de dados.
Abraços.
Só pra lembrar, comando básico para fazer uma checagem no database...
De vez em quando é bom !
ALTER DATABASE Pubs SET SINGLE_USER
go
DBCC CHECKDB (Pubs, REPAIR_ALLOW_DATA_LOSS)
go
ALTER DATABASE Pubs SET MULTI_USER
go
Troque "Pubs" pelo nome do database em questão.
O database deve estar em SINGLE_USER MODE.
O parâmetro importante do CHECKDB tem 3 opções:
- REPAIR_ALLOW_DATA_LOSS: esta forma de reparo pode causar a perda de dados.
- REPAIR_FAST: mantido por questões de compatibilidade, não faz nada estrutural.
- REPAIR_REBUILD: corrige estruturas que não irão causar perda de dados.
Abraços.
Assinar:
Postagens (Atom)