La vida de un DBA, Basis y Bedel en Puerto Rico
2010/03/06
  Playstation

Get your Portable ID!
 
2010/02/21
  SQL Server left pad with zeros function

Funcion en SQL Server para ajustar un string a la derecha, llenandolo a la izquierda con ceros.

if object_id ( 'fnLeftPadWithZeros', 'FN' ) is not null
   drop function fnLeftPadWithZeros
go

create function fnLeftPadWithZeros(@strInput varchar(max), @IntLenght smallint)
   returns varchar(max)
as
begin
   if @strInput is not null
   begin
      if len(@strInput) <= @IntLenght
      begin
         set @strInput = replicate('0', @IntLenght - len(ltrim(rtrim(@strInput)))) +
                         @strInput
      end
   end
   return @strInput
end
go

-- PRUEBA DE LA FUNCION
declare @Text varchar(256)
set @Text = '1'
select Original = @Text
select SpacesRemoved = dbo.fnLeftPadWithZeros(@Text, 10)
go

--

 
  Oracle's TRANSLATE function in SQL Server

-- =======================================================================
-- Author : Manuel Daponte
-- Created: 2009-10-28
-- Descrip:
--
--    Copia barata de la funcion translate de Oracle
--    Al string @expr le busca si contiene alguno de los caracteres
--    del @from y los reemplaza por el caracter en la misma del @to
--
--    Ejemplo:
--       translate('Mañana será mía', 'áéíóúñ', 'aeiou~')
--    Retornara:
--       Ma~ana sera mia
-- =======================================================================

use Exencion
go

create function translate (
   @expr  varchar(max),
   @from  varchar(50),
   @to    varchar(50)
)
returns varchar(max)
as
begin
   declare @len_expr  smallint  -- largo de la expresion donde se haran los reemplazos
   declare @len_from  smallint  -- largo del string con los caracteres a reemplazar
   declare @len_to    smallint  -- largo del string con los caracteres de reemplazo

   -- averiguamos los largos de los strings
   select @len_expr = len(@expr), @len_from = len(@from), @len_to = len(@to)

   -- no tenemos nada que cambiar
   if @len_expr = 0 or @len_from = 0
      return @expr

   declare @char_from char(1)   -- para guardar cada caracter que queremos reemplazar
   declare @pos_from  smallint  -- en que posicion del @from esta el caracter que estamos procesando
   set @pos_from = 1

   -- recorremos el @from
   while (@pos_from <= @len_from)
   begin
      -- cual es el equivalente en @to de este caracter
      if @pos_from <= @len_to
      begin
         -- el caracter tiene un reemplazo
         set @expr = replace(@expr,
                             substring(@from, @pos_from, 1),
                             substring(@to, @pos_from, 1))
      end
      else
      begin
         -- el caracter no tiene un reemplazo
         set @expr = replace(@expr, substring(@from, @pos_from, 1), '')
      end

      -- pasamos al siguiente caracter del @from
      set @pos_from = @pos_from + 1
   end
   return @expr

end

...Y esta es la manera de ejecutarla:

select dbo.translate('Mañana será mía, Ñoño!', 'áéíóúñ', 'aeiou~')

Ma~ana sera mia, ~o~o!

select dbo.translate('Mañana será mía, Ñoño!', 'áéíóúñ', 'a')

Maana sera ma, oo!

 
  Como copiar un diagrama de la base de datos en SQL Server 2005

How to copy a database diagram in SQL Server 2005

-- que diagramas hay en esta base de datos
-- show database diagrams in current database
select *
  from sysdiagrams

-- copio el diagrama con un nuevo nombre
-- copy the diagram with a new name
insert into sysdiagrams (name, principal_id, version, definition)
   select 'NUEVO DIAGRAMA', principal_id, version, definition
     from sysdiagrams
    where name = 'DIAGRAMA'

 
2008/07/17
  Red Hat Linux 5.2 Tikanga - Vim no colorea según sintaxis - Vim does not do syntax coloring

El dichoso Vim no estaba poniendo los colores correctamente al editar archivos en los servidores con RHEL 5.2. Sin embargo, en RHEL 4.3 si funcionaba correctamente.

 

Después de darle MUCHAS vueltas, resulto que el culpable era un script ejecutado por /etc/profile. El script era /etc/profile.d/vim.sh

 

El contenido original de 5.2 está comentado y el código no comentado viene de 4.3:

 

#if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then

#  [ -x /usr/bin/id ] || return

#  [ `/usr/bin/id -u` -le 100 ] && return

#  # for bash and zsh, only if no alias is already set

#  alias vi >/dev/null 2>&1 || alias vi=vim

#fi

if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then

  # for bash, pdksh and zsh, only if no alias is already set

  alias vi >/dev/null 2>&1 || alias vi=vim

fi

 

Así que todo el problema era el dichoso alias a Vim.

 

