Archivo para abril, 2010

Acceder a las claves “foráneas” mediante SQLClient

Posted in Programación with tags , , , on 24 abril, 2010 by febrer

Una manera de acceder a los esquemas de SQL Server utilizando OleDb es mediante la función GetOleDbSchemaTable. Utilizando el parámetro System.Data.OleDb.OleDbSchemaGuid.Foreign_Keys, el acceso a las claves “foráneas” es muy sencilla. Esta función devuelve un DataTable con la información de las “Foreign Keys” de todas las tablas con la siguiente información:

FK_TABLE_NAME
FK_COLUMN_NAME
PK_TABLE_NAME
PK_COLUMN_NAME

De esta manera, podemos saber todas las relaciones de todas las tablas de nuestra base de datos.

Pero con SqlClient, este método no existe, la manera de acceder al esquema, es mediante la tabla “Information_Schema.*”. Un forma muy sencilla de obtener la misma tabla es realizando la siguiente consulta:

SELECT ccu.table_name AS FK_TABLE_NAME,
ccu.column_name AS FK_COLUMN_NAME,
rc.constraint_name AS PK_COLUMN_NAME,
ccu2.table_name AS PK_TABLE_NAME
FROM information_schema.constraint_column_usage ccu
JOIN information_schema.referential_constraints rc ON ccu.constraint_name=rc.constraint_name
JOIN information_schema.constraint_column_usage ccu2 ON rc.unique_constraint_name=ccu2.constraint_name

Ficheros de configuración y codificación

Posted in Programación with tags , , , , , on 15 abril, 2010 by febrer

Tras unos cuantos quebraderos de cabeza, ayer solucione un problema que posiblemente os pueda pasar a más de uno.

Esta relacionado con los ficheros de configuración de nuestras aplicaciones .NET (fichero .config), Windows 2003 Server (posiblemente en xp no pase) y acentos (quizás con un fichero sin caracteres extendidos, esto no ocurra). Casualidad el que estaba utilizando sí los tenía.

El problema radica en la codificación del fichero (Unicode, ANSI, UFT-8, etc …).

El problema nos lo encontramos al editarlo con “wordpad”. Este editor, cambia la codificación del fichero, haciendo que dicho fichero no sea reconocido correctamente por nuestra aplicación y dando un error en el visor de eventos que para nada aclara el verdadero problema.

Este es el detalle del error:

Event Type: Error
Event Source: .NET Runtime 2.0 Error Reporting
Event Category: None
Event ID: 5000
Date:  4/13/2010
Time:  2:43:15 PM
User:  N/A
Computer: SERVER1
Description:
EventType clr20r3, P1 k2dtc2xq5edgbqzwwi41i4xzrenn5n2p, P2 1.0.0.0, P3 4bbf2346, P4 system.configuration, P5 2.0.0.0, P6 4889de74, P7 1a6, P8 136, P9 ioibmurhynrxkw0zxkyrvfn0boyyufow, P10 NIL.
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Para solucionarlo, simplemente hay que editar el fichero con “notepad”, y utilizar la opción “guardar como”, indicando UNICODE o UTF-8.

Posiblemente alguno ya conozca este problemilla, pero creo que es interesante compartirlo.