Saturday, July 18, 2009

Instalar Sql Server 2005 en Windows 7

El otro día instalé SQLServer 2005(x64) en mi máquina, pero me marcaba un Warning en el test de configuración, en la parte de IIS, por lo que navegando en internet encontré que se deben activar las siguientes opciones de Windows (Control Panel -> Program and Features -> Turn Windows Features on or off) Todas las opciones estan dentro la categoría de Internet Information Services.

Static Content (WWW Services) Common HTTP Features
Default Document (WWW Services) Common HTTP Features
HTTP Redirection (WWW Services) Common HTTP Features
Directory Browsing (WWW Services) Common HTTP Features
ASP.Net (WWW Services) Application Development Features
ISAPI Extension (WWW Services) Application Development Features
ISAPI Filters (WWW Services) Application Development Features
Windows Authentication (WWW Services) Security
IIS Metabase and... ISS 6 Management Compatibility
IIS 6 WMI Compatibility ISS 6 Management Compatibility

Seleccionar fila n de una tabla de SQL Server

En este post les mostraré varias alternativas con las que podrémos consultar una columna "n" de una tabla, por ejemplo, consultar la columna 5 en una tabla.
Hay que tomar en cuenta que, en caso de traernos una fila de una tabla muy pesada, por decir, la fila 5,124,244 puede traernos serios problemas de desempeño. Así que considera utilizar planes de ejecución para probar los métodos en Resultsets muy pesados y ver cuál te funciona mejor.

El primer paso es crear la tabla de ejemplo:

CREATE TABLE Names
(
NameID INT IDENTITY(1, 1)
PRIMARY KEY CLUSTERED,
FName VARCHAR(32)
)
GO

SET NOCOUNT ON
INSERT Names(FName) VALUES('Aaron')
INSERT Names(FName) VALUES('Greg')
INSERT Names(FName) VALUES('Alex')
INSERT Names(FName) VALUES('Luan')
INSERT Names(FName) VALUES('John')
INSERT Names(FName) VALUES('Todd')
INSERT Names(FName) VALUES('Scott')
INSERT Names(FName) VALUES('Jess')
INSERT Names(FName) VALUES('Drew')
INSERT Names(FName) VALUES('Katherine')
INSERT Names(FName) VALUES('Paul')
GO

Alternativa 1: TOP anidados

SELECT TOP 1 FName
FROM
(
SELECT TOP 10 FName
FROM Names
ORDER BY FName
) sub
ORDER BY FName DESC

Alternativa 2: NOT IN
 
SELECT TOP 1 FName
FROM Names WHERE FName NOT IN
(
SELECT TOP 9 FName
FROM Names
ORDER BY FName
)
ORDER BY FName

Alternativa 3: "count derivado" se asume que FName is único

SELECT FName
FROM Names
WHERE
(
SELECT COUNT(*)
FROM Names n2
WHERE n2.FName <= Names.FName ) = 10

Alternativa 4: MAX

SELECT FName = MAX(FName) FROM
(
SELECT TOP 10 FName
FROM Names
ORDER BY FName
) sub

Alternativa 5: Uso de cursores

DECLARE FNames CURSOR
LOCAL STATIC READ_ONLY FOR
SELECT FName
FROM Names
ORDER BY FName

DECLARE @FName VARCHAR(32)

OPEN FNames

FETCH RELATIVE 10 FROM FNames INTO @FName

CLOSE FNames
DEALLOCATE FNames

SELECT FName = @FName

DROP TABLE Names
GO

Referencia

Monday, July 13, 2009

SQL - Borrar registros con Inner Join

El siguiente código es para borrar registros en una tabla "X" realizando un inner join con otra tabla "Y".


DELETE t1
FROM table1 t1
INNER JOIN table2 t2 ON t1.<columna>=t2.<columna>



No olvidar utilizar control de transacciones (checar post próximamente a publicar)

Bienvenida

Este es el primer post del blog, duh!

Iba a comenzar a postear artículos pero decidí postear esto.

Aqui iré registrando conocimiento acerca de Programación, Bases de Datos y Problemas en general, relacionados con TI que vaya generando a lo largo de mi carrera como Ing. en Sistemas (Software).

Actualmente trabajo en una empresa de Servicios, como desarrollador, utilizando las siguientes herramientas: SQL Server 2000/2005, Visual Studio 2005 y VisionJade (Java).

Hace 5 años que egresé de la Universidad Atónoma de Chihuahua en México y he trabajado con lenguaje que van desde TurboC (en la prepa) a lenguajes mas avanzados como Ruby, sin embargo mi pasión verdadera son las Bases de Datos, he trabajado con Oracle, MySQL, pero siendo SQL Server mi DBMS favorito.

Bueno, una vez hecha la presentación, a postear se ha dicho!