Mostrando entradas con la etiqueta SQL Server 2005. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL Server 2005. Mostrar todas las entradas

miércoles, 14 de octubre de 2009

Servidor vinculado SQL Server 2005 y PostgreSQL

Pasos:
1. Descargarse e instalarse la version odbc mas actual para PostgreSQL de: http://www.postgresql.org/ftp/odbc/versions/msi/psqlodbc_08_04_0100.zip

2. Crear un oriden de datos de tipo “System DNS” en Panel de control->Herramientas administrativas->Origenes de datos ODBC, que conecte a su servidor PostgreSQL y nombrarlo por ejemplo “Pucallpa” (base de datos espacial con extensión PostGIS de ejemplo)


Figura 1: conexión ODBC a una base de datos PostgreSQL

3. Correr el siguiente código en el SQL Server Management Studio Express:

EXEC master.dbo.sp_addlinkedserver @server = N'Pucallpa', @srvproduct=N'Microsoft OLE DB Provider for ODBC Driver', @provider=N'MSDASQL', @datasrc='Pucallpa', @location='localhost', @catalog='pucallpa'

Este código es para añadir un servidor vinculado a SQL Server.

4. Correr el siguiente código en el SQL Server Management Studio Express: para asociar el login al servidor vinculado.


EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Pucallpa', @useself=N'False', @locallogin=NULL, @rmtuser='postgres', @rmtpassword='xxx'

5. Ejecutar el siguiente código SQL desde SQL Server 2005:

SELECT * FROM OpenQuery(Pucallpa, 'select cod_lote from lotes')

Algo que me pidieron hacer hace un tiempo como consulta fue: saber el numero de habitantes en los lotes que están a 500 metros de un mercado de la ciudad de Pucallpa (llamado Mercado Nro 02)

SELECT --a.codlote, a.radio, u.nro_habitantes

sum(nro_habitantes)

FROM OpenQuery(Pucallpa, 'select * from mercadolimit5001000') a

left join tb_unidad_catastral u on substring(u.ucnumero,7,8) = a.codlote

where a.radio = 500


Figura 2: Lotes a 500 mts del Mercado N° 2

Para saber cuantos lotes estan a una distancia de otro lote (en este caso el mercado n° 2) hago la siguiente consulta en PostgreSQL con extensión espacial PostGIS:

Figura 3: Consulta espacial en la base de datos “pucallpa” de PostgreSQL

select l.* from lotes l, lotes a where( st_distance(l.geometria, a.geometria)<=1000 and a.cod_lote in ('01040001', '01040002', '01040003', '01040004', '01040005'))

  1. La tabla mercadolimit5001000 a sido creada con la finalidad de almacenar los datos de la consulta anterior, se ejecuto el sigueinte SQL en postgres:

