miércoles, 16 de julio de 2014

Ejecutar Comando del Sistema con MySQL

MySQL no cuenta con una función para ejecutar algún comando del Sistema Operativo, pero se puede hacer con una implementacion de UDF, lo único que necesitamos hacer en Windows es mover la librería lib_mysqludf_sys.dll (en linux: lib_mysqludf_sys.so) al directorio de MYSQL\lib\plugin, y crear la función externa de la siguiente manera:

CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys.dll';

Ahora ya podemos utilizar la función:

SELECT sys_exec("mkdir folder");

Creará un folder en el directorio de data de MySQL.

La librería se puede descargar de : https://drive.google.com/folderview?id=0B1eEHBrSu7acYnNkSVR3cEp5ejg&usp=sharing.

viernes, 11 de julio de 2014

Crear Folder en SQL Server

Podemos crear un folder con OLE Automation, de la siguiente manera:

DECLARE @OLEresult   INT  
DECLARE @OLEfilesytemobject INT  
DECLARE @OLEfolder   INT  
DECLARE @OLEsource   VARCHAR(255)  
DECLARE @OLEdescription  VARCHAR(255)  
DECLARE @newfolder VARCHAR(255)

SET @newfolder = 'C:\Backups\New_Folder'

EXEC @OLEresult=sp_OACreate 'Scripting.FileSystemObject', @OLEfilesytemobject OUT  
IF @OLEresult <> 0 BEGIN  
EXEC sp_OAGetErrorInfo @OLEfilesytemobject  
RETURN  
END  

EXEC @OLEresult=sp_OAMethod @OLEfilesytemobject, 'FolderExists', @OLEfolder OUT, @newfolder  
IF @OLEfolder=0 BEGIN  
EXEC @OLEresult=sp_OAMethod @OLEfilesytemobject, 'CreateFolder', @OLEfolder OUT, @newfolder  
END  

IF @OLEresult <> 0 BEGIN  
EXEC sp_OAGetErrorInfo @OLEfilesytemobject, @OLEsource OUT, @OLEdescription OUT  
SELECT @OLEdescription='Could not create folder: ' + @OLEdescription  
RAISERROR (@OLEdescription, 16, 1)   
END 

EXECUTE @OLEResult = sp_OADestroy @OLEfilesytemobject

lunes, 7 de julio de 2014

Consumir RESTFul en SQL Server

Primero tenemos que activar Ole Automation Procedures con las siguientes lineas:

-- HABILITAR Ole Automation Procedures
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

Después creamos un objeto MSXML2.XMLHTTP al que se le asigna una URL y un método GET, de la siguiente manera:

DECLARE @Object INT
DECLARE @ResponseText VARCHAR(255)
DECLARE @url VARCHAR(MAX)

SET @url = 'http://freegeoip.net/json/189.158.46.223'

EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'get', @url, 'false'
EXEC sp_OAMethod @Object, 'send'
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT

SELECT @ResponseText AS RESPONSE

EXEC sp_OADestroy @Object