Colección de 500 iconos gratuitos para tus proyectos web

by Roy Rojas 13. abril 2010 17:10

El blog The CSS Award ha agrupado links de sitios web con colecciones de iconos gratuitos. Todos disponibles para ser utilizados en tus proyectos web o también en tus aplicaciones windows forms.

Visita el sitio para que puedas comprobar la gran cantidad de iconos para todo tipo de necesidad.
500 Free Icons for your web apps

Tags: , , ,

Internet | Programación

Habilitar el CLR en SQL Server

by Roy Rojas 30. octubre 2009 08:17

Si se necesita ejecutar un objeto CLR en nuestra base de datos, seguramente nos va a retornar un mensaje de error indicando que el CLR está deshabilitado, ya que se instala así por default. Para habilitar esta opción hay que configurarlo y se puede hacer mediante los siguientes comandos.

EXEC sp_configure 'show advanced options' , '1';
go
reconfigure;
go
EXEC sp_configure 'clr enabled' , '1'
go
reconfigure;

Tags: ,

Bases de Datos | Programación

Como cambiar el owner de objetos en nuestra base de datos

by Roy Rojas 23. octubre 2009 03:37

Algunas veces cuando importamos una base de datos, ya sea por restore, script o cual sea, esta puede venir asociada a algún usuario, el cual no tenemos en nuestro ambiente de seguridad, ni nos interesaría tenerlo, entonces tenemos que cambiarle a cada objeto el owner al que nosotros definamos.

Con el siguiente código generamos el script necesario para cambiarle el owner a los objetos

select 'exec sp_changeobjectowner ''dbo1046.' + name + ''',''dbo''' from sysobjects
where xtype = 'U'

sp_changeobjectowner recibe dos parámentros, nombre del objeto con el prefijo del owner original y el segundo parámetro sería el nuevo owner con el que quedaría este objeto

xtype indica el tipo de objeto al cual le queremos aplicar el código, tabla, vista, función, etc. Los diferentes tipos de objetos son :

C     CHECK_CONSTRAINT
D     DEFAULT_CONSTRAINT
F     FOREIGN_KEY_CONSTRAINT
FN    SQL_SCALAR_FUNCTION
FS    CLR_SCALAR_FUNCTION
IT    INTERNAL_TABLE
P     SQL_STORED_PROCEDURE
PK    PRIMARY_KEY_CONSTRAINT
S     SYSTEM_TABLE
SQ    SERVICE_QUEUE
TF    SQL_TABLE_VALUED_FUNCTION
TR    SQL_TRIGGER
U     USER_TABLE
UQ    UNIQUE_CONSTRAINT
V     VIEW

 

Tags: ,

Bases de Datos | Programación

Como generar un número random en SQL Server

by Roy Rojas 26. junio 2009 09:48

Es cierto que SQL Server tiene la función RAND(), la cual genera un número aleatorio, pero este no funciona correctamente o por lo menos como uno lo espera.

Por ejemplo RAND() si es ejecutado en transacciones distintas funciona perfectamente pero si es ejecutado varias veces en una misma transacción siempre nos va a retornar el mismo valor, por lo tanto el random no funciona.

Para probar esto que acabo de decir vamos a abrir el Management Studio y en un query nuevo hacemos

   SELECT newid() AS 'New id',
   RAND() AS 'Random',
   CHECKSUM(newid()) AS 'Checksum'

Resultado

  New Id Random Checksum
1 F3201996-A5E7-4B44-BDDE-FFF2A2499AB1 0.542140206197715 133238726

Resultado siguiente ves que se ejecuta

  New Id Random Checksum
1 41B78E4A-9F73-47E0-8721-2190E699E696 0.216229945261277  926182060

Hasta aquí todo bien, las dos veces se ejecutó correctamente el random, como debe de ser, pero si se ejecuta varias veces en la misma transacción la historia es otra

   SELECT TOP 5 newid() AS 'New id',
   RAND() AS 'Mal Random',
   CHECKSUM(newid()) AS 'Checksum'
   from sys.tables

  New Id Mal Random Checksum
1 C797611C-356C-47E4-97AD-14B331CECD7D 0.029692678590302 1529445979
2 12600DA6-B399-4F31-9BED-186EECFAA896 0.029692678590302 -1163175142
3 7691D246-73DE-4DD6-944B-0FA3523F0890 0.029692678590302 1893578383
4 69D663F5-0F40-4732-97FE-CB7F85B22E39 0.029692678590302 526397255
5 F82D3E07-66BF-4579-95D6-C745D9FAAF6E 0.029692678590302 -1752607711