Por alguna razón, en esta versión de Linux, los usuarios con ID menor o igual a 100 no tienen Vim.

 
2008/06/06
  Hacer consultas desde SQL Server 2000 al Active Directory

Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:

http://www.dbforums.com/archive/index.php/t-404559.html

Crear el linked server:

EXEC master.dbo.sp_addlinkedserver
   @server = N'ADSI',
   @srvproduct=N'Active Directory Services',
   @provider=N'ADsDSOObject',
   @datasrc=N'servidor-ad.dominio.local'  -- servidor.dominio.com

Como la PC no está conectada al dominio, modificar el linked server y en security, poner

Be made with this security context

y colocar un usuario del dominio (dominio\usuario) y su password.

Después, ejecutar este query

select *
  from openquery(ADSI,
       'SELECT name
          FROM ''LDAP://servidor-ad.dominio.local''
         WHERE objectCategory = ''Person'' AND objectClass = ''user''
       ')

 
  Cygwin - Ordenando por una columna - Sorting by a column

Estoy buscando unas lineas en varios archivos y tratando de ordenarlas por una fecha (yyyymmdd) que está entre las columnas 72 y 78. El problema que tengo con el comando sort es que no le consigo ningun parametro para esto. Siempre trata de buscar un delimitador entre columnas y en mis archivos no hay.

I'm looking for some lines in several files and trying to sort them by a date (yyyymmdd) that is between columns 72 and 78. The problem that I'm having with the sort command is that I don't find any parameter for that. The command is trying to find a delimiter between columns and ther's none in my files.

Al final, este es el comando que funcionó:

In the end, this is the command that worked:

$ grep --no-filename ^00010316 Header* | sort -t@ --key=1.72,1.78

Se indica que el delimitador es @ (no hay ninguno en los archivos) y se ordena por la primera columna, en las posiciones entre la 72 y 78.

We indicate that the delimiter is @ (there's no one in the files) and we sort by the first column, between positions 72 and 78.

 
2008/06/02
  Hacer consultas desde SQL Server 2000 al Active Directory

Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:

http://www.dbforums.com/archive/index.php/t-404559.html

Crear el linked server:

EXEC master.dbo.sp_addlinkedserver
   @server = N'ADSI',
   @srvproduct=N'Active Directory Services',
   @provider=N'ADsDSOObject',
   @datasrc=N'servidor-ad.dominio.local'  -- servidor.dominio.com

Como la PC no está conectada al dominio, modificar el linked server y en security, poner

Be made with this security context

y colocar un usuario del dominio (dominio\usuario) y su password.

Después, ejecutar este query

select *
  from openquery(ADSI,
       'SELECT name
          FROM ''LDAP://servidor-ad.dominio.local''
         WHERE objectCategory = ''Person'' AND objectClass = ''user''
       ')

 
  Hacer consultas desde SQL Server 2000 al Active Directory

Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:

http://www.dbforums.com/archive/index.php/t-404559.html

Crear el linked server:

EXEC master.dbo.sp_addlinkedserver
   @server = N'ADSI',
   @srvproduct=N'Active Directory Services',
   @provider=N'ADsDSOObject',
   @datasrc=N'servidor-ad.dominio.local'  -- servidor.dominio.com

Como la PC no está conectada al dominio, modificar el linked server y en security, poner

Be made with this security context

y colocar un usuario del dominio (dominio\usuario) y su password.

Después, ejecutar este query

select *
  from openquery(ADSI,
       'SELECT name
          FROM ''LDAP://gc-domain.guaynabo.local''
         WHERE objectCategory = ''Person'' AND objectClass = ''user''
       ')

 
  Hacer consultas desde SQL Server 2000 al Active Directory

Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:

http://www.dbforums.com/archive/index.php/t-404559.html

Crear el linked server:

EXEC master.dbo.sp_addlinkedserver
   @server = N'ADSI',
   @srvproduct=N'Active Directory Services',
   @provider=N'ADsDSOObject',
   @datasrc=N'servidor-ad.dominio.local'  -- servidor.dominio.com

Como la PC no está conectada al dominio, modificar el linked server y en security, poner

Be made with this security context

y colocar un usuario del dominio (dominio\usuario) y su password.

Después, ejecutar este query

select *
  from openquery(ADSI,
       'SELECT name
          FROM ''LDAP://servidor-ad.dominio.local''
         WHERE objectCategory = ''Person'' AND objectClass = ''user''
       ')

 
2008/05/29
  Firefox 3
Download Day - Spanish
 
2008/05/09
  Miguel Bose - Taquilla del concierto en el Choliseo

Miguel Bose

 

Mi foto
Nombre: MADS
Ubicación: San Juan, Puerto Rico, United States
Archivos
mayo 2007 / febrero 2008 / marzo 2008 / abril 2008 / mayo 2008 / junio 2008 / julio 2008 / febrero 2010 / marzo 2010 /


Powered by Blogger

Suscribirse a
Entradas [Atom]