insert into mercadolimit5001000 select l.cod_lote, 500 from lotes l, lotes a where( st_distance(l.geometria, a.geometria)<=500 and a.cod_lote in ('01040001','01040002','01040003','01040004','01040005'

Si desean ver un poco mas a modo de consulta y capas sobre la base de datos espacial que se utilizo en este post esta alojada en el Servidor de Mapas de la Municipalidad Provincial de Coronel Portillo en la que eh sido colaborador directo, ubicado en la siguiente direccion: http://201.230.96.134/pucallpa/mapa.phtml

Proximos Articulos:

- retomando PHP Zend Framework demo

- Google Maps con PHP aplicado a un Sistema de Posicionamiento Global



martes, 26 de febrero de 2008

Accediendo a SQLServer2005 Express con JDBC - Parte 1 Configuracion de SQL Server 2005 Express

Introduccion
En este tutorial veremos como conectarnos y mostrar datos de SQL Server 2005 Express con JDBC.

Todo esta dividido en 4 partes:

  1. Configuracion de SQL Server 2005 Express
  2. Configuraciones en Netbeans y creación de una clase ConnectionFactory para acceso a base de datos.
  3. Operaciones SQL
  4. Posibles problemas
Requerimientos:
  1. Microsoft SQL Server JDBC Driver
    La última version, visite Microsoft SQL Server 2005 JDBC Driver.
  2. NetBeans con JRE (Java Runtime Environment) version 1.5 o superior
    Puede encontrar en NetBeans.org.
Configuración paso a paso:
  • SQL Server 2005 Express
Por defecto SQL Server 2005 no permite conexiones remotas y esta deshabilitado ls cuenta sa, asi que nosotros tenemos que hacer los cambios respectivos de forma manual, si usted trata de conectarse se le mostrará un mensaje de error por ejemplo sea cual sea el nombre de su servidor:







Otro problema por defecto que puede surgir cuando queremos conectarnos es que las conexiones TCP/IP están deshabilidatas en SQL Server 2005 Express. Asi que JDBC no se puede conectar y usted puede recibir la siguiente exception …
     Network error IOException: Connection refused: connec

Ahora vamos a configurar estas dos opciones:

1. Habilitar TCP/IP
  1. Click Inicio > Todos los programas > Microsoft SQL Server 2005 > Herramientas de configuracion > SQL Server Configuration Manager.
  2. En el panel izquierdo de la ventana d e SQL Server Configuration Manager, expandir Configuracion de red de SQL Server 2005 y click en Protocolos de SQLEXPRESS.
  3. En el panel derecho de la ventana de SQL Server Configuration Manager,Click derecho en TCP/IP y click para habilit ar.
  4. O través click derecho en TCP/IP y c lick en propiedades.
  5. En la ventana de propiedades deTCP/IP, click en el panel direcciones ip, y expanda IPALL.
  6. Debajo de IPALL, borrar el campo de TCP Dynamic Ports y entonces ingrese un numero de puerto en el campo TCP Port. Usualmente, tiene el valor por defecto de 1433.
  7. En la ventana de propiedades TCP/IP, click OK.
  8. En el panel izquierdo de la ventana SQL Server Configuration Manager, click en Servicios de SQL Server 2005.
  9. En el panel derecho de la ventana de SQL Server Co nfiguration Manager,click derecho en SQL Server (SQLEXPRESS) y click en reinicar.

2. Habilitar la autenticación por conexión remota

Para resolver este problema. Uno es habilitar el modo de autenticación ambos SQL Server y Windows en el servidor y la otra es habilitar la conexión remota en el nave gador de SQL Server.
      • Chekear que usted tenga permitido el modo bo th SQL Server and Windows Authentication mode (Si usted no usa el modo Windows Authentication). Para la instancia del usuario ‘sa’.
1. Iniciar sesion usando SQL Server Management Studio Express al Servidor SQL y en modo Windows Authentication. Esto podría usar su cuenta de Windows para autenticarse con SQL Server.
2. En el objeto Explorador, click derecho en el nombre de instancia y seleccionar propiedades.


3. Seleccionar la página Security y cambiar la autenticación del servidor al modo SQL Server and Windows Authentication mode y presionar el boton Ok.
4. Click derecho otravés en el nombre de la instancia, seleccionar Restart para reiniciar el Servicio de SQL Server.

5. Esto es todo. Tienes habilitado el modoSQL Server and Windows authenticat ion, ahora usted puede iniciar sesion en SQL Server con su cuenta de Windows o su cuenta creada.

      • Chekear que usted tenga habilitado la conexión remota en Configuración de superficie de SQL Server
1. Abrir Configuración de superficie de SQL Server.


2. Seleccioar Configuracion de superficie para Servicios y Conexiones.


3. En el lado izquierdo, expandir su instancia de SQL Server -> Motor de base de datos -> Conexiones Remotas. En el lado derecho, seleccionar Conexiones locales y remotas -> Usar TCP/IP y canalizaciones con nombre.

4. En el lado izquierdo, seleccionar Explorador de SQL Server -> Servicio.
En el lado derecho, si el tipo de inicio esta Deshabilitado, usted necesita cambiarlo a Automatico. Clik en Aceptar.

5. Iniciar sesion usando SQL Server Management Studio Express al Servidor SQL y en modo Windows Authentication.

6. En el panel Object Explorer , expandir Security / nodo Logins.

7. Seleccionar el usuario "sa".

8. Click derecho en el usuario "sa"->propiedades e ingresar password para este usuario.


9. Luego seleccione la página Status y dele Click en la opcion enable de Login, Click en Ok

10. Click derecho otravés en el nombre de la instancia, seleccionar Restart para reiniciar el Servicio de SQL Server.

Probando lo hecho:

Usted ha finalizado la configuracion. Ahora intente iniciar sesion en su Servidor SQL de forma remota o en su computadora usando el modo SQL Server authentication.


Inicio de sesion a SQL Server con éxito.