Como podemos ver el valor Random siempre es el mismo, esto se debe a que si a la función Random el seed que utiliza SQL para generar el random es siempre el mismo, el seed de la transacción, por lo tanto el valor retorno siempre es el mismo. Entonces cómo se puede generar un valor random correcto?

En los query de ejemplo podemos ver la columna Checksum, la cual nos está retornando valores diferente en cada resultado, ya sea en transacciones distintas o en la misma transacción. Aquí está la clave para nuestro random.

New Id es un valor que genera SQL tomando como base el MAC address de la tarjeta de red y el reloj de la computadora, esto nos genera un string muy largo pero siempre distinto. Si a este valor le aplicamos la función checksum [  checksum(newid())  ] nos genera un valor numérico entero, que en algunos casos puede ser negativo. Si ocupamos que nuestro valor random sea un numérico entero positivo simplemente le aplicamos la funcion absolute [  abs(checksum(newid()))  ]

Entonces si ahora combinamos estas tres funciones de SQL obtendremos el random que necesitamos

   SELECT  TOP 5
   RAND() AS 'Mal Random',
   abs(checksum(newid())) AS 'RANDOM'
   from sys.tables

Resultado

  Mal Random RANDOM
1 0.747613544929705 149303544
2 0.747613544929705 2063275895
3 0.747613544929705 1150964410
4 0.747613544929705 1372336738
5 0.747613544929705 2115100305

Tags: , ,

Bases de Datos | General | Programación

Como reconstruir los índices en nuestra base de datos SQL Server

by Roy Rojas 23. junio 2009 04:07

El siguiente script genera un script que reconstruye todos los índices de nuestra base de datos. Este script generado se debe ejecutar en una nueva pantalla de query.

Más adelante les voy a suministrar otro script, que dependiendo del nivel de fragentación hace un Rebuild o Reindex, pero por el momento este es bastante efectivo.

use NombreBaseDatos

select 'ALTER INDEX [' + i.name + '] on NombreBaseDatos.dbo.' + t.name +
       ' REBUILD;Print ''Tabla ' + i.name + ' indexada;'''
  from sys.indexes i,
       sys.tables t
 where i.object_id > 97
   and isnull(i.name,'x') <> 'x'
   and i.name not like 'queue%'
   and i.object_id = t.object_id

Tags: ,

Bases de Datos | Programación

Como obtener los nombres del equipo, NetBios y DNS en .Net

by Roy Rojas 22. junio 2009 01:50

Los nombres del equipo, dominio, NetBios, DNS, etc, estan almacenadas debidamente en clases y objetos disponibles en cualquier momento. En este ejemplo vamos a mostrar algunas de estas variables que te podrán ayudar desarrollar tus aplicaciones más facilmente.

Nombre de la Computadora o Terminal NetBios
Environment.MachineName

Versión de la aplicación que se está ejecutando
Application.ProductVersion

Nombre del dominio asociado al usuario actual
Environment.UserDomainName

Usuario que actualmente está logueado en Windows
Environment.UserName

Path donde se esta ejecutando la aplicación
Windows.Forms.Application.StartupPath

Nombre del DNS
System.Net.Dns.GetHostByName("LocalHost").HostName

Estos ejemplos te ayudarán a encontrar muchas otras variables más que están dentro de esas mismas clases.

Tags: ,

.NET | Programación

Como reducir el tamaño del Log en nuestra base de datos SQL Server

by Roy Rojas 20. junio 2009 06:28

Principalmente cuando estamos utilizando bases de datos SQL Server Express el tamaño de nuestra base de datos es de suma importancia, ya que solo nos permite 4GB, incluidos Datos y Log.

Ahora, con el siguiente script vamos a reducir el tamaño del Log de nuestra base de datos, significativamente.

Importante: Realizar un Backup de nuestra base de datos por seguridad antes de ejecutar este script

use NombreBaseDatos
GO
DBCC UPDATEUSAGE(0)
GO
sp_spaceused
GO
DBCC SHRINKDATABASE(N'NombreBaseDatos', 5 )
GO
BACKUP LOG NombreBaseDatos WITH TRUNCATE_ONLY
GO
DBCC SHRINKDATABASE ( NombreBaseDatos, TRUNCATEONLY )
GO
DBCC UPDATEUSAGE(0)
GO
sp_spaceused
GO
Print 'Mantenimiento del Log finalizado'

Tags: ,

Bases de Datos | Programación

Como hacer un Link Server desde SQL Server hacia MySql

by Roy Rojas 19. junio 2009 11:30

Para poder hacer consultas desde SQL Server hacia MySql es necesario hacer un Link Server, esto es genial también para poder migrar de una base de datos a otra.

Una de las grandes ventajas que se obtiene al utilizar link server es que se pueden manipular los datos remotos como si estuvieran en el servidor principal, datos que están en Oracle o en MySql, manipularlos como si estuvieran en una base de datos SQL Server.

Para poder crear el link server hacia MySql vamos a seguir los siguientes pasos

  1. Instalar el MySql Driver 3.51 o superior, ya se encuentra disponible el driver 5.1
    Lo puedes descargar directamente de la página de MySql http://dev.mysql.com/downloads/connector/odbc/3.51.html
  2. Verificar que tengamos instalado el Microsoft Data Access Components (MDAC) 2.8
    Lo puedes descargar directamente en la página de Microsoft http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=en
  3. Ahora vamos a Microsoft SQL Management Studio, abrimos una nueva pantalla de query (New Query), nos aseguramos de estar trabajando en la base de datos master, y copiamos el siguiente script

    USE master

    EXEC master.dbo.sp_addlinkedserver @server = N'MYSQL',
    @srvproduct=N'MYSQL', @provider=N'MSDASQL',
    @provstr=N'DRIVER={MySQL ODBC 3.51 Driver}; SERVER=NombreIPServidorMySQL;
    DATABASE=NombreBaseDatos; USER=LoginUsuarioBD; PASSWORD=ClaveUsuarioBD; OPTION=3'

    Le cambiamos los parametros correspondientes a nuestra conexión hacia MySql, como Nombre de Servidor o IP, Nombre de Usuario, Clave de Usuario y ejecutamos el script

 

Ahora que ya ejecutamos el script, el link server hacia la base de datos MySql está creado, y para probarlo solamente sería necesario hacerle un select desde el SQL Management Studio a una tabla en la base de datos MySql, por ejemplo:

select * from openquery(MYSQL,'select * from tablaMySql')

Tags: ,

Bases de Datos | Programación

Como mover una ventana sin barra de título

by Roy Rojas 19. junio 2009 06:19

Podría ocurrir que por el diseño de alguna aplicación que estemos desarrollando en .Net, la barra de título sea incómoda o no se ajuste al diseño, entonces procedemos a quitarla (FormBorder Style = none), ahora, como hacemos para mover esta ventana?, ya que sin la barra de título esto no se podría.

Lo que tenemos que hacer es programar el move del control en algún objeto dentro del mismo form.

    Private mPoint As Point
    Private mMouseAct As Boolean

    Private Sub Form1_MouseDown(ByVal sender As Object, _
            ByVal e As MouseEventArgs) Handles MyBase.MouseDown

        mPoint = New Point(Cursor.Position.X - Me.Location.X, _
                        Cursor.Position.Y - Me.Location.Y)

        mMouseAct = True
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object, _
            ByVal e As MouseEventArgs) Handles MyBase.MouseMove

        If mMouseAct = True Then
            Me.Location = New Point(Cursor.Position.X _
                          - mPoint.X, Cursor.Position.Y - mPoint.Y)
        End If

    End Sub

    Private Sub Form1_MouseUp(ByVal sender As Object, _
        ByVal e As MouseEventArgs) Handles MyBase.MouseUp

        mMouseAct = False

    End Sub

Tags: ,

.NET | Programación

Referencia completa para Connection String

by Roy Rojas 18. junio 2009 10:06

Generalmente en nuestras aplicaciones vamos a necesitar el String de Conexión para conectarnos a alguna base de datos, ya sea SqlServer, Oracle, MySql, etc, aquí les dejo el sitio de referencia preferido para estos casos, donde van a encontrar todos los tipos de conexiones, a practicamente todas las bases de datos incluso a contenedores de datos como excel, archivos de texto, Access, Visual Fox Pro entre otros.

http://www.connectionstrings.com/

Tags: , , ,

Bases de Datos | General | Internet | Programación

royrojas.com

royrojas.com forma parte del grupo DotNetcr.com, el cual, desde su creación se ha dedicado a promocionar las tecnologías .Net y herramientas que faciliten trabajo de un analista, ingeniero o arquitecto de software.