Mostrando entradas con la etiqueta Sql. Mostrar todas las entradas
Mostrando entradas con la etiqueta Sql. Mostrar todas las entradas

lunes, 12 de noviembre de 2012

Cuando SUBSTR no sirve buenas son las expresiones regulares

[Oracle / SQL] SUBSTR es una función muy útil para recortar cadenas de datos. Pero hay ciertos casos en que se queda corta. Por ejemplo, si necesitas solamente obtener el usuario de un correo electrónico dejando fuera el dominio y la arroba.

El largo de los nombres de usuario varia entonces se debe pensar en algo mas elaborado o ir al grano con las expresiones regulares.

REGEXP_SUBSTR permite extraer una cadena que cumple con una expresión regular.

Ejemplo de uso:
select REGEXP_SUBSTR('m-donoso_2007@dominio.cl','[_a-z0-9-]*') from dual;

Donde
  • m-donoso_2007@dominio.cl es el correo (fake por cierto).
  • [_a-z0-9-]* Es la expresión regular que toma solo los caracteres indicados símbolos -, _, letras minúsculas y números tantas veces como aparezcan en la cadena. Por lo que deja fuera todo lo que esta después de la arroba.
El resultado de arriba da:
m-donoso_2007



Mas información
http://j.gs/1aEh

lunes, 23 de agosto de 2010

IIS APPPOOL\DefaultAppPool - Error de Inicio de sesión

Algun tiempo que no programaba en .Net. Hasta que me toco hacer una mantención sobre una aplicación vb.net y SQL 2005. El ambiente de desarrollo lo puse con SQL 2005 Express, Visual Studio 2008 e IIS 7.

Indiqué la cadena de conexión en el web.config, pero me aparecía este error que copio a continuación:

Error de servidor en la aplicación '/xxx_app'.
--------------------------------------------------------------------------------

No se puede abrir la base de datos "BD" solicitada por el inicio de sesión. Error de inicio de sesión.
Error de inicio de sesión del usuario 'IIS APPPOOL\DefaultAppPool'.


La solución esta en crear al usuario que indica el error en SQL con los permisos necesarios:

exec sp_grantlogin 'IIS APPPOOL\DefaultAppPool'
use TuBD
exec sp_grantdbaccess 'IIS APPPOOL\DefaultAppPool'


Fuente:
http://j.gs/RGi

jueves, 12 de marzo de 2009

Comillas en MS SQL

Mas de programador ha necesitado alguna vez o va a necesitar concatenar scripts en SQL. El problema surge para cuando un parametro tiene que pasarse entre comillas y tu ya vienes con comillas abiertas.

En SQL no puedes empezar con comillas dobles, empiezas con las simples y acabas tus opciones. En otros lenguajes puedes usar comillas dobles dentro de la expresion comillas simples y funciona.

En Sql puedes usar lo siguiente chr(39) para mostrar una comilla simple.

Por ejemplo necesitaba pasar una consulta a una variable y los parametros devian ir con comillas. La solución la comparto a continuacion:

@script = '
SELECT CAMPO1, CAMPO2 FROM TABLA
WHERE [DeclFec] BETWEEN ' + char(39) + convert(varchar,@fechadesde,112) + char(39) + ' AND ' + char(39) + convert(varchar,@fechahasta,112) + char(39)

viernes, 2 de enero de 2009

Cannot resolve collation conflict for equal to operation

Estaba pasando a producción un sistema .Net con SQL Server y tube algunos problemas. Entre ellos, que en producción (servidorPro) aparentemente no tenía todos los procedimientos que debian estar. Por lo que me surgio la necesidad de hacer una comparación de lo que tenía en ambos servidores. No tenia ninguna herramienta a mano, por lo que hice una consulta a las bases involucradas cada una en un servidor distinto.

Hice una consulta a la tabla sysojects de ambos servidores que devolviera todos los procedimientos (type='P') de la base con diferencia.

En ambiente de testing estoy parado sobre la base que estoy comparando. Ejecute el siguiente script:

select a.name, b.name
from sysobjects a
left outer join servidorPro.basePro.dbo.sysobjects b
on a.name=b.name
where a.type='P'
order by a.name

lo cual me dio el siguiente error:
Cannot resolve collation conflict for equal to operation

Por lo que al averiguar que collate tenian las bases:
SELECT DATABASEPROPERTYEX('basePro','Collation')

me di cuenta que habian diferencias, una de ellas tiene: Modern_Spanish_CI_AS y la otra Latin1_General_BIN. De modo que a mi script anterior agregue la linea
COLLATE Latin1_General_BIN en la linea donde comparo los campos.

select a.name, b.name
from sysobjects a
left outer join servidorPro.basePro.dbo.sysobjects b
on a.name=b.name COLLATE Latin1_General_BIN
where a.type='P'
and b.name is null

¿Y que retorna este script?
Retorna todos los procedimientos de cada base y cuando uno de ellos no tiene coincidencia osea no se encuentra me retorna un NULL, con eso se que procedimiento me falta en que base de datos.

sábado, 8 de noviembre de 2008

de MS SQL 2005 a MS SQL 2000

Probablemente mas de alguno ha intentado migrar una base de datos de SQL 2005 a la versión 2000 a travez de un script del asistente para secuencia de comandos del Magament Studio. Bueno,  lo siguiente es que cuando intentas correr el script en SQL 2000 te da errores.

Para exportar correctamente es posible indicar al asistente de SQL 2005 la versión.
El flujo es:
Seleccionar Base de datos -> 
Elegir opciones de secuencia de comandos, en esta ventana debes buscar la linea Secuencia de comando para versión del servidor y elijes SQL Server 2000.

Error '3622' en tiempo de ejecución:

Siguiendo con el proyectito retro de migrar una aplicación VB6 y Access a SQL. Intente conectarme  a la misma base pero en SQL 2005 Express y me aparecio el siguiente error:

Error '3622' en tiempo de ejecución:

Debe usar la opción dbSeeChanges con OpenRecordset al tener 
acceso a una tabla de SQLServer que tenga una columna IDENTITY.

El cual solucione agregando lo siguiente cuando abro el recordset:

Set rsTmp=gdbCurrentDB.OpenRecordset(rName,dbOpenDynaset, dbSeeChanges)

funciono perfectamente.
La solución la obtuve en el siguiente link:

viernes, 24 de octubre de 2008

SQL Server Migration Assistant for Access

SQL Server Migration Assistant for Access, es una herramienta de Microsoft que permite migrar bases de datos Access a SQL 2005. La descarga es gratuita, solo hay que registrarse y bajar un archivo de licencia.

La interfaz de la aplicación es bastante intuitiva. Vamos a ver que digo despues de probarla mas exhaustivamente.

http://www.microsoft.com/downloads/details.aspx?familyid=D842F8B4-C914-4AC7-B2F3-D25FFF4E24FB&displaylang=en

martes, 21 de octubre de 2008

Exportar consulta SQL a Excel

Deja de copiar y pegar los resultados de tus consultas de SQL a Excel, genera directamente el archivo desde SQL ejecutando
este script en el Query Analyser

EXEC sp_makewebtask
@outputfile = '\\lugarenlared\D\archivo.xls',
@query = 'select * from Tabla',
@colheaders =1,
@lastupdated=0,
@resultstitle='Informe en Excel'