Database diagram support cannot be installed because this database does not have a valid owner. Solucionado

18 11 2009

Este error se presento al querer mostrar los diagramas de SQL Server, al principio crei que se debia a un error de configuración en el cliente del SQL Server Management Studio, sin embargo el error que mencionaba era el siguiente.

Database diagram support cannot be installed because this database does not have a valid owner.
To continue, first use the Files page of the Database Properties dialog box or ALTER AUTORIZATION statement to set the database owner to a valid login, then add the database diagram suppoert objects.

Como se menciona en el mensaje habra que establecer un usuario válido como dueño de la Base de Datos, en mi caso tenia el de NombreMaquina\Administrator. asi que se lo cambie al usuario sa

ALTER AUTORIZATION ON DATABASE::dbname TO sa

O bien desde la interfase gráfica del SQL Server Management Studio.

Si esto no funciona prueba, esta otra solución o revisen este hilo.

Saludos.





Validar una fecha en formato mm/YYYY (mes/año) con JavaScript y Expresiones Regulares

4 11 2009

Para validar una fecha en formato mes/año o mm/YYYY usando JavaScript se puede hace uso de la siguiente funcion, que hace uso de una expresion regular, de hecho, las expresiones regulares abren un mundo de posibilidades.

function validateMMYYYY(cadena) {
	var reg = new RegExp("(((0[123456789]|10|11|12)/(([1][9][0-9][0-9])|([2][0-9][0-9][0-9]))))");

	if (reg.test(cadena))
		return true;
	else
		return false;
}

Recomiendo usar Expresso de www.ultrapico.com, para crear las expresiones regulares y probarlas. Una pagina para las expresiones regulares es precisamente http://regexlib.com





Calcular el primer dia y el ultimo de un mes dado, en SQL

4 11 2009

Para el acordeón, una forma de calcular el dia inicial y final de un mes, esto con el fin de determinar si un mes tiene 28, 30 o 31, es de la siguiente manera.

declare @mes varchar(2)
declare @fecha as varchar(8)
set @mes = '02'
set @fecha = '2009' + @mes + '01'
select @fecha AS FECHA_INICIAL,
	CAST (@fecha as smalldatetime) AS FECHA_INICIAL,
	dateadd(m,1, CAST (@fecha as smalldatetime)) AS FECHA_SIGUIENTE,
	dateadd(d,-1,dateadd(m,1, CAST (@fecha as smalldatetime))) AS FECHA_FINAL

Un escenario que me imagino para usarlo es en el que se requiere calcular o ejecutar un proceso en un mes en particular (fecha entre un rango inicial y final), sin embargo, esto es solo una curiosidad, porque tambien es posible hacer un calculo para un mes en particular poniendo en la condicion algo así como esto

SELECT * FROM TABLA WHERE MONTH(FECHA)=@MES

Sin embargo, creo que hacerlo de esta manera, de tener un índice la TABLA en cuestión no se usuaría en la consulta, no así si usaramos una condición de tipo between @FECHA_INICIAL AND @FECHA_FINAL. Que alguien me corriga, si tengo la idea errónea.





Ayuda con la sintaxis para ejecutar DTS con DTSRun, usando DTSRunUI

8 05 2009

Hace poco se nos presentó un problema con un Job de SQLServer 2000, la descripción de la falla indicaba lo siguiente:

Executed as user: NT AUTHORITY\SYSTEM.
Line 1: Incorrect syntax near ‘/’.
[SQLSTATE 42000] (Error 170) The identifier that starts with ‘Z0×662C096C16742FAD8CDB6A2BED09B343726B56DC63026D657
E0B5D08C6C8BAF4A49AD11C72729B9A6945B8E0A4568BE4E4CD6
AAD2A7B47C0F5147EA2DF12C’ is too long.
Maximum length is 128.
[SQLSTATE 42000] (Error 103). The step failed.

(1 row affected)

Buscando la razón de la falla, me tope con la posible solución en la página de SQLDTS, que explica como usar la interfaz gráfica para la ejecución de DTS (Paquetes de Transformación de Datos) con DTSRunUi.

Es posible programar un paquete DTS desde el Enterprise Manager, esto hace que se genere un job y en los pasos dentro de las propiedades se incluya un comando del SO que llama al DTSRun con algo así como: DTSRun /~Z0xD3D4C356186A9DC77B1EE2E50C9A… esta cadena es posible generarla con la herramienta DTSRunUI

Leer el resto de esta entrada »





Error en el MS Project 2007 al visualizar el Diagrama de Gantt. Solucionado

17 03 2009

Me sucedió que me enviaron un archivo de MS Project hecho en la versión 2007 en español, tengo la versión en inglés. Al intentar abrirlo me marca el error:

The view or Report cannot be displayed because the table “Entrada” on which it is based has been deleted.

Este error lo muestra al abrirlo la primera vez. Sólo se puede visualizar el Tracking Gantt, pero no la vista Gantt Chart, que al querer seleccionarlo muestra información adicional.

Mensaje de Error al visualizar el diagrama de Gantt.

Mensaje de Error al visualizar el diagrama de Gantt.

Leer el resto de esta entrada »





Escritorios Virtuales en Windows

3 03 2009

Si tienes la necesidad de tener mas de un escritorio para tener ordenado tus programas: en uno solo el correo, en otro los de desarrollo, o otro mas para diseño, con el fin de no atiborrar la barra de tareas. Una posible solución es virtualizar los escritorios cuando no se puede tener escritorios físicos. Existen varias herramientas que permiten obtener esa funcionalidad. El que mas he usado es:

Dexpot que hoy va por su versión 1.4 estuvo un tiempo abandonado pero alparecer lo han retomado, es free (por ahora), algunas de sus caracteristicas son:

  • La posibilidad de configurar el número de escritorios,
  • Reglas a ventanas,
  • Opacidad,
  • Permite la previsualización de las ventanas abiertas,
  • Se ejecuta en XP y Vista,
  • Multilenguaje,los archivos se descargan aparte, originalmente en alemán,
  • Configuracion de los accesos directos para cambiar entre escritorios,
  • Fondos de pantalla personalizados para cada escritorio.

He aqui algunas capturas:

Desktop Manager

Desktop Manager

Leer el resto de esta entrada »





Imprimir u Obtener la lista de subdirectorios y sus Archivos

11 12 2008

Si deseas imprimir o exportar a texto la estructura de un directorio, se puede hacer con el comando dir, ese comando de toda la vida. Desde el Explorador de Windows no es posible, al menos no lo localizé. Asi que lo haremos en Modo Bestia, desde línea de comandos.

Veamos el modo en que se puede realizar.

dir "C:\Temp" /B /S

El parámetro /B indica que no se muestren resúmenes ni encabezados

El parámetro /S indica se recorra todo el arbol de directorios.

Si quieren enviarlo a un archivo de Texto lo hariamos mediante el modificador de flujo >.Como sigue:

dir "C:\Temp" /B /S > "c:\dirout.txt"

Leer el resto de esta entrada »





Funciones IsNumeric e IsDecimal en JavaScript

1 12 2008

Me topé con la necesidad de usar las funciones IsNumeric e IsDecimal en JavaScript, pero no existen tales, sin embargo es posible crearlos de manera sencilla mediante expresiones regulares, veamos como quedarían.

Para detectar si un conjunto de caracteres (entiéndase una cadena) es un número entero, usamos la siguiente función:

function IsNumeric(expression)
{
	return (String(expression).search(/^\d+$/) != -1);
}

Para saber si la cadena pasada como parámetro es un número con decimales, usando como separador de decimales el punto . hacemos uso de esta otra función.

function IsDecimal(expression)
{
	return (String(expression).search(/^\d+(\.\d+)?$/) != -1);
}

Usarlos es tan simple como llamar a esas funciones y evaluar el valor devuelto.





Obtener el número de registros de una tabla sin hacer select count(*)

16 10 2008

Una forma de obtener el numero de registros de una tabla en SQLServer aparte del clásico:

SELECT COUNT(*)
  FROM NombreTabla

es consultando la tabla del systema sysindexes del siguiente modo:

SELECT rows
  FROM sysindexes
  WHERE id = OBJECT_ID('NombreTabla') AND indid < 2

La ventaja de ésta forma es que se evita que se recorra la tabla o algún índice para obtener el número exacto de registros, esto es útil en tablas con millones de registros, al hacerlo de la primera forma se lleva tiempo en devolver el resultado, afectando el desempeño.

Nota: Esto es útil cuando no se requiere saber el número exacto de registros de una tabla, sin embargo, es necesario tener activado la opcion de creación automática de estadísticas en la Base de datos.





Propiedad State de un RecordSet

9 10 2008

Si necesitamos saber si un RecordSet esta abierto o cerrado en las aplicaciones hechas en ASP clásico (3.0), haremos uso de la propiedad State que retorna un valor que describe si el objeto esta abierto, cerrado, conectando, ejecutando la consulta u obteniendo datos El valor devuelto es un ObjectStateEnum, cuyo posibles valores son los siguientes:

Constantes del ObjectStateEnum

Constante Valor Descripción
adStateClosed 0 El Objeto está cerrado
adStateOpen 1 El Objeto está Abierto
adStateConnecting 2 El Objeto está Conectando
adStateExecuting 4 El Objeto está Ejecutando
adStateFetching 8 El Objeto está Obteniendo los datos

Esta propiedad puede ser usada con los objetos Command, Connection, Record, Recordset y Stream. Con la sintaxis:

Object.State

Lo siguiente es un ejemplo de como usarlo

IF rsClear.State <> 0 THEN 'Si no esta cerrado
   rsClear.CLOSE
   Set rsClear = Nothing 'Liberar Recursos
END IF