Está en la página 1de 45

Carrera Tcnica: Tcnico Universitario en Computacin

Asignatura: Base de Datos




Udelmar Digital

UNIDAD II


CONFIGURACIN DEL INICIO DE SESIN
Y SEGURIDAD DEL USUARIO



Introduccin

En esta unidad analizaremos la manera en que SQL Server. En este captulo
analizaremos la manera en que SQL Server autentifica las conexiones al servidor SQL
Server y a la bases de datos individuales, y aprender cmo funciona la autenticacin de
Windows 2000. La plataforma Windows 98 no cuenta con todos los mecanismos de
seguridad disponibles para los usuarios de Windows 2000, por lo que se proporciona un
breve anlisis de las diferencias.

Para tener acceso a los datos de SQL Server, debe pasar por varios niveles de
seguridad. Si utiliza Canalizaciones con nombre o Multiprotocolo como su biblioteca
de red de SQL Server, Windows 2000 valida su solicitud de conexin en el nivel de red,
sin importar el modo de seguridad. Si se encuentra en Modo de seguridad mixto, su
inicio de sesin en validado ya sea por SQL Server o por Windows NT/2000. La tabla
de sistema syslogins de la base aster se utiliza si usted solicita una conexin con
autenticacin de SQL Server. Si se encuentra en el modo de Autenticacin de Windows
(el predeterminado), o cuando solicita validacin por parte de Windows en el Modo
mixto, Windows 2000 es llamado a travs de la interfaz SSPI para validar su solicitud
de inicio de sesin y permitirle el acceso a SQL Server. Recuerde que las conexiones
validadas por Windows algunas veces se conocen como conexiones de confianza.
Una vez que inicie una sesin, an necesita el acceso a base de datos para cada
base de datos que desee utilizar. Debe ser miembro de un grupo de Windows 2000 que
haya sido agregado a una base de datos, debe tener un nombre de usuario creado para su
inicio de sesin en una base de datos, debe tener un alias en una base de datos, o debe
tener un nombre de usuario invitado para poder tener acceso a esa base de datos. Este
tipo de acceso no tiene nada que ver con los derechos (o permisos) que usted tenga
cuando se encuentre en la base de datos.
Debe utilizar funciones de SQL Server cuando no haya disponibles grupos de
Windows 2000, o cuando sea conveniente. Las funciones son especficas de la base de
datos, y por esto contienen usuarios, no inicios de sesin. Debe utilizar las funciones
fijas de base de datos siempre que sea posible. Las funciones de servidor estn
disponibles para los permisos que abarcan varias bases de datos. El uso de funciones de
aplicacin es una manera de hacer que una aplicacin provea la funcionalidad de base
de datos que los usuarios individuales no tienen con sus propias cuentas de seguridad.






Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
OBJETIVOS UNIDAD II

Objetivos Generales

a) Reconocer y comprender el modelo de seguridad que ofrece SQL Server, en lo que
respecta a la definicin de usuarios y la auteticacin por paret de ellos a los sevicios
de bases de datos

b) Solucionar los eventos de contingencias que se pruedan producir en los
accesos no deseados a las bases de datos, mantener el sistema de seguridad
configurado y en alerta.


Objetivos Especficos

a) Definir la lista de usuarios que interactuan con una base de datos y los prfiles
respectivos de cada uno de ellos (seguridad Windows o Mixta)

b ) Administrar y organizar los inicios de sesin en forma grfica a traves del software
Enterprise manager o Administrador Corporativo.

c) Clasificar a los usuarios en diversos niveles, para la gestin de un sistema
administrativo e informtico en un motor de bases de dats SQL Server

En este captulo analizaremos la manera en que SQL Server autentifica las
conexiones al servidor SQL Server y a la bases de datos individuales, y aprender cmo
funciona la autenticacin de Windows 2000.






















Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

El modelo de seguridad de acceso de SQL

La conexin con SQL Server 2000 ha sido hasta ahora relativamente sencilla.
Ha estado utilizando la seguridad con autenticacin en Modo mixto de SQL Server (la
cual opt por no seleccionar durante la instalacin) y ha estado iniciando sesiones con
sus credenciales de inicio de sesin de Windows, como miembro de su grupo de
administradores locales. Al conectarse ocurren varias cosas que tal vez no sean obvias
en un principio.
Cuando ejecuta SQL Server en Windows 2000, la seguridad se comprueba en
tres lugares distintos al momento en que usted intenta realizar la conexin con SQL
Server2000 (vea la figura 2.1). Tal vez usted sea validado por Windows 2000, por el
mismo SQL Server (en forma de un inicio de sesin de SQL Server) y luego a nivel de
base de datos individual (en forma de un nombre de usuario de base de datos).


Figura 2.1 Niveles de autenticacinde seguridad de red y de SQL Server






Autenticacin de red
de Windows 2000




Solicitud de autenticacin de inicio
de sesin con SQL Server

Autenticacin de inicio
de sesin de SQL Server





Solicitud de autenticacin como
usuario de base de datos

Autenticacin de usuario
de base de datos de SQL Server





Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Autenticacin de Windows

Al conectarse de su equipo cliente a un equipo Windows NT/2000 que ejecuta
SQL Server 2000, Windows podra requerir la validacin de su conexin de red. Esto
depende de su biblioteca de red de SQL Server. Si est utilizando Canalizaciones con
nombre o Multiprotocolo como su biblioteca de red de SQL Server, su conexin debe
validarse como autorizada por Windows 2000 para poder comunicarse con SQL Server.
Como puede ver la figura 2.2, tanto Canalizaciones con nombre como
Multiprotocolo pasan a travs del servicio Servidor de Windows 2000, el cual se
encarga de la validacin de red de la solicitud de conexin de un usuario. Por lo tanto,
debe tener un conjunto vlido credenciales de seguridad de Windows 2000 para
conectarse al equipo servidor de Windows 2000. Como la biblioteca de red Sockets
TCP/IP (Protocolo de
Control de Transmisin/Protocolo Internet) no pasa a travs del servicio Servidor, no se
necesita una cuenta vlida en Windows para conectarse con SQL Server 2000. A partir
de SQL Server 2000, Sockets TCP/IP es la biblioteca de red predeterminada, por lo que
esta cuestin no es tan crtica como lo sera si estuviera tratando de conectarse con
versiones anteriores. No obstante, si tiene clientes con software SQL Server 7.0 (o
versiones anteriores) en el cliente en sus equipos, probablemente tengan todava a
Canalizaciones con nombre como su biblioteca de red predeterminada.

Figura 2.2 Comunicaciones de red SQL Server.


Equipo cliente Equipo SQL Server

SQL Server 2000

Servicio Servidor

NerBIOS Winsock

Procolo (TCP/IP)

NDIS

Tarjeta de red

Canalizaciones con
nombre/Multiprotocolo



Sockets TCP/IP





Autenticacin de inicio de sesin de AQL Server

Debe proporcionar un nombre y una contrasea vlidos para conectarse a SQL
Server (o debe tener una conexin integrada de Windows). Ms adelante veremos
detalladamente la manera de hacerlo. Si sus credenciales de inicio de sesin son
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
vlidas, se conecta a SQL Server. Si sus credenciales no son vlidas, su acceso es
denegado incluso si la autenticacin de red de Windows (su conexin de red con el
equipo Windows 2000) tuvo xito.

Nombre de usuario de base de datos de SQL Server

Para utilizar cada base de datos en su sistema, debe tener permiso explcito de
entrar en cada base de datos. Puede obtener acceso a una base de datos de varias
maneras. Si no tiene un nombre de usuario de base de datos, no tiene acceso a la base
de datos a la que intenta conectarse.


Permisos

El ltimo nivel de seguridad son los permisos. Una vez que inicie con xito una
sesin en SQL Server y se encuentre en una base de datos, debe contar con el derecho
explcito de acceder objetos de base de datos (ya sea para slo lectura o para
modificacin).

Los modos de seguridad de AQL Server (incluyendo inicios de sesin)

SQL Server 2000 proporciona dos modos de seguridad distintos: El Modo
integrado de Windows y el Modo mixto (tanto autenticacin integrada de Windows
como autenticacin de SQL Server). El Modo de seguridad determina si slo Windows
o tanto Windows como SQL Server son responsables de validar las solicitudes de
conexin de red de Windows que se analiz previamente. Es imprescindible que
comprenda las diferencias, para que pueda implementar apropiadamente la seguridad en
SQL Server.

Seguridad de Modo mixto

En la seguridad de Modo mixto de SQL Server 2000, un usuario puede
conectarse a SQL Server utilizando ya sea el Modo integrado de Windows, o el Modo
de autenticacin de SQL Server. El Modo mixto es la mejor seleccin para obtener
compatibilidad con versiones anteriores de SQL Server, y adems proporciona la mayor
conectividad con equipos que no tengan Windows y que estn conectados en red, como
los usuarios de Novell NetWare. Para comprende ambos modos de autenticacin, debe
analizarlos detalladamente. Es ms sencillo empezar con una comprensin del Modo de
autenticacin de SQL Server, la cual, por razones histricas, ha sido la mejor manera de
conectividad proporcionada por SQL Server.


Modo de autenticacin de SQL Server

El Modo de autenticacin de SQL Server es el modo en el cual SQL Server
acepta un ID de inicio de sesin y una contrasea de un usuario, y valida si las
credenciales son vlidas, sin ayuda de Windows. Este mtodo siempre se utiliza en un
equipo de Windows 9x y es opcional en un equipo Windows 2000. Este modo no es tan
seguro como el Modo integrado de Windows y no se recomienda para ningn servidor
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
SQL Server que guarde informacin delicada. La informacin sobre los inicios de
sesin se mantiene dentro de SQL Server (en la base de datos master, en la tabla de
sistema sysxlogins). Las versiones de SQL Server anteriores a SQL Server 7.0 utilizan
un Modo de autenticacin de SQL Server llamado Seguridad estndar, el cual es
equivalente al Modo de autenticacin de SQL Server. Por lo tanto, si ve cualquier
documentacin que utilice el viejo trmino, no se confunda; slo sustityalo con la
nueva terminologa.
Si se conecta por medio del inicio de sesin, entonces est utilizando el Modo
de autenticacin de SQL Server. Por lo tanto, la tabla de sistema sysxlogins contiene
una entrada para el ID de inicio de sesin sa, junto con una contrasea, en caso de tener
una asignada (nuestro programa de instalacin asign a la contrasea la palabra
contrasea. Una vez instalado SQL Server 2000, slo existe el inicio de sesin sa
estndar de SQL Server. En un equipo Windows 2000, el grupo local de
administradores tambin se agrega como el equivalente de sa (como miembros de la
funcin fija de seguridad sysadmin).

Contraseas: Las contraseas de inicio de sesin en Modo de autenticacin de SQL
Server se mantienen en la columna contrasea de la tabla sysxlogins en la base de datos
master. Para ver las entradas de la tabla sysxlogins, inicie el Analizador de consulta de
SQL Server, y ejecute esta consulta (para ejecutarla debe estar conectado como
miembro de la funcin sysadmin, la cual se explica ms adelante):

Entrada SELEC substring(name, 1,25) AS nombre,
substring (password, 1,20) AS contrasea, language AS lenguaje FROM
sysxlogins

nombre contrasea lenguaje
Salida ..... .. ..
BUILTIN\Administradores NULL Espaol
SERVIDORNT\ServicioSQL NULL Espaol
Sa 0x2131214A212C312339442439285B585D NULL
NULL NULL NULL
(4 filas afectadas)


La primera fila de la salida anterior representa el grupo local de administradores
de Windows; analizaremos la seguridad integrada de Windows en el siguiente texto. La
siguiente fila representa la cuenta de servicio que usted seleccion para los servicios de
SQL Server durante la instalacin. El ID de inicio de sesin sa, mostrado a
continuacin, se instala con la contrasea que seleccion durante la instalacin en
nuestro caso, contrasea, representada aqu por el texto cifrado. Todos los inicios de
sesin y contraseas autenticados de SQL Server se mantienen en esta tabla de sistema.
Si la contrasea es nula, aparece la palabra clave NULL en la columna contrasea. Si
una contrasea es distinta de NULL, se guarda como texto cifrado, y aparece una
representacin hexadecimal del texto cifrado (como se muestra aqu para sa). Con el fin
de hacer comparaciones, es seguro pensar en NULL como espacios en blanco, dentro
del contexto de los inicios de sesin de seguridad.
Las contraseas que pueden verse con una consulta podran parecerle un poco
desconcertantes al principio. NO obstante, tome en cuenta lo siguiente antes de
preocuparse demasiado:

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Slo un miembro de la funcin sysadmin (incluyendo el inicio de sesin sa)
puede ver la columna de contraseas. Ningn otro inicio de sesin o usuario
pueden verla, a menos que se le proporciones explcitamente el derecho de
hacerlo.
El algoritmo de cifrado es de un solo sentido. Cuando se cifra una contrasea,
no puede descifrarse. Cuando usted inicia una sesin, la contrasea que
proporciona se cifra y luego se compara con la contrasea cifrada de la tabla
sysxlogins. Si concuerdan, se otorga el acceso al servidor. Si no concuerda, se
despliega el mensaje Error de inicio de sesin y no puede utilizarse la conexin.
Adems, si utiliza un inicio de sesin de seguridad de Windows, no se guardan
las contraseas en SQL Server.

Administracin de inicios de sesin en Modo de autenticacin de SQL Server

El primer paso en la configuracin de su servidor para el acceso es crear inicios
de sesin. Puede agregar inicios de sesin utilizando el procedimiento almacenado del
sistema llamado sp_addlogin (como se muestra a continuacin) o utilizando el
Administrador corporativo de SQL Server. Observe de nuevo que si utiliza Windows
2000, el Modo integrado de Windows es el mtodo preferido de administracin de
seguridad, el cual se analizar posteriormente le da de hoy.

Sp_addlogin [@loginame =] inicio de sesin [, [@passwd =] contrasea
[,[@defdb =] basededatos [,[@deflanguage =] lenguaje
[,[@sid =] sid [,[@encryptopt =] opcin_cifrado]]]]]


En sp_addlogin:

Inicio de sesin es el nombre que desea que el usuario utilice al iniciar la
sesin. Este nombre debe ser un identificador de SQL Server vlido
(debe empezar con una letra o los caracteres #, @ o _, y el resto de los
caracteres pueden ser esos caracteres o letras y nmero hasta 128
caracteres Unicode).
Contrasea es la contrasea para este inicio de sesin. La contrasea es
nula si no elige una en este momento.
Basededatos es la base de datos predeterminada en la que desea que se
coloque al usuario cuando inicie una sesin. Si no especifica este
parmetro, la base de datos predeterminada ser master.
Lenguaje es el lenguaje predeterminado a utilizar para este usuario
cuando inicie una sesin. Si no se especifica este parmetro, el lenguaje
predeterminado es Spanish.
Sid es el identificador de seguridad que se especifica para un usuario
(esta opcin no se recomienda).
Puede utilizar opcin_cifrado para desactivar el cifrado de la contrasea
(descrito anteriormente). Esta caracterstica le permite extraer una
contrasea cifrada de una versin anterior de SQL Server e insertarla
directamente en SQL Server 2000, para que la contrasea de inicio de
sesin de un usuario funcione tambin con este servidor SQL Server.
Para desactivar el cifrado, utilice aqu la cadena literal skip_encryption.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Para agregar un inicio de sesin a su servidor, abra el Analizador de consultas de
SQL Server e inicie una sesin. Ejecute el siguiente comando de T-SQL:



Entrada EXEC sp_addlogin sunombre, sucontrasea


Si vuelve a ejecutar la consulta que ejecut anteriormente con la tabla
sysxlogins, ver una nueva fila con su nombre y contrasea cifrada. Si crea una nueva
conexin con SQL Server, puede iniciar una sesin con el nombre y contrasea que
acaba de agregar.
Lo siguiente que debe hacer es cambiar su contrasea. Puede hacerlo mediante
el Administrador corporativo de SQL, o por medio del procedimiento almacenado del
sistema llamado sp_password:

Sp_password [[@old =] anterior,] {[@new =] nueva}
[,[@aloginame =] inicio de sesin]

En esta sintaxis del procedimiento:

Anterior es su vieja contrasea
Nueva es su nueva contrasea
En inicio de sesin, si est conectado como miembro de las funciones dysadmin
o securityadmin, puede cambiar la contrasea de cualquiera. De hecho, no
necesita saber la contrasea anterior de una persona; simplemente puede utilizar
NULL en la contrasea anterior.

Un ejemplo del procedimiento almacenado del sistema sp_password se vera as:

EXEC sp_password NULL, nuevacontrasea, richard

Aunque usted no conoce la contrasea anterior de Richard puede cambiarla, ya
que usted es el administrador del sistema. Como precaucin de seguridad, los usuarios
ordinarios no pueden hacer esto, y deben conocer su contrasea anterior para poder
cambiarla por una nueva contrasea. Este procedimiento no debe ser difcil, ya que
primero tienen que iniciar una sesin para poder ejecutar este comando.
Es muy buena idea cambiar con frecuencia sus contraseas. Desgraciadamente,
SQL Server 2000 no tiene ninguna manera de hacer valer las restricciones de
contraseas y dems precauciones de seguridad. Este es un motivo por el cual puede
optar por implementar la seguridad integrada. Windows 2000 puede especificar las
longitudes mnimas de las contraseas, la frecuencia del cambio y las reglas mnimas
de complejidad de las contraseas.
Tambin podra ser conveniente cambiar la base de datos predeterminada o el
lenguaje predeterminado con el que el usuario inicia una sesin. Puede hacer esto desde
el Administrador corporativo de SQL Server, o utilizando los procedimientos
almacenados del sistema llamados sp_defaultdb y sp_defaultlanguage:

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
sp_defaultdb nombreiniciodesesin, defdb
sp_defaultlanguage nombreiniciodesesin [, lenguaje]


Los parmetros son los mismos que se describieron anteriormente. Estas
opciones simplemente le permiten cambiar varios campos de la tabla sysxlogins (la base
de datos predeterminada o el lenguaje predeterminado).
Puede utilizar dos procedimientos almacenados del sistema adicionales para el
manejo de los inicios de sesin: sp_helplogins y sp_droplogin. El procedimiento
almacenado del sistema sp_helplogins le permite obtener un informe sobre los inicios
de sesin que se han creado en su servidor.

El SID (identificador de seguridad) es la forma en que SQL Server lleva el
registro de los inicios de sesin y usuarios dentro de SQL Server. Para los inicios de
sesin con autenticacin de SQL Server, es un valor binario de 16 bytes generado por
SQL Server. Para los usuarios con seguridad integrada de Windows (que analizaremos
en breve), es el nmero de identificacin de red globalmente nico del usuario, el cual
identifica al usuario en la red de Windows.


El procedimiento almacenado del sistema sp_droplogin elimina la entrada de
inicio de sesin de la tabla sysxlogins. Despus de eliminar una entrada, el usuario
correspondiente ya no podr iniciar sesin en SQL Server:

Sp_droplogin iniciodesesin

Para el procedimiento almacenado sp_droplogin, iniciodesesin tiene el mismo
significado que para cada uno de los dems procedimientos almacenados.
En este punto ha conocido la manera de lograr la administracin de inicios de
sesin en Modo de autenticacin de SQL Server utilizando los diversos procedimientos
almacenados del sistema.





El Modo de autenticacin de Windows en seguridad mixta


El Modo de autenticacin de Windows es la otra opcin en la seguridad de
Modo mixto, pero la analizaremos ms adelante en la seccin Modo de autenticacin
de Windows, ya que estos modos son idnticos en funcionalidad y administracin.
Hay una observacin en cuanto a la terminologa que usted debe conocer antes de
analizar las conexiones de Windows. Se dice que una conexin por medio de la
autenticacin de Windows es una conexin de confianza. Por lo tanto, cuando vea el
trmino conexin de confianza, piense en l como si fuera una conexin con
autenticacin de Window, la cual ha sido validad ya sea por Windows NT o Windows
2000.


Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Modo de autenticacin de Windows


Con la seguridad en Modo de autenticacin de Windows, despus de conectarse
con SQL Server a travs de la red, debe presentar sus credenciales de seguridad de
Windows (lo cual se conoce como token de acceso). Estas credenciales se generan en el
proceso de inicio de sesin en una red de Windows 2000. Estas credenciales de
seguridad se pasan por usted en forma discreta, por lo que no necesita hace nada
especial par pasar su seguridad. Puede otorgar el acceso a SQL Server directamente
mediante cuentas de seguridad de Windows 2000, o indirectamente mediante grupos de
Windows 2000.
Lo mejor acerca del Modo de autenticacin de Windows es que los usuarios no
tienen que preocuparse por iniciar sesin en forma separada a SQL Server. Esta
capacidad est en conformidad con el concepto en el que los usuarios deben tener que
iniciar sesin en la red una vez, y deben recordar una sola contrasea. Y no slo eso,
sino que tambin puede aprovechar que la mayora de sus usuarios probablemente ya
cuenten con cuentas de inicio de sesin de Windows, lo que a su vez reduce la
sobrecarga administrativa debido a la administracin de cuentas de seguridad para su
servidor SQL Server.


Configuracin de grupos y usuarios de Windows 2000

El primer paso para configurar la seguridad en Modo de autenticacin de
Windows no es algo que corresponda a SQL Server es una visita a al herramienta
Administracin de equipos (o Administrador de usuarios en equipos Windows NT).
Primero debe crear grupos de Windows 2000 para los usuarios, luego debe crear los
usuarios (si es que no existen ya) y agregarlos a los nuevos grupos que acaba de crear, y
luego debe asignarles permisos para iniciar sesin en SQL Server. Para ello, seleccione
Inicio | Configuracin | Panel de control, haga doble clic en Herramientas
administrativas y luego en Administracin de equipos para iniciar la consola
Administracin de equipos (si est administrando un dominio, debe utilizar la consola
de administracin de Usuarios y equipos de Active Directory). Expanda la opcin
Usuarios locales y grupos.

Debe agregar nuevos grupos locales a la base de datos SAM (Administrador de
cuentas de seguridad) de Windows del equipo en el que se ejecuta SQL Server. Es una
base de datos interna de Windows 2000, no usa base de datos de SQL Server. Si desea
controlar un equipo remoto en vez del equipo en el que se encuentra trabajando
actualmente, simplemente haga clic con el botn derecho del ratn en Administracin
del equipo (Local), seleccione la opcin Conectar con otro equipo, y luego escriba el
nombre del equipo que desea administras. Si desea administrar un Dominio de Active
Directory, debe utilizar el conjunto de herramientas de Active Directory, como se
mencion anteriormente.
Al igual que con la mayora de las operaciones relacionadas con Windows
2000o, debe estar conectado al equipo como miembro del grupo local de
administradores o no podr realizar las siguientes operaciones.
Ahora cree tres nuevos grupos locales para utilizar con SQL Server: un grupo
que contenga a los usuarios que pueden iniciar sesin como administradores de SQL
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Server (aquellos usuarios de Windows 2000 que pueden administrar completamente a
SQL Server), otro grupo para las personas de ventas, y otro para los usuarios de
Mercadotecnia. Luego puede asignar usuarios a cada grupo, como lo desee. Puede
determinar lo que los usuarios pueden hacer una vez que estn conectados.
El primer grupo es para el acceso administrativo a SQL Server. Seleccione y
resalte la carpeta Grupos, haga clic con el botn derecho del ratn en ella y luego
seleccione la opcin Grupo nuevo. Llene los campos Nombre de grupo y Descripcin.


Ahora coloque su cuenta en el grupo. Haga clic con el botn Agregar para ver
una lista de cuentas que puede agregar. La lista est compuesta de los grupos globales y
cuentas de su domino predeterminado, o slo de las cuentas si su equipo con SQL
Server no es el miembro de un dominio.

Si no ve el nombre de su equipo en el panel Buscar en, seleccinelo del cuadro
de lista desplegable. A continuacin ver el nombre de su equipo, el domino
predeterminado y cualquier dominio de confianza. Si est utilizando un dominio,
seleccione su cuenta de dominio para agregarla a la lista, en lugar de crear y agregar una
cuenta local de Windows 2000 duplicada. Ahora que est viendo la lista correcta,
agregue su nombre de usuario al grupo seleccionando su nombre de cuenta, haciendo
clic en Agregar y luego Aceptar.


Haga clic en Crear y luego repita el proceso para crear un grupo llamado Ventas.
Luego cree un grupo llamado mercadotecnia. Sin embargo, esta ve agregue un usuario
o conjunto de usuarios distinto. En mi sistema configur tres usuarios adicionales
Ann, Bob y Cat- para este fin. Coloqu a Ann y a Bob en Ventas, y a Bob y a Cat en
Mercadotecnia. Agregu intencionalmente a Bob en ambos grupos. Si nunca ha
agregado un usuario en Windows 2000, seleccione y resalte el grupo, haga clic con el
botn derecho del ratn en el mismo, seleccione la opcin Agregar a grupo del men
contextual, haga clic en Agregar como lo hizo anteriormente, y seleccione los usuarios
que va a agregar al grupo. Si crea los usuarios ahora, recuerde desactivar la opcin El
usuario debe cambiar la contrasea en el siguiente inicio de sesin. Adems, a todos los
usuarios les di la misma contrasea, contrasea.


Cmo otorgar permiso a las cuentas de Windows 2000 para iniciar sesin en SQL
Server

Despus de establecer los usuarios y grupos, es tiempo de otorgar a esos grupos
de acceso a SQL Server. Puede lograrlo utilizando los procedimientos almacenados de
sistema sp_grantlogin, sp_revokelogin y sp_denylogin. stos funcionan en forma muy
parecida a sp_addlogin y a sp_droplogin, los cuales vimos anteriormente con el Modo
de autenticacin de SQL Server.
Primero otorgue permisos de inicio de sesin a los grupos de Windows, y luego
a los usuarios individuales, segn sea necesario. Este mtodo de otorgar inicios de
sesin le permite ejecutar la menor cantidad posible de comandos y tener la menor
sobrecarga administrativa posible, y al mismo tiempo le permite un control individual
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
de los privilegios de inicio de sesin. Para otorgar permisos de inicio de sesin, utilice
el procedimiento almacenado de sistema llamado sp_grantlogin:

Sp_grantlogin [@loginame =] iniciodesesin

En esta sintaxis, iniciodesesin es el nombre del grupo o usuarios de Windows 2000 al
cual se desea otorgar el derecho de iniciar sesin en SQL Server. El inicio de sesin debe ser
del tipo BASEDEDATOS_SEGURIDAD\Nombreusuario por ejemplo,
MIDOMINIO\Richard.

Por ejemplo, para otorgar permisos reinicio de sesin en SQL Server al grupo
Ventas, puede ejecutar:

Entrada Exec sp_grantlogin SERVIDORNT\Ventas

Sustituyendo a SERVIDORNT con el nombre de su equipo (o con el
nombre del dominio si ejecuta SQL Server en un controlador de dominio). Debe recibir
un mensaje similar a ste:


Salida Concedido acceso de inicio de sesin a SERVIDORNT\Ventas


Ahora cualquier usuario de Windows 2000 que sea miembro de grupo Ventas
puede iniciar una sesin en SQL Server. Puede probar esta capacidad iniciando una
sesin en Windows 2000 ya sea como Ann o como Bob, iniciando el Analizador de
consultas de SQL Server, y seleccionando la opcin Autenticacin de Windows para
forzar una conexin de confianza con SQL Server 2000. En la barra de ttulo de la
conexin de consulta debe aparecer su nombre de usuario de Windows 2000. Observe
que est conectado como usted mismo en Windows 2000, aun cuando el grupo ventas es
la entidad a la que se le otorgan derechos de inicio de sesin en SQL Server. Esta
forma de conexin le garantiza que obtendr un rastro de auditora y le permite un
mucho mejor control de los permisos posteriormente.




Tambin puede quitar el derecho reinicio de sesin en SQL Server a un usuario
o grupo de Windows 2000, utilizando el procedimiento almacenado de sistema
sp_revokelogin:

sp_revokelogin [@loginame =] iniciodesesin

En este procedimiento, iniciodesesin es el nombre del grupo o usuario de Windows
2000 al que se quiere quitar el derecho de iniciar sesin en SQL Server.
Sp_revokelogin quita un derecho de inicio de sesin otorgado previamente. Por
lo tanto, la siguiente lnea quita. A cualquiera que se encuentre en el grupo Ventas, el
derecho de iniciar sesin en SQL Server, ya que este derecho fue otorgado previamente
al grupo ventas:

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Entrada Exec sp_revokelogin SERVIDORNT\Ventas

Sin embargo, la siguiente lnea no tiene efecto, ya que no se haban otorgado
previamente al grupo Mercadotecnia derechos de inicio de sesin en V:

Entrada Exec sp_revokelogin SERVIDORNT\Mercadotecnia


Adems, observe que, aunque se puede revocar a Ann el derecho de iniciar sesin como
se muestra a continuacin, la revocacin de este derecho no afecta a los derechos que este
usuario recibe de los grupos:

Entrada Exec sp_revokelogin SERVIDORN\Ann

Por lo tanto, si el grupo Ventas tiene el derecho de iniciar sesin, y usted ejecuta la
instruccin anterior, esto no cambia la capacidad de Ann de iniciar sesin en SQL Server.
Si desea especificar que cualquiera que se encuentre en el grupo Ventas puede
iniciar una sesin, excepto Ann, debe utilizar el procedimiento almacenado de sistema
sp_denylogin:

Entrada sp_denylogin [@loginame =] iniciodesesin

En este procedimiento, iniciodesesin es el nombre de grupo o usuario de
Windows 2000 al cual desea negar el derecho de iniciar sesin en SQL Server.
Pruebe este cdigo como ejemplo (de nuevo, sustituyendo el nombre correcto de
la base de datos de seguridad en lugar de SERVIDORNT):

Entrada Exec sp_grantlogin SERVIDORNT\Ventas
Exec sp_denylogin SERVIDORNT\Ann


Ahora inicie una sesin en su sistema Windows 2000 como Ann, e intente
conectarse a SQL Server. No tendr permiso de inicio de sesin. Inicie una sesin en
Windows 2000 como Bob y conctese a SQL Server y el inicio de sesin funciona a la
perfeccin. Se ha negado el permiso a Ann, pero a Bob, como miembro del grupo
Ventas, se le ha otorgado el permiso de iniciar sesin. Los derechos denegados siempre
sustituyen a los dems derechos otorgados.


Cmo configurar el modo de seguridad

Hasta ahora ha aprendido cmo agregar usuarios en Modo de autenticacin de
SQL Server y usuarios y grupos de Windows 2000 a SQL Server. Sin embargo, debe
saber cul modo de seguridad utilizar. Para establecer cul modo de seguridad est
utilizando su servidor, inicie el Administrador corporativo de SQL Server y haga clic
con el botn derecho del ratn e su servidor, el cual se encuentra en el panel izquierdo
de la herramienta. Seleccione la opcin Propiedades del men contextual y haga clic en
la ficha Seguridad.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Si est trabajando en un equipo Windows 2000, ver el cuadro de dilogo
pudiendo seleccionar ya sea Slo Windows (el predeterminado), o SQL Server y
Windows. En un equipo Windows 9x la mayor parte de este cuadro de dilogo est de
deshabilitada (en color gris), ya que esos sistemas no cuentan con autenticacin de
Windows. Para cambiar la configuracin de seguridad, simplemente haga clic en la
opcin que desee. El cambio no tendr efecto sino hasta que reinicie el servicio SQL
Server (MSSQLServer para una instancia predeterminada, MSSQL$NombreInstancia
para una instancia con nombre).


El marco Cuenta de inicio de servicio le permite cambiar la cuenta utilizada por
SQL Server para ejecutar el servicio SQL Server.
Despus de realizar cualquier cambio en este cuadro de dilogo, debe detener y
reiniciar SQL Server para que los cambios tengan efecto. Como es poco probable
realizar este cambio ms de una vez, detener y reiniciar el servicio no debe representar
un problema serio.

Administracin de inicios de sesin en forma grfica

Ahora es un buen momento para analizar lo que ha aprendido hasta ahora. SQL
Server tiene dos tipos de inicios de sesin:


Inicios de sesin de Windows NT/2000, ya sea por medio de IDs de usuario
individualidades o grupos.
Inicios de sesin de SQL Server, los cuales se guardan en la tabla sysxlogins que
se encuentra en la base de datos master.

Cada uno tiene sus ventajas. Los inicios de sesin de SQL Server pueden
utilizarse en la plataforma de Windows 9x y no requieren que usted tenga organizados
dominios de Windows 2000 en sistemas Windows 2000. Sin embargo, los inicios de
sesin de Windows 2000 son preferidos si ya se encuentra en una red de Windows
configurada apropiadamente, debido a que ya se han creado e identifican en forma nica
a cada usuario de su organizacin. Ya aprendi cmo crear cada uno de estos inicios de
sesin, y cmo permitir los inicios de sesin en SQL Server. Hizo esto por medio de los
procedimientos almacenados de sistema tales como sp_addlogin y sp_password. No
obstante, hay una manera ms fcil de utilizar el Administrador corporativo de SQL
Server.
No esper a mostrarle el Administrador corporativo de SQL Server por maldad.
Es slo que puede crear ambos tipos de inicios de sesin fcilmente desde una interfaz
grfica individual, por lo que necesita comprenderlos antes de analizar esta interfaz.

He otorgado permiso al grupo Ventas de Windows 2000 para iniciar sesin en
SQL Server y he denegado explcitamente el permiso de iniciar sesin al usuario Ann
de Windows 2000. El grupo BUILTIN\Administradores de Windows 2000 se agrega
durante la instalacin, y el inicio de sesin sa tambin se crea durante la instalacin.
Me he agregado a m mismo como inicio de sesin estndar (de SQL Server).

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Para agregar al grupo Mercadotecnia como inicio de sesin vlido, haga clic con
el botn derecho en cualquier lugar del panel derecho de la ventana del Administrador
corporativo, y seleccione la opcin Nuevo inicio de sesin. Aparecer el cuadro de
dilogo. Complete el cuadro de dilogo segn se muestra en la figura para agregar al
grupo Mercadotecnia.

Haga clic en Aceptar para terminar de agregar el inicio de sesin, y luego haga
lo mismo para agregar una cuenta para Bob. (En realidad no necesita agregar una
cuenta para Bob, ya que l puede iniciar una sesin desde el grupo ventas o desde el
grupo Mercadotecnia.) Agregue un inicio de sesin de SQL Server llamado Don, con
una contrasea de contrasea. Despus de hacer clic en Aceptar tiene que confirmar
la contrasea que acaba de escribir.

Todo lo que debe hacer para denegar el acceso a alguien es seleccionar la opcin
Denegar acceso. La eleccin de esta opcin tiene sentido slo para los inicios de sesin
de Windows 2000. Para denegar el acceso a un inicio de sesin de SQL Server,
simplemente no lo cree.
Para modificar un inicio de sesin existente, haga clic con el botn derecho del
ratn en el inicio de sesin deseado del panel derecho y seleccione la opcin
Propiedades del men contextual. Observe las otras 2 fichas que aparecen en el cuadro
de dilogo: Funciones del servidor y Acceso a base de datos. stos son los siguientes
dos temas que vamos a analizar.

Usuarios de bases de datos

Una vez configurada la seguridad de inicio de sesin y establecidos los inicios
de sesin puede empezar a configurar el acceso a las bases de datos. Tener un inicio de
sesin en SQL Server no le proporciona acceso a ninguna base de datos del servidor.
Para ello, debe tener un nombre de usuario de base de datos.
Cada base de datos tiene una ruta de acceso separada, la cual se guarda en la
tabla del sistema sysusers en cada base de datos. Los inicios de sesin se asignan
esencialmente a un nombre de usuario en cada base de datos que el usuario necesita
acceder. Puede crear esa asignacin o crear un usuario de base de datos en una base de
datos utilizando el procedimiento almacenado de sistema sp_grantdbaccess o el
Administrador corporativo de SQL Server.

Cmo agregar un usuario a una base de datos

Para agregar uniusuario a una base de datos, ejecute el procedimiento
almacenado de sistema sp_grantdbaccess:

Sp_grantdbaccess [@loginame =] iniciodesesin [,[@name_in_db =]
nombre_en_bd] OUTPUT

En esta sintaxis:

Iniciodesesin es el nombre reinicio des sesin que agreg anteriormente (ya
sea como inicio de sesin de SQL Server o como inicio de sesin o grupo de
Windows NT/2000).
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Nombre_en_bd es el nombre que quiere que tenga un individuo cuando ste
se encuentre en esta base de datos (el nombre de usuario). Si no especifica
un nombre, se le asigna el mismo valor que el del nombre de inicio de
sesin.

Le recomiendo que asigne al nombre de usuario el nombre de inicio de sesin
siempre que sea posible, para que sea ms sencillo seguir la seguridad de los inicios de
sesin hacia los usuarios en cada base de datos. No tiene que hacerlo, pero no es un
poco confuso iniciar una sesin como Richard, pero tener un nombre de usuario de Bill
en la base de datos ventas y de J ohnny en la base de datos pubs? Mantener los mismos
nombres elimina la confusin (lo cual es el mejor inters para todos en un producto tan
complejo como SQL Server). Claro que nada de esto resulta ser un problema si utiliza
usuarios y grupos de Windows.
Por ejemplo, si quiere que Bob tenga acceso a la base de datos pubs de su
servidor, ejecute:


Entrada use pubs
EXEC sp_grantdbaccess SERVIDORNT\Bob


En este caso, debera obtener el mensaje:


Salida Concedido a al base de datos acceso a SERVIDORNT\Bob


Puede hacer lo mismo con un grupo:


Entrada EXEC sp_grantdbaccess SERVIDORNT\Mercadotecnia


De nuevo, debe recibir un mensaje de xito. Al agregar un grupo, todos los
miembros de ese grupo de Windows pueden tener acceso a la base de datos, pero slo el
grupo tiene un usuario de base de datos es decir, no existe una entrada para cada
usuario del grupo, sino simplemente para el grupo en s, como en el caso de los inicios
de sesin.
Para quitar a alguien el acceso a la base de datos, se ejecuta el procedimiento
almacenado de sistema sp_revokedbaccess:

Sp_revokedbaccess [@name_in_db =] nombre_en_bd]

En este procedimiento almacenado, nombre_en_bd es el nombre del usuario de
base de datos que se va a quitar.
Slo los miembros de las funciones db_accessadmin y db_owner (o de la
funcin fija de servidor sysadmin) pueden ejecutar cualquiera de estos dos
procedimientos almacenados de sistema.
Para ver cules usuarios se encuentran en su base de datos, y a cul inicio de
sesin pertenecen, puede ejecutar el procedimiento almacenado de sistema sp_helpuser:
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Sp_helpuser [[@name_in_db =] nombreusuario

Aqu, nombreusuario es opcional, y puede ser un nombre de usuario o un nombre de
funcin.

Sin no especfica un nombre de usuario, se produce un informe de todos los
usuarios y funciones. Si especifica un nombre, obtiene un informe para ese usuario o
funcin especficos.
Al crear una base de datos, ya se tiene ah a un usuario. Uno de estos usuarios se
llama dbo (que significa propietario de la base de datos). El usuario dbo se asigna de
manera predeterminada al inicio de sesin sa. Al instalar SQL Server, el inicio de
sesin sa se considera como el propietario de todas las bases de datos. Si otro inicio de
sesin crea una base de datos, ese inicio de sesin es el propietario de la base de datos.
Dentro de una base de datos, no hay nada que el usuario dbo no pueda hacer. Este
usuario es tan poderoso como los miembros de la funcin sysadmin de cada base de
datos. Sin embargo, slo los miembros de la funcin fija de servidor sysadmin tienen
ciertos privilegios en todo el sistema.
Ahora trate de crear un usuario en la base de datos pubs. Si ha seguido todos los
ejemplos hasta ahora, debe tener un inicio de sesin de nombre Don en su servidor SQL
Server. Este usuario fue creado como inicio de sesin de SQL Server hace unos
instantes. Inicie el Analizador de consultas de SQL Server y ejecute las siguientes
instrucciones de T-SQL:

Entrada USE pubs
EXEC sp_grantdbaccess Don

Este ejemplo agrega el nuevo usuario Don a la base de datos pubs, al cual se asigna el
ID de inicio de sesin Don en la tabla sysxlogins de la base de datos master. Puede
verificar esto si ejecuta sp_helpuser en la base de datos pubs


Observe que Don ha sido agregado como usuario a la base de datos, con el
nombre de inicio de sesin Don. Probablemente pueda darse cuenta del porqu sera
confuso utilizar aqu distintos nombres. Tambin observe que los permisos otorgados
anteriormente para los usuarios y grupos de Windows 2000 tambin estn ah, junto
con dbo y guest.
Hace un rato dije que un inicio de sesin no le permite tener acceso a ninguna
base de datos, no obstante, al iniciar la sesin puede tener acceso a todas las bases de
datos del sistema, as como a las bases de datos de ejemplo pubs y Northwind. Cmo
es esto posible? Puede hacer esto gracias al nombre de usuario guest.
Al ejecutar sp_grantdbaccess guest en una base de datos, se agrega a la misma
una cuenta de usuario especial conocida como cuenta de invitado (guest). Observe esta
cuenta de invitado en los resultados del procedimiento almacenado de sistema
sp_helpuser. Observe que no est asignada a un inicio de sesin, sino a NULL. Es un
usuario especial y no est sujeto a las reglas normales. Cuando existe una cuenta de
usuario guest en una base de datos, cualquier inicio de sesin que solicite acceso a la
base de datos y que no tenga un nombre de usuario creado especficamente en la base de
datos (ya sea por medio de la membresa de grupo o de una cuenta individual) puede
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
entrar como invitado. Por lo tanto, durante la instalacin se crea una cuenta guest en
cada base de datos predeterminada de su servidor.


El nombre de usuario guest

Si se conecta con un inicio de sesin para el que no haya creado un nombre de
usuario especfico en la base de datos pubs, tendr acceso a la base de datos como
invitado. Si trata de acceder una base de datos en la que no tiene nombre de usuario y
en la que no existe el nombre de usuario guest, se producir un mensaje error. Por
ejemplo, si trata de utilizar la base de datos Northwind (ya sea seleccionndolo la
entrada Base de datos del Analizador de consultas de SQL Server, o ejecutando el
comando de Transact-SQL use Northwind) despus de quitar el nombre de usuario
guest (con sp_revokedbaccess), recibir un mensaje similar a ste:

Servidor: mensaje 916, nivel 14, estado 1, lnea 1
El usuario de servidor don no es un usuario vlido en la base de datos Northwind

El error informa que su inicio de sesin no est asignado adecuadamente a un
usuario de la base de datos Northwind e implica que no existe una cuenta guest. Para
solucionar este problema, agregue guest ejecutando lo siguiente, o, lo que es ms
conveniente, agregue una asignacin apropiada al inicio de sesin para la base de datos:


Entrada Use Northwind
EXEC sp_grantdbaccess guest

Hasta ahora hemos descubierto dos manera de tener acceso a una base de datos:
ser asignado como usuario desde un inicio de sesin, o utilizando el nombre de usuario
guest. Tambin puede ser dbo, lo que significa que usted es el inicio de sesin que cre
la base de datos. O podra utilizar un alias con otro usuario por razones histricas.
Cmo agregar un alias

sp_addalias nombre_iniciosesin, nombreusuario

En la sintaxis de sp_addalias:

Nombre_iniciodesesin es el nombre de inicio de sesin del usuario que
desea asignar.
Nombreusuario es el usuario de base de datos que usted quiere
personificar.

El uso de alias se cre para ayudar a simplificar la seguridad de una base de
datos. Puede asociar todos los inicios de sesin que desee a un solo usuario de una base
de datos. Si un inicio de sesin ya tiene asignado un nombre de usuario en la base de
datos, ese inicio de sesin no puede asociarse tambin a un usuario. De nuevo, las
funciones proporcionan un modelo de seguridad mucho ms conveniente.
Esta opcin de acceso a las bases de datos se utiliza por lo general para asignar
inicios de sesin al usuario dbo de una base de datos. Sin embargo, slo puede haber un
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
propietario real de la base de datos en un momento dado. Como la mayora de las
empresas tienen ms de un administrador, tal vez quieran que ms de un usuario acte
como propietario de la base de datos. Las funciones se hacen cargo de este problema.
Si cambia de opinin y decide quitar el alias, puede hacerlo por medio del
procedimiento almacenado de sistema sp_dropalias:

Sp_dropalias nombre_iniciodesesin

En la sintaxis, nombre_iniciodesesin es el nombre de inicio de sesin del
usuario.
Los alias deben existir slo en una base de datos que haya sido actualizada en
SQL Server 6.5 a SQL Server 2000 y deben quitarse cuando el tiempo y las pruebas lo
permitan, ya que probablemente no tengan soporte en versiones futuras de Microsoft
SQL Server.


Cmo cambiar el propietario de la base de datos


Tal vez quiera cambiar el propietario de una base de datos existente para asignar
la responsabilidad de una base de datos a un DBA (administrador de bases de datos). Si
desea hacer este cambio, el inicio de sesin no debe existir en la base de datos como
nombre de usuario.
Para cambiar el propietario, ejecute el procedimiento almacenado de sistema
sp_changedbowner:

Sp_changedbowner [@loginame =] iniciodesesin [, [@map =]
reasignar_alias_indicador]
En esta sintaxis:
Iniciodesesin es el ID de inicio de sesin de SQL Server que se va a
asignar.
Reasignar_alias_indicador es un parmetro opcional que si no se
proporciona, ocasiona que se quiten todos los usuarios cuyo alias sea dbo
al cambiar el propietario alias con el dbo antiguo tendrn un alias con el
nuevo dbo.

Hemos visto cuatro maneras distintas de tener acceso a una base de datos una
vez que se inicia con xito una sesin en SQL Server. Las revisaremos en el siguiente
orden:

sa- El usuario sa (o cualquier miembro de la funcin de servidor
sysadmin) siempre tiene acceso a una base de datos y siempre aparece
como dbo, incluso cuando se haya asignado la propiedad de base de
datos a otro inicio de sesin con sp_changedbwner.
Nombre de usuario de base de datos- La manera normal de tener
acceso a una base de datos es utilizar un nombre de usuario asignado a
un ID de inicio de sesin de SQL Server (ya sea un nombre de usuario o
de grupo de Windows 2000). Esto tambin se aplica a los grupos de
Windows 2000 a los que se les haya otorgado derechos de acceso.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Alias- Puede tener un alias con un usuario de base de datos vlido.
Dentro de la base de datos usted emula al otro usuario, en trminos de
permisos y privilegios.
Guest- Si todo lo dems falla, SQL Server comprueba si existe una
cuenta de invitado en la tabla del sistema de base de datos sysusers. Si
existe una, se otorga el acceso como invitado. De no ser as, se niega el
acceso.

Funciones

Hemos propuesto hasta ahora la discusin acerca de las funciones, ya que
enlazan todo lo dems en SQL Server 2000. Puede pensar en las funciones como
grupos de con los grupos de Windows NT/2000.
Las funciones de SQL Server le permiten combinar nombres de usuarios de base
de datos en agrupaciones. No importa si los nombres de usuarios de base de datos se
derivan de grupos de Windows 2000, usuarios de Windows 2000 o inicios de sesin de
SQL Server. Las funciones pueden incluso contener otras funciones como miembros.

La funcin public

En cada base de datos, SQL Server 2000 contiene una funcin integrada de
nombre public. Todos los usuarios, grupos y funciones son miembros de la funcin
public y no pueden quitarse. Piense en esta funcin como algo similar al grupo Todos
de Windows 2000 (vindolo desde el punto de vista tcnico, en realidad es como el
grupo Usuarios autentificados, ya que ha sido validado primero por SQL Server). Es un
atajo conveniente el referirse a todos los usuarios sin tener que nombrarlos
explcitamente.

Funciones de servidor
El inicio de sesin sa es todopoderoso y puede realizar cualquier cosa que desee
en una instancia de SQL Server. Aunque esto es cierto, en realidad se debe a que el
inicio de sesin sa es miembro de la funcin de servidor llamada sysadmin. SQL Server
tiene ocho funciones de servidor. En cualquier momento, puede hacer que un inicio de
sesin sea miembro de una o ms de estas funciones de servidor. Sin embargo, no
puede aumentar ni disminuir la lista de funciones de servidor disponibles. Por ejemplo,
no puede quietar a sa de la funcin de servidor sysadmin.

Funciones de servidor disponibles

La siguiente lista describe el conjunto completo de funciones de servidor
disponibles. Estdielas detalladamente para saber cundo utilizarlas:

sysadmin- Los miembros de esta funcin pueden hacer cualquier cosa en SQL
Server. Aparecen como dbo de todas las bases de datos (aunque no lo sean).
Esencialmente redefinen los permisos y sistemas de seguridad.
serveradmin- Los miembros de esta funcin pueden establecer opciones de
configuracin con el procedimiento almacenado de sistema sp_configure y
pueden apagar el servidor. Tambin pueden configurar el servicio Bsqueda de
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
texto. Los operadores de servidor son buenos candidatos para ser miembros de
esta funcin.
setupadmin- Los miembros de esta funcin pueden instalar y configurar
servidores vinculados y marcar un procedimiento almacenado para ejecutarse al
inicio.
securityadmin- Los miembros de esta funcin pueden crear y controlar inicios
de sesin de servidor, y permisos para crear bases de datos. Pueden configurar
opciones de seguridad de servidores vinculados. Tambin pueden cambiar las
contraseas de los inicios de sesin de SQL Server (excepto las de los miembros
de la funcin sysadin). De nuevo, los operadores son candidatos para esta
funcin, y es muy probable que su personal de apoyo tambin pertenezca a esta
funcin.
processadmin- Los miembros de esta funcin pueden controlar procesos que
estn ejecutndose en el servidor de bases de datos. En este proceso
generalmente implica terminar consultas descontroladas, y el personal de
apoyo podra necesitar este derecho.
dbcreator- Los miembros de esta funcin pueden crear, alterar, y quietar bases
de datos en su servidor. Tambin pueden restaurar cualquier base de datos de su
servidor. Los DBA sea miembro de la funcin sysadmin).
bulkadmin- Los miembros de esta funcin pueden ejecutar la instruccin
BULK INSERT. Aprender ms acerca de BULK INSERT el da 19, Cmo
migrar datos entre servidores de bases de datos.
diskadmin- Los miembros de esta funcin pueden administrar archivos y el
crecimiento de los mismos en el servidor. Sin embargo, los comandos que
pueden utilizar son ms que nada por cuestiones de compatibilidad con SQL
Server 6.5, por lo que probablemente no utilice esta funcin con frecuencia. Los
DBAs son buenos candidatos para esta funcin (si no desea que su DBA sea
miembro de la funcin sysadmin).

Cmo asignar un inicio de sesin a una funcin de servidor

Para asignar un inicio de sesin a una funcin de servidor especfica, puede
utilizar el Administrador corporativo de SQL Server o el procedimiento almacenado de
sistema sp_addsrvrolemember:

sp_addsrvrolemember [@loginame =] iniciodesesin , [@rolename =] funcin

En esta sintaxis:

iniciodesesin Es el ID de inicio de sesin de SQL Server que se va a
agregar a la funcin.
funcin es el nombre de la funcin de servidor a la que desea que se
asigne el inicio de sesin.

Un solo inicio de sesin puede pertenecer a cero, una o ms funciones. Sin
embargo, la funcin sysadmin equivale a todas las dems tanto de servidor como las
especficas de la base de datos- por lo que no necesita asignar ninguna otra funcin si
selecciona la funcin sysadin. Para quitar un inicio de sesin de una funcin de
servidor, utilice el procedimiento almacenado de sistema sp_dropsrvrolemember:
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Sp_dropsrvrolemember [@loginame =] inicio de sesin, [@rolename =]
funcin

En esta sintaxis:
iniciodesesin es el ID de inicio de sesin de SQL Server que se
va a quitar de la funcin.
Funcin es el nombre de la funcin de servidor de la que se va a
quitar el inicio de sesin.

Entrada Exec sp_addsrvrolemember SERVIDORNT\Bob, securityadmin

En este caso, vera el siguiente mensaje:

Salida SERVIDORNT\Bob agregado a la funcin securityadmin

Para quitar a Bob de esta funcin, podra ejecutar:

Entrada Exec sp_dropsrvrolemember SERVIDORNT\Bob,
securityadmin




Y recibira el siguiente mensaje de xito:

Salida SERVIDORNT\Bob quitado de la funcin securityadmin

Para lograr los mismos cambios con el Administrador corporativo de SQL
Server, expanda su servidor, expanda la carpeta Seguridad y luego seleccione y resalte
el elemento de men Funciones del servidor (el icono que tiene una llave). El panel
derecho contiene las ocho funciones de servidor. Haga doble clic en Security
Administrators para ver el cuadro de dilogo Propiedades de la funcin del servidor.
Haga clic en Agregar y aparecer una lista de inicios de sesin vlidos. Seleccione
SERVIDORNT \Bob (o el equivalente en su servidor), haga clic en Aceptar Una vez
que haga clic de nuevo en Aceptar, habr logrado lo mismo que al ejecutar el
procedimiento almacenado de sistema sp_addsrvrolemember, slo que esta ve utiliz la
interfaz grfica.

Funciones de base de datos

Cada base de datos tambin contiene funciones. Algunas de estas funciones son
fijas, y usted tambin puede agregar sus propias funciones (a diferencia de las funciones
de servidor). Tenga en mente que estas funciones de base de datos son especficas para
la base de datos, por lo que no puede tener funciones que afecten a ms de una sola base
de datos en un momento dado. Sin embargo, puede crear las mismas funciones en cada
base de datos.


Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Funciones fijas especficas de la base de datos

Cada base de datos tambin tiene un conjunto de funciones fijas de base de datos
a las que se puede asignar un nombre de usuario. Hay nueve funciones de manera
predeterminada, y stas siempre existen (no puede eliminarlas). Cada funcin de base
de datos, al igual que cada funcin de servidor mencionada anteriormente, asigna
permisos y capacidades especficas a los usuarios.

db_owner- Los miembros de esta funcin pueden hacer cualquier cosa
pero slo dentro de su base de datos. Ser un miembro de la funcin
db_owner proporciona a un usuario casi los mismos derechos y permisos
que los del usuario dbo de una base de datos (el propietario). La
excepcin implica al comando restore.
db_accessadmin- Los miembros de esta funcin pueden otorgar o quitar
a los usuarios el acceso a la base de datos (por ejemplo, ejecutando el
procedimiento almacenado de sistema sp_grantdbaccess).
db_securityadmin- Los miembros de esta funcin pueden controlar
todos los permisos, funciones, membresa de funciones y propietarios de
objetos en la base de datos.
db_ddladmin- Los miembros de esta funcin pueden crear, modificar y
quitar todos los objetos de base de datos, pero no pueden ejecutar
comandos relacionados con la seguridad (Grant, revoke, deny).
Aprender ms acerca de estos comandos en la leccin de maana.
db_backupoperator- Los miembros de esta funcin pueden ejecutar
comandos DBCC seleccionados, as como los comandos checkpoint y
backup.
db_datareader- Los miembros de esta funcin tienen el permiso de
seleccionar todos los datos en cualquier tabla, vista o funcin de la base
de datos.
db_datawriter- Los miembros de esta funcin tienen derechos de
insercin, actualizacin y eliminacin en cualquier tabla o vista de la
base de datos.
db_denydatareader- Los miembros de esta funcin no pueden
seleccionar datos de ninguna tabla, vista o funcin de la base de datos.
db_denydatawriter- Los miembros de esta funcin no pueden modificar
datos de la base de datos con las instrucciones insert, update o delete en
ninguna tabla o vista de la base de datos.

Funciones de base de datos definidas por el usuario

Adems de las funciones fijas de base de datos disponibles, usted puede crear
funciones y luego asignarles usuarios o funciones. Los motivos para crear funciones en
una base de datos de SQL Server son los mismos que para crear un grupo de Windows
2000 para agrupar manera conveniente a los usuarios que realizan funciones similares.
Debe crear tantas funciones como sea necesario. No hay restricciones en cuanto al
nmero de funciones de las que un usuario pueda ser miembro, y las funciones pueden
ser miembros de otras funciones.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Para crear una funcin, empiece con el procedimiento almacenado de sistema
sp_addrole:

Sp_addrole [@rolename =] funcin [,[@ownername =] propietario]

En esta sintaxis:

funcin es el nombre deseado para la nueva funcin
propietario es el nombre de usuario de SQL Server que va a ser
propietario de la funcin (cada usuario puede tener sus propias
funciones). El valor predeterminado es dbo, y es muy probable que eso
sea exactamente lo que usted desee que ocurra.

Slo los miembros de la funcin de servidor sysadin o de las funciones de base
de datos db_owner o db_securityadmin pueden agregar una nueva funcin a la base de
datos. Esto tambin se aplica para quitar funciones. Hay algo raro en cuanto a las
funciones: aunque puede especificar el nombre del propietario, el nombre de la funcin
debe ser nico en la base de datos. Por lo tanto, no necesita saber quin es el propietario
al quitar una funcin, ya que el nombre es nico en la base de datos.
Para quitar una funcin de una base de datos, ejecute el procedimiento
almacenado de sistema sp_droprole:

Sp_droprole [@rolename =] funcin

En esta sintaxis, funcin es el nombre de la funcin creada por el usuario que
desea eliminar.
No puede eliminar una funcin si tiene usuarios u otras funciones como
miembros. Tampoco puede eliminar la funcin si posee algn objeto. Aprender ms
acerca de la propiedad de objetos en la leccin de maana. Esto trae a consideracin
otra pregunta interesante: Cmo se agregan usuarios a una funcin? Utilice el
procedimiento almacenado de sistema sp_addrolemember para agregar usuarios a las
funciones de base de datos fijas o definidas por el usuario:

Sp_addrolemember [@rolename =] funcin, [@membername =]
cuenta_basededatos

En esta sintaxis:

funcin es el nombre de la funcin a la que desea agregar un usuario.
cuenta_basededatos es el nombre de usuario, de grupo o de funcin que
desea agregar a esta funcin.

Para quitar a un miembro de una funcin ejecute sp_droprolemember:

sp_droprolemember [@rolename =] funcin, [@membername =]
cuenta_basededatos

En esta sintaxis:

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
funcin es el nombre de la funcin a la que desea quitar un usuario.
cuenta_basededatos es el nombre de usuario, de grupo o de funcin que
desea quitar de esta funcin.

El siguiente cdigo muestra cmo se pueden utilizar estos procedimientos
almacenados. Para agregar una nueva funcin en la base de datos pubs y luego
asignarle un usuario, ejecute este cdigo:

Entrada Use pubs
Exec sp_addrole Administracion
Exec sp_addrole Operaciones
Exec sp_addrolemember Administracion, Don
Exec sp_addrolemember Operaciones, SERVIDORNT\Mercadotecnia

Deben aparecer los siguientes mensajes en la salida:

Salida Agregada la nueva funcin.
Agregada la nueva funcin.
Don agregado a la funcin Administracion.
SERVIDORNT\Mercadotecnia agregado a la funcin Operaciones.

Observe que si trata de quitar una funcin con miembros, se producir un error:

Exec sp_droprole Operaciones

Este error produce el siguiente mensaje:

Servidor: mensaje 15144, nivel 16, estado 1, procedimiento sp_droprole, lnea 53 la
funcin tiene miembros. Debe estar vaca antes de quitarla.
Name
.
SERVIDOR\Mercadotecnia

Incluso SQL Server le indica cules miembros permanecen en la funcin. Para
quitar esos miembros, ejecute lo siguiente:


Entrada Exec sp_droprolemember Operaciones, SERVIFORNT\Mercadotecnia
Exec sp_droprole Operaciones


Este mensaje de salida indica que la operacin tuvo xito:

Salida SERVIDORNT\Mercadotecnia quietado de la funcin Operaciones.
Funcin quitada.

La membresa en cada funcin se guarda en una combinacin de las tablas de
sistema sysusers y sysmembers. Puede examinar qu funciones existen ejecutando el
procediendo almacenado de sistema sp_helprole o sp_helprolemember. Ambos
procedimientos almacenados toman un solo parmetro: el nombre de la funcin entre
comillas.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Puede lograr los mismos resultados utilizando el Administrador corporativo de
SQL Server. Vaya a la entrada Inicios de sesin de la carpeta Seguridad de su servidor y
haga doble clic en un inicio de sesin, o haga clic con el botn derecho del ratn y
seleccione la opcin Propiedades del men contextual. Eleg SERVIDORNT\Bob para
el siguiente ejemplo. Aqu tambin puede configurar funciones de servidor, en la ficha
Funciones del servidor. Sin embargo, por ahora nos enfocaremos en la ltima ficha,
Acceso a base de datos. Seleccin y resalte la base de datos pubs, y deber aparecer
una lista de funciones en la ventana Funciones de base de datos.
No slo aparecen todas las funciones fijas de base de datos, sino que tambin
aparecer sus funciones creadas por el usuario. Deslcese al final de la lista hasta
encontrar la funcin Administracin. Para hacer que este usuario de base de datos sea
miembro de una funcin, simplemente marque la casilla que est enseguida del nombre
de la funcin. Para quitarlo de la funcin, desmarque la casilla. As de simple!.
Para crear una nueva funcin con el Administrador corporativo de SQL Server.
Expanda la carpeta Bases de datos y luego expanda la base de datos con la que va a
trabajar. Para este ejemplo, expanda la base de datos pubs. Luego seleccione y resalte
la entrada Funciones y aparecer la lista de funciones en el panel derecho. Para agregar
una nueva funcin, haga clic con el botn derecho del ratn en el espacio en blanco del
panel derecho y seleccione la opcin nueva funcin de base de datos. Agregue una
nueva funcin llamada Finanzas, que tenga a SERVIDORNT/Bob como miembro.
Cuando termine, haga clic en Aceptar para finalizar la creacin de la funcin.
Aprender ms acerca de la opcin Funcin de aplicacin en la siguiente seccin.


Funciones de aplicacin

Las funciones de aplicacin son una caracterstica muy til de SQL Server 2000.
Aunque puede pensar que las funciones de aplicacin son similares a las dems
funciones que hemos visto, realizan una funcin distinta de las dems funciones.
Las funciones de aplicacin sirven para algunos de los mismos propsitos de las
otras funciones; usarlas es una estupenda manera de agrupar usuarios, de manera que
puedan aplicarse los permisos en un nivel superior a mantenerlos para cada usuario. Sin
embargo, son distintas en cuanto a que pueden ser activadas por una aplicacin. Una
vez que una aplicacin activa una funcin de aplicacin, se suspenden todos los
permisos del usuario, y slo se hacen valer los permisos de la funcin. Desde luego que
la funcin requiere de una contrasea para ser habilitada con xito (a menos que usted
no quiera una contrasea).
Una aplicacin de nmina es un excelente ejemplo del uso de las funciones de
aplicacin. Aunque todos los administradores del departamento de nminas deben
actualizar la informacin acerca del salario de los empleados y las bonificaciones en
forma peridica, para usted preferible que utilicen su aplicacin en lugar de que
consulten directamente la base de datos de SQL Server (con consecuencias
potencialmente desastrosas). Al iniciar la aplicacin, puede hacer que los usuarios se
conecten con SQL Server como ellos mismos (ya sea con inicios de sesin de SQL
Server o preferiblemente con sus credenciales de Windows 2000, para que no se den
cuenta de que se estn conectando). Luego puede ejecutar el cdigo apropiado (el
procedimiento almacenado de sistema sp_setapprole) para activar la funcin de la
aplicacin de nmina. A partir de ese momento, y hasta que la aplicacin termine su
conexin a la base de datos, se hacen valer los permiso de la funcin y se desactivan los
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
permisos de los usuarios. Por lo tanto, si la funcin de nmina tiene permiso para
modificar las tablas de la nmina, pero los administradores de la nmina no, usted an
puede hacer que ejecuten la aplicacin. Mejor an, ellos no pueden evadir
conscientemente (inconscientemente) cualquier tipo de seguridad o controles que usted
tenga con su aplicacin. Lo mejor de todo es que se utiliza la informacin de inicio de
sesin de los usuarios para llevar una auditora de todas las actividades.
Las funciones de aplicacin son muy interesantes. Ahora veamos la forma de
implementarlas. Pienso que estar de acuerdo en que son relativamente simples,
considerando lo poderosas que son. En la leccin de maana aprender cmo asignar
permisos a las funciones.
Primero, cree una funcin de aplicacin utilizando el procedimiento almacenado
de sistema sp_addapprole:

Sp_addapprole [@rolename =] funcin, [@password =] contrasea

En esta sintaxis:

Funcin es el nombre de la funcin que desea crear.
Contrasea es la contrasea que debe pasar la aplicacin para habilitar la
funcin.

Para quitar una funcin de aplicacin, ejecute el procedimiento almacenado de
sistema sp_dropapprole:

Sp_dropapprole [@rolename =] funcin

En esta sintaxis, funcin es el nombre de la funcin que desea quitar.

Luego, para utilizar la funcin en su aplicacin, debe ejecutar el procedimiento
almacenado de sistema sp_setapprole:

Sp_setapprole [@rolename =] funcin ,
[@password =] {encrypt N contrasea} | contraea
[,[@encrypt =] estilo_cifrado]

En esta sintaxis:

Funcin es el nombre de la funcin que desea habilitar.
Contrasea es la contrasea especificada en la ejecucin de
sp_addapprole.
Encrypt N contrasea solicita que se cifre la contrasea al enviarse a
travs de la red (si slo especifica la contrasea, se enva a travs de la
red sin cifrarse).
Estilo_cifrado especifica el tipo de cifrado a utilizar. Actualmente puede
elegir entre dos valores disponibles: none y obvc. ODBC (Conectividad
Abierta de Bases de Datos) se especifica cuando se utiliza un cliente
basado en ODBC y significa que se utilizar la funcin cannica Encrypt
de ODBC para cifrar la contrasea antes de enviarla a travs de la red.

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Para crear y luego utilizar una funcin de aplicacin, puede ejecutar la siguiente
secuencia de comandos dentro del Analizador de consultas de SQL Server (una
herramienta basada en ODBC):

Entrada Use pubs
Exec sp_addapprole Nomina, contrasea
Go
Exec sp_setapprole Nomina, {Encrypt N contrasea}, odbc

Recibir los siguientes mensajes:

Salida Agregada la nueva funcin de aplicacin.
La funcin de aplicacin Nomina est activa.

De aqu en adelante, todos los permisos para esta conexin con SQL Server
utilizarn los permisos de la funcin de aplicacin. La auditora de la actividad
realizada an se muestra con la informacin de inicio de sesin de un usuario
individual, no con la funcin de aplicacin. Por lo tanto, an puede saber lo que est
haciendo un individuo, incluso auque l mismo haya habilitado esta funcionalidad de
grupo.


Tipos de datos y creacin de Tablas

En esta leccin aprender a agregar tablas a sus bases de datos. Primero
veremos una descripcin general de las tablas y luego los distintos tipos de datos
utilizados para crear sus tablas. Despus aprender a colocar toda la informacin en
conjunto para crear y modificar tablas en su base de datos, utilizando cdigo. Luego
veremos cmo Microsoft ha simplificado el proceso de la codificacin al permitirle
crear tablas en forma grfica con el Administrador corporativo de SQL Server.

Tablas

Las tablas guardan todos los datos en su base de datos y estn organizadas en
filas y columnas (registros y campos). Cada columna de su tabla puede guardar un tipo
especfico de informacin, o tipo de datos.
Una tabla individual representa una entidad en su base de datos. Cada fila de la
tabla representa una ocurrencia de esa entidad. Las columnas en su tabla describen los
atributos de esa entidad lgica. Por. Ejemplo, podra crear una tabla de empleados (en
la que los empleados son una entidad lgica). Una fila individual en la tabla empleados
representa una instancia individual de un empleado. Las columnas que forman esa tabla
describe al empleado. Algunas columnas que podra incluir son IDEmpleado, Nombre,
ApellidoPaterno y NSS (Nmero de Seguro Social).

Columnas

Cada columna (campo) de su tabla debe tener asignado un nombre,. Un tipo de
datos, una longitud (opcional), una intercalacin (opcional) y un estado de nulidad.
Puede colocar columnas en cualquier orden en su definicin de tabla. Cada columna
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
tambin debe tener un nombre nico dentro de la tabla, y debe seguir las reglas de los
identificadores de SQL Server (las cuales se describen en la siguiente seccin).
Una base de datos individual puede contener hasta 2mil millones de tablas, y
cada tabla puede guardar hasta 1,024 columnas. La longitud mxima de cualquier fila
es de 8,192 bytes, menos la sobrecarga inherente en el almacenamiento fsico de las
filas en SQL Server. Esta sobrecarga vara, dependiendo de muchos factores. Por lo
tanto, nos limitaremos a decir que la cantidad mxima de espacio de almacenamiento de
datos es de 8,060 bytes por fila.
La longitud mxima de una columna individual es de 8,000 bytes, y se pueden
tener hasta 1.024 columnas en una fila; sin embargo, una fila no puede ser mayor que
una pgina datos (8,192 bytes), incluyendo datos y sobrecarga. La excepcin es para
los tipos de datos text e image, los cuales permiten hasta 2 GB de informacin de texto
o binaria. NO se guardan fsicamente como parte de una fila de tabla, por lo que no
cuentan en la restriccin de que una fila de datos debe caber en una pgina de datos
individual. Ms adelante conocer ms detalles en relacin con las longitudes de
columna y la sobrecarga de tablas y de filas.

Identificadores de SQL Server

Todos los nombres de tablas de SQL Server, as como los nombres de columnas
y cualquier otro nombre de objeto, deben seguir estas reglas para los identificadores de
SQL Server:
Los identificadores pueden tener una longitud de 1 a128 caracteres Unicode,
incluyendo letras, smbolos y nmeros.
El primer carcter debe ser una letra o uno de los siguientes smbolos: @, #, o _
(guin bajo). Los smbolos @ y #tienen significado especial en SQL Server.
Puede utilizar los siguientes smbolos despus del primer carcter: #, y _.
Los identificadores que empieza con el smbolo @ se utilizan como variables
locales. El smbolo @ puede aparecer slo como el primer carcter en un
identificador.
Los identificadores que empiezan con el smbolo #se utilizan para indicar que
los objetos que estn creando son temporales y el usuario puede hacer
referencia a ellos durante la sesin.
Los identificadores que empiezan con ##indican que los objetos que estn
creando son objetos globales temporales y todos los usuarios de la base de
datos pueden hacer referencia a ellos.
Puede utilizar espacios incrustados en sus identificadores, pero para hacer
referencia a esos objetos debe encapsularlos ya sea en comillas dobles o en
corchetes. Por ejemplo, en una taba llamada PensionEmpleado, habra que
hacer referencia a la misma como PensionEMpleado o [PensinEmpleado] en
la base de datos. Es preferible el uso de los corchetes (si insiste en utilizar
espacios en sus nombres de identificadores) para no confundir las cadenas
constantes con identificadores de SQL Server.


La tabla 2.1 muestra algunos ejemplos de identificadores vlidos y no vlidos.

Tabla 2.1 Identificando vlidos y no vlidos

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Identificador Comentarios

1001 Noches Identificador invlido. Los identificadores deben
empezar con una letra.
@Direcciones Este identificador es vlido slo para crear una
tabla.
Tabla@Direccion Identificador invlido. El smbolo @ slo puede
ser el primer carcter en un identificador.
#tblCiudades Este identificador es vlido slo si va a crear un
objeto temporal. Este objeto est disponible slo
para el usuario que lo cre.
##tblCiudades Este identificador es vlido slo si va a crear un
objeto global temporal, el cual est disponible para
todos los usuarios.
TblEmpleado Identificador vlido. Aunque los prefijos en los
identificadores (tbl de tabla) no son necesario,
facilitan la lectura de sus instrucciones de SQL, ya
que el prefijo denota lo que el identificador
representa. Otros identificadores comunes son qry
para consulta, tr para desencadenador, sp_ para
procedimientos almacenados de sistema, etctera.

Titulos, Autor_Resenia Estos identificadores son vlidos


Tipos de datos

El tipo de datos especifica el tipo de informacin (numrico, carcter, etctera) y
cunto espacio ocupa esa informacin en una columna especfica. Algunos tipos de
datos tienen una longitud variable, mientras que otros tienen una longitud fija. Los
tipos de datos de SQL Server pueden dividirse en los siguientes grupos: cadenas, datos
Unicode, binarios, enteros, numricos con aproximacin y exactos, especiales, de fecha
y hora, monetarios, de incremento automtico, sinnimos, definidos por el usuario, y de
columna calculada. La tabla 2.18 muestra los distintos tipos de datos permitidos en
SQL 2000.

Tabla 2.2 Tipos de datos soportados en SQL Server 2000
Categora Tipo de datos Comentarios

Cadena char (n), varchar (n) Guarda cadenas de
caracteres.
Binario binary (n), Guarda informacin binaria
Varbinary (n) de 2 bytes.
Entero int, smallint, Guarda valores enteros.
Bigint, tinyint
Numrico flota, real Guarda informacin
numrica
aproximado aproximada.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Numrico exacto decimal, numeric Guarda informacin
numrica exacta.
Especial bit, text, image. Guarda informacin de
Sql_variant, table de carcter de un solo bit
mayor
De 8.000 bytes, o datos de imagen
sql_variant guarda casi cualquier
cosa, y table guarda tablas.
Fecha y hora datetime, Guarda fechas y horas.
smalldatetime
Monetario money, Guarda valores monetarios.
smalmoney
Incremento automtico rowversion Guarda valores que son tipos de datos
que son incrementados o establecidos
automticamente por SQL Server.
Sinnimos (Vea la tabla 2.9) Asigna tipos de datos ANSI a tipos de
datos de SQL Server.
Datos Unicode nchar,ntext,nvarchar Guarda los datos en formato Unicode
(doble byte por carcter almacenado).
Definido por el usuario Puede crear sus propios tipos de datos
para guardar informacin.
Columnas calculadas Guarda la expresin utilizada para
calcular la columna. No guarda los
slo las expresiones utilizadas para
crearlos.





Nulidad

La nulidad de una columna se refiere a si se requiere o no una entrada para
esa columna, Si desea permitir que una columna indique que el valor es desconocido,
especifique NULL. Si desea insistir que cada fila tenga una entrada en esa columna,
especifique NOT NULL. Si no especifica NULL o NOT NULL, se utiliza el valor
predeterminado APRA la base de datos (o la conexin de SQUL Server). Al instalar
por primera vez SQL Server, el valor predeterminado en cada base de datos es que las
columnas se creen con la opcin NOT NULL. Como con la mayora de las opciones en
SQL Server, esta opcin predeterminada puede modificarse, incluso de conexin en
conexin . Por lo tanto, siempre es una excelente idea especificar si desea que una
columna tenga el atributo NUL O NOT NULL

Intercalacin

Tambin puede especificar una intercalacin para una columna de datos
individual en su tabla. Si no especifica un nombre de intercalacin, SQL Server utiliza
la intercalacin predeterminada de la base de datos.


Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Cadenas

Las cadenas contienen datos de tipo carcter y estn compuestos de letras,
nmeros y smbolos. Puede guardar este tipo de datos ya sea en un formato de longitud
fija o de longitud variable, utilizando las palabras clave char (n) o varchar (n). Puede
guardar un mximo de 8,000 caracteres en estos tipos de datos.
Al crear un campo de longitud fija (char), especfica que este campo siempre
contendr n bytes de informacin. Si los datos que introduce en el campo son menos de
n, el campo se rellena con espacios para que siempre ocupe n bytes. Si trata de colocar
ms de n bytes datos en el campo, sus datos se truncan. La tabla 2.3 muestra algunos
ejemplos sobre cmo introducir datos en un campo declarado como sNombre char (8).
(El smbolo *denota un espacio en este ejemplo.)




Tabla 2.3 Campos de caracteres de longitud fija



Datos introducidos sNombre Contiene

Laureano Laureano
Marco Antonio Marco An
Denise Denise**


Al utilizar campos de longitud variable (varchar) especifica la longitud mxima
que puede tener el campo, pero, a diferencia de los campos de longitud fija, los campos
de longitud variable no se rellenan con espacios. El uso de este tipo de campo puede
hacer que su base de datos utilice la memoria con ms eficiencia, pero se paga un
pequeo precios en el rendimiento. Cuando se declara un campo como de longitud
variable, SQL Server debe terminar en dnde acaba el campo y empieza el siguiente.
La sobrecarga adicional se asocia con los campos de Longitud variable en forma de
bytes agregados a las filas y a la tabla. Varchar es til cuando se espera una amplia
variacin en el tamao de los datos, o cuando se van a permitir valores nulos en su
campo.
Al escribir datos de tipo carcter en SQP Server, debe encerrar los datos en
comillas sencillas o dobles. Son preferibles las comillas sencillas, para que no haya
confusin entre constantes de cadena e identificadores de SQL Server. Para escribir
NULL en un campo en SQL Server, utilice la palabra clave NULL sin comillas.
El listado 2.1 muestra un ejemplo de la creacin de una tabla utilizando las
palabras clave char y varchar.
Listado 2.1 Uso de char y de varchar

CREATE TABLE tblClientes
(
strIDCliente char (8) NOT NULL,
strNombreCliente (varchar (30) NOT NULL
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
strCorreoE varchar (50)
)

Datos binarios

El tipo de datos binary guarda datos binarios. Estos datos se guardan como una
serie de 1s y 0s, los cuales se representan en l entrada y salida como pares
hexadecimales. Estos pares hexadecimales estn compuestos de los caracteres del 0 al 9
y de la A a la F. Por ejemplo, si crea un campo tal como binUnosDatos binary (20),
est especificando que va a tener 20 bytes de datos binarios.
Al igual que con los tipos de datos de cadena, puede especificar un mximo de
8.000 bytes tanto para los tipos de datos binary (n) como varbinary (n). Si utiliza el tipo
de datos binary (n), la informacin que escriba se rellena con espacios (0x20). El tipo
de datos varbinary (n) no se rellena. Si trata de escribir datos con una longitud mayor
de la mxima especificad, los datos se truncan.
Para introducir datos en un tipo de datos binary, anteponga un 0x a la cadena.
Por ejemplo, para escribir el valor 10 en un campo binario, utilizara un prefijo de la
siguiente manera: 0x10.

Considere estas instrucciones de ejemplo:

MisIconos varbinary (255)
MisCursores binary (200)
binPequeoWav vabinary (255)

Enteros

Los cuatro tipos de datos enteros son bigint, int, smallint y tinyint, los cuales
guardan valores escalares exacto. La diferencia entre los tipos de datos enteros es la
cantidad de espacio de almacenamiento que requieren y el rango de valores que pueden
guardar. La tabla 9.4 muestra los tipos de datos enteros y sus rangos.

Tabla 2.4 Tipos de datos enteros


Tipos de datos Longitud Rango

Tinyint 1 0-255
Smallint 2 +32,767
Int 4 +2,147,483,657
Bigint 8 +2^63


Considere estas declaraciones de ejemplo:
bytEempleadoEdad tinynt NULL
intIDEmpleado smallint NOT NULL
IngIDCliente int NOT NULL
bigIDPedidoWeb bigint NOT NULL

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Tipos de datos numricos aproximados y exactos


SQL Server permite ambos tipos de datos aproximados (float y real), as como
tipos de datos numricos exactos (decimal y numeric). Al declarar tipos de datos
aproximados, se especifica una precisin que vive siendo el nmero mximo de dgitos
permitidos en ambos lados del punto decimal. Al declarar un tipo de datos exacto,
tambin debe especificar una escala, que viene siendo el nmero total de dgitos
permitidos en el lado derecho del punto decimal.

Tabla 2.5 Requerimientos de precisin y almacenamiento


Precisin Almacenamiento

1-9 5
10-19 9
20-29 13
30-38 17


Tipos de datos numricos aproximados

Los tipos de datos numricos aproximados son float y real. Los nmeros
guardados en estos tipos de datos estn compuestos de dos partes: la mantisa y el
exponente. El algoritmo utilizado para producir estas dos partes no es exactamente
preciso. En otras palabras, tal vez no reciba lo que introduce exactamente. Esto se
convierte en un problema slo cuando la precisin del nmero almacenado se acerca a
la precisin especificada en el tipo de datos. Por ejemplo, la precisin permitida para
los nmeros de punto flotante (float) es de hasta 38 dgitos. Los nmeros de punto
flotante y los reales son tiles para datos cientficos y estadsticos para los que no es
necesaria una precisin absoluta, pero los valores varan desde nmeros
extremadamente pequeos hasta nmero extremadamente grandes.
Los nmeros reales tienen una precisin de siete dgitos y requieren 4 bytes para
su almacenamiento. Si declara un tipo float y especifica una precisin de menos de 7,
en realidad est creando un tipo de datos real. Los valores tipo float pueden tener una
precisin desde 1 hasta 38. De manera predeterminada, un tipo float tiene una precisin
de 15 dgitos, si no se especifica otro valor. Puede realizar todos los clculos en un tipo
float, excepto la operacin mdulo (la cual devuelve el residuo entero de una divisin
de enteros). Vamos a suponer que crea el siguiente tipo de datos:
sunUnValor real

Puede guardar los nmeros 188,445.2 o 1,884.452, pero no los valores
188,455.27 ni 1,884.4527, ya que son mayores que la precisin predeterminada de siete
dgitos. Para guardar estos valores ms grandes, debe crear una variable de tipo float
con una precisin lo suficientemente grande como para guardar todos los dgitos. Como
se requieren 8bytes de almacenamiento, debe declarar su tipo de datos as:

dblUnValor float (8)
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Tipos de datos numricos exactos

Los tipos de datos numricos exactos son decimal y numeric. La precisin se
preserva hasta el digito menos significativo. Cuando declara un tipo de datos numrico
exacto, debe especificar tanto una precisin como una escala. Si no especifica una
precisin y una escala, SQL Server utiliza los valores predeterminados 18 y 0.
Si declara una columna como decimal (7,2), sta puede guardar los nmeros
1000.55 y 11000.55 pero no los nmeros 11110000.55 ni 1100.5678. Si intenta colocar
un nmero mayor de lo permitido por la precisin y la escala, el nmero se trunca. El
listado 2.2 muestra un ejemplo del uso de tipos de datos numricos exactos.

Listado 2.2 Uso de tipos de datos numricos


CREATE TABLE tBl0ro

(
decPesoAtomico decimal (8,4),
numMolsPorGramo numeric (12,6),
numDensidad numeric (5,4)
)



Tipos de datos especiales

Existen varios tipos de datos que simplemente no entran en ninguna de las otras
categoras. Los he agregad aqu, en la seccin Tipos de datos especiales. Aprender
acerca del tipo de datos bit y acerca de los dos tipos de datos BLOB (objeto binario
grande), text e image, as como del tipo de datos RowGUID.

Bit

El tipo de datos bit es un tipo de datos lgico utilizado para guardar informacin
de carcter booleano. Los tipos de datos booleanos se utilizan como indicadores para
denotar cosas como encendido/apagado, verdadero/falso y s/no. Los valores que se
guardan aqu son 0 o 1.
Las columnas bit pueden ser NULL (desconocido) y no pueden indicase. Los
tipos de datos bit requieren de un solo byte de espacio de almacenamiento. Si tiene
varias columnas bit definidas en una tabla, SQL Server agrupa automticamente hasta
ocho campos de bit ente s en un solo byte de espacio de almacenamiento. Considere
estos ejemplos acerca del uso del tipo de datos bit:

boolSexo bit NOT NULL
bool Pagadoo bit NULL
boolImpreso bit NOT NULL

Text e image
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Los tipos de datos text e image se utilizan cuando los requerimientos de
almacenamiento se exceden del lmite de 8,000 caracteres por columna. Estos tipos de
datos se conocen comnmente como BLOBs. Los tipos de datos text e image pueden
guardar hasta 2GB de datos binarios o de texto por declaracin.
Al declarar un tipo de datos text o image, se agrega a la fila un apuntador de 16
bytes. Este apuntador de 16 bytes apunta a una pgina de datos separada de 8 KB, en
donde se aguarda informacin adicional acerca de sus datos. Si sus datos se exceden de
los 8 KB de una pgina de datos, se crean apuntadores para que apunten a las pginas
adicionales de su BLOB.
El almacenamiento y la recuperacin de datos tipo text e image pueden estropear
el rendimiento de su base de datos, ya que se aplican grandes cantidades de datos a sus
registros de transacciones durante las inserciones, actualizaciones y eliminaciones.
Puede solucionar este problema utilizando el comando WRITETEXT, ya que ste aplica
modificaciones a los datos sin crear una entrada correspondiente en el registro de
transacciones.

Una alternativa a los grandes requerimientos de almacenamiento de los tipos de
datos text e image es guardar esos elementos como archivos separados, y luego guardar
la ruta hacia esos archivos en su base de datos.

A continuacin se muestran algunas declaraciones de ejemplo de los tipos de
datos text e image:

imgFotoEmpleado image
imgContratosDigitalizados image
strDescripcion text
strComentarios text

RowGUID

Cuando se utiliza la duplicacin de mezcla, como se describe en los das 16,
Comprensin de las metodologas de diseo de duplicacin, y 17, implementacin
de las metodologas de duplicacin, cada columna de sus tablas duplicadas debe tener
un identificador nico. Puede lograr esto creando una columna en cada tabla duplicada
como un tipo de datos uniqueidentifier. Este tipo de datos uniqueidentifier tiene una
propiedad llamada ROWGUIDCOL. Cuando la propiedad ROWGUIDCOL es
modificada por SQL Server. De esta manera, las filas duplicadas de dos bases de datos
pueden rastrearse en forma separada.

Puede inicializar los GUIDs de dos maneras:
Utilice la funcin NEWID.
Convierta una constante de cadena en dgito hexadecimal del tipo
xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx. Ahora, considere este ejemplo de
RowGUID vlido: 8FE17A24-B1AA-23DA-C790-2749A3E09AA2.

Puede utilizar los siguientes operadores de comparacin con sus tipos de datos
uniquidentifier: =, <>, IS NULL e IS NOT NULL.

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Sql_variant

El tipo de datos sql_variant es similar al tipo de datos variante de Visual Basic.
El tipo de datos sql_variant le permite guardar casi cualquier otro tipo de datos de SQL
Server. Las excepciones son ntext, timestamp y sql_variant.
Puede utilizar estos tipos de datos dentro de columnas, como variables en un
comando DECLARE, como parmetros ya como los resultados de las funciones
definidas por el usuario.
Se aplican algunas reglas especiales al comparar los tipos de datos sql_variant.
Cada tipo de datos en SQL Server se coloca dentro de una familia de tipos de datos,
como se muestra en la tabla 2.6.

Tabla 2.6 Familias de tipos de datos



Tipo de datos Familia

Sql_variant sql_variant
Datetime, smalldatetime datetime
float, real Numrico aproximado
bigint, bit, decimal, int, mony, smallint, Numrico exacto
smallmoney, tinyint
char, nchar, nvarchar, varchar Unicode
binary, varbinary Binario
uniquidentifier Identificador nico


Se aplica una regla especial al tipo de datos sql_varian: cuando se comparan dos
tipos de datos sql_variant de familias distintas, la familia con el tipo de base de datos
que tenga una posicin ms alta en la tabla 9.6 se considera como el valor mayor. Por
ejemplo, si guarda un tipo float en un tipo de datos sql_variant y un valor binario en
otro, al hacer su comparacin con el valor foat, siempre se evala con un valor mayor
que el binario.
El tipo de datos sql_variant es tan nuevo que es difcil definir exactamente dnde
y cundo debe utilizarse. Para obtener informacin adicional acerca del tipo de datos
sql_variant, vea los Libros en pantalla de SQL Server.


Tipos de datos de fecha y hora

Los datos de fecha y hora pueden guardarse en un tipo de datos datetime o
smalldatetime. Observe que la fecha y hora siempre se guardan juntas en un solo valor.
los datos de fecha y hora pueden tener varios formatos distintos. Puede especificar el
mes utilizando el nombre completo o una abreviacin. No hay diferencia entre el uso de
maysculas o minsculas, y las comas son opcionales.

Considere estos ejemplos que utilizan los formatos alfabticos para Abril 15, 2001:
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Abr 15 2001
Abr 15 01
Abr 01 15
15 Abr 01
2001 abril 15
2001 15 Abril


4/15/01 (mda)
4-15-01 (mda)
4.15.01 (mda)
4/01/15 (mad)
15/01/04 (dam)
01/15/04 (amd)


Tambin puede utilizar varios formatos de hora distintos. A continuacin se
muestran algunos ejemplos:

16:30 (4 hrs, 30 mins)
16:30:20:999 (4 hrs, 30 mins, 22 segundos, 999 milisegundos)
4:30 PM

Las fechas guardadas en el tipo de datos datetime se guardan hasta los
milisegundos. En este caso, se utilizan 8 bytes -4 para el nmero de das transcurridos
desde enero 1, 1900, y 4 para el nmero de segundos transcurridos desde media noche.
(las fechas anteriores a sta se guardan como nmeros negativos, por lo que el rango de
fechas sera de 1/1/1753 hasta 12/31/9999.) La precisin de estas fechas es de 3.33
milisegundos.

El tipo de datos smalldatetime utiliza 4 byts. Las fechas guardadas de esta
manera son precisas hasta los minutos. De manera interna, se utiliza un smallint
(2bytes) para el nmero de das transcurridos desde enero 1, 1900; el otro smallint se
utiliza para el nmero de segundos transcurridos desde medianoche. El rango para un
smalldatetime es de 1/1/1900 hasta 6/6/2079.

La tabla 2.7 delinea los tipos de datos datetime.

Tabla 2.9 Tipos de datos de fecha y hora


Tipos de datos Almacenamiento Rango

Datetime 8 1/1/1753 12/31/9999
Smalldatetime 4 1/1/1900 6/6/2079



Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Moneda

Los dos tipos de datos monetarios son Money y smallmoney. Ambos tienen una
escala de cuatro, lo que significa que guardan cuatro dgitos a la derecha del punto
decimal. Estos tipos de datos pueden guardar informacin distinta de valores en
dlares para uso internacional, pero en SQL Server no hay funciones disponibles
reconversin monetaria. Al introducir datos monetarios debe anteponer un signo de
dlares. La tabla 2.8 muestra los tipos de datos monetarios, sus requerimientos y sus
rangos.

Tabla 2.8 Tipos de datos monetarios



Tipo de datos Almacenamiento Rango

money 8 +
922,337,203,685,447.5808
smallmoney 4 +214,748.3647


Como puede ver, smallmoney puede guardar hasta 10 dgitos con una escala de
cuatro. El tpo de datos Money es lo suficientemente grande como APRA guardar la
deuda nacional de los Estados Unidos, con valores que llegan a los cintos de billones.
Estas declaraciones de ejemplo utilizan los tipos de datos monetarios:

curCuentasPorCobrar money
curCuentasPorCobrar smallmoney
El tipo de datos rowversin (timestamp) con incremento automtico

Rowversion es el nuevo nombre para el tipo de datos timestamp. Las etiquetas
de hora se siguen soportando en SQL Server y estn en conformidad con el estndar
ANSI SQL-99. En el resto de esta discusin, utilizaremos la palabra clavetimestamp en
lugar de rowversion. Cada vez que agrega un nuevo registro a una tabla con un campo
rowversion, se agregan automticamente valores de tiempo. Si realiza una actualizacin
en una fila, rowversion tambin se actualiza automticamente a s mismo.
El tipo de datos rowversion crea un valor actualizado automticamente,
generado por SQL Server. Aunque rowversion se guardan como binary (8) para
columnas NOT NULL o como varbinary (8) si la columna est marcada para permitir
valores nulos. No puede tener ms de una columnatimestamp por fila.

Puede utilizar el tipo de datos timestamp para registrar el orden en el que se
agregan y modifican elementos en su tabla. Esos ejemplos utilizan el tipo de datos
timestamp:

timUltimaModificacion timestamp NOT NULL
timLlamadaTelefonica timestamp NOT NULL


Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Trabajo con ANSI y Unicode

Para asegurar que los tipos de datos de SQL Server concuerden con los tipos de
datos ANSI (Instituto Estadounidense de Estndares Nacionales), puede utilizar los
tipos de datos ANSI en lugar de los de SQL Server. La tabla 2.9 muestra los tipos de
datos ANSI y sus equivalentes en SQL.


Tabla 2.9 Sinnimos de SQL Server


Tipo de datos ANSI Tipo de datos de SQL Server

Carcter char
Carcter (n) char (n)
Char varyng varchar
Carcter varying (n) varchar (n)
Binary varying varbinary
Dec decimal
Double precision float
Foat (n) n =1 7 real
Timestamp rowversion
Integer int


Los datos Unicode utilizan el conjunto de caracteres Unicode UCS-2, el
cual es un conjunto de caracteres de varios bytes. Cuando se utilizan caracteres ANSI
comunes, se requiere 1 byte de datos para guardar cualquier carcter dado. Como
resultado, ANSI se conoce algunas veces como estrecho. Unicode se conoce como
conjunto de caracteres amplio, o de varios bytes. El conjunto de caracteres Unicode
UCS-2 utiliza 2 bytes para representar un solo carcter. Es especialmente til cuando se
tienen bases de datos con distintos lenguajes representados en su interior. Por ejemplo,
los lenguajes ingls y espaol tienen un conjunto de letras que puede representarse
fcilmente por un conjunto de caracteres de un solo byte. Ahora piense en un lenguaje
como el japons. Incluso el japons estndar (Kana) contiene ms de 1,000 caracteres.
Un byte estndar de 8 bits puede representar slo 256 caracteres, mientas que un
carcter Unicode de 2 bytes puede representar 65,536 caracteres.
Puede utilizar los tipos de datos nchar, nvarchar, y ntext para representar su
informacin Unicode. nchar y nvarchar tienen un lmite mximo de 8,000 bytes o 4,000
caracteres. Por ejemplo, nchar (4000) es vlido, pero nchar (6000) representa 12,000
caracteres y no cabe en una sola pgina de datos. Su nchar (6000) debe dividirse ya sea
en dos tipos de datos nchar separados o en un solo tipo de datos ntext. El tipo de datos
ntext. Puede soportar hasta 2.14 GB de datos.
Los tipos de datos Unicode son una caracterstica extremadamente poderosa
SQL Server 2000. Si tiene planes de internacionalizacin o de utilizar SQL Server en
pases que no utilicen ingls estadounidense, una excelente solucin es guardar sus
datos con los tipos de datos Unicode. Es de esperarse que Unicode se convierta en el
mecanismo de almacenamiento estndar, a medida que Windows NT y SQL Server se
convierten en mejores soluciones internacionales.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

Creacin de tipos de datos definidos por el usuario


Puede crear tipos de datos definidos por el usuario para una base de datos
especfica o para colocar en la base de datos model. Recuerde, la base de datos model
es una plantilla para crear nuevas bases de datos. Al crear tipos de datos definidos por
el usuario, puede hacerlos disponibles en todas las bases de datos subsecuentes.
Para crear un tipo de datos definido por el usuario, debe utilizar los tipos de
datos proporcionados por el sistema. Por ejemplo, puede crear un nuevo tipo de datos
llamado IDEmpleado y definirlo como carcter o entero, pero no como un tipo de datos
inexistente, como id_columna.
Debe crear el tipo de datos definido por el usuario antes de agregarlo a una tabla.
Para crear un tipo de datos definido por el usuario, puede utilizar el Administrador
corporativo de SQL Server o el procedimiento almacenado de sistema sp_addtype.
Para crear tipos de datos definidos por el usuario con SQL Server, utilice el
procedimiento almacenado de sistema sp_addtype. Por ejemplo, para agregar los
mismos tres tipos de datos definidos por el usuario a la base de datos pubs, ejecute los
siguientes comandos de SQL:



Entrada EXEC sp_addtype strIDemp, char (9) , NULL
EXEC sp_addtype strID, varchar (11) , NULL
EXEC sp_addtype strIDTT , varchar (6), NULL


Despus de declarar un tipo de datos definido por el usuario, puede utilizarlo
todas las veces que quiera en su base de datos. Por ejemplo, Puede utilizar la siguiente
instruccin CREATE TABLE:


Entrada CREATE TABLE tblEmpleado
(
strIdEmpleado strIDEmp NOT NULL,
strNombre char (15) NOT NULL,
strApellidoPaterno char (20) NOT NULL,
strPlanPension strID NOT NULL
)

Para agregar tipos de datos definidos por el usuario conel Administrador
corporativo de SQL Server, siga estos pasos:

1. Abra el Administrador corporativo de SQL Server.
2. Dirjase hasta la base de datos pubs.
3. Vaya a la entrada Tipo de datos definidos por el usuario.
4. Haga clic con el botn derecho del ratn en la carpeta y seleccione Nuevo
tipo de datos definido por el usuario.
5. Escriba el nombre, el tipo de datos, la longitud y cualquier regla o valor
predeterminado al que est enlazado.
6. Haga clic en Aceptar.

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Para quitar tipos de datos definidos por el usuario, puede utilizar el
Administrador corporativo de SQL Server o el procedimiento almacenado de sistema
sp_droptype. En el Administrador corporativo de SQL Server, siga estos pasos:

1. Expanda su base de datos y seleccione la entrada Tipos de datos
definidos por el usuario.
2. En el panel derecho , haga clic con el botn derecho del ratn en el
tipo de datos definido por el usuario que desea quitar, y haga clic en
Eliminar.

Eso es todo. En Transact-SQL, puede ejecutar el procedimiento almacenado de
sistema sp_droptype:


Entrada EXEC sp_droptype strIDEmp





Trabajo con columnas calculadas

Las expresiones que usted guarda pueden crearse de una columna no calculada
en la misma tabla, constantes, funciones, variables y hasta nombres. Su columna
calculada hace los clculos automticamente al ser llamada en las clusulas SELECT,
WHERE u ORDER BY de una consulta. Tambin puede utilizarlas con expresiones
regulares.
Debe seguir unas cuantas reglas al tratar con las columnas calculadas:
Las columnas a las que se hace referencia en la expresin de la columna
calculada deben encontrarse en la misma tabla.
La expresin de la columna calculada no puede contener una
subconsulta.
Las columnas calculadas no pueden ser utilizadas como parte de claves o
ndices; esta restriccin incluye a las claves primarias y externas, as
como a los ndices nicos.
No se puede adjuntar una restriccin DEFAULT a una columna
calculada.
Las columnas calculadas no pueden recibir instrucciones INSERT ni
UPDATE.
Ahora, consideremos algunos ejemplos que utilizan columnas calculadas:

CREATE TABLE tblPedido (
IngIDPedido int NOT NULL,
curPrecio money NOT NULL,
intCantidad smallint NOT NULL,
curTotal AS curPrecio * intCantidad
)

Esta primera tabla tiene una columna calculada llamada curTotal, la cual est
compuesta por la multiplicacin de los campos curPrecio * intCantidad.
Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital

CREATE TABLE tblImprimirFactura (
lngIDFactura int NOT NULL,
detFechaFactura datetime NOT NULL,
dtImprimirFecha AS DateAdd (day,30, dtFechaFactura)
)

En este ejemplo, una columna calculada llamada ImprimirFecha utiliza la
funcin DateAdd para sumar 30 das a la columna dtFechaFactura.


Creacin de tablas

Ahora que ha visto todos los tipos de datos disponibles en SQL Server 2000, es
tiempo de ponerlos a trabajar con la instruccin CREATE TABLE. Al igual que con la
mayora de las cosas en SQL Server, puede crear tablas de dos maneras: utilizando el
Administrador corporativo de SQL Server, o secuencias de comandos de Transact-SQL.

Uso de la instruccin CREATE TABLE

La instruccin CREATE TABLE se utiliza para crear nuevas tablas en SQL
Server 2000. Puede crear tablas por medio de cdigo o por medio del Administrador
corporativo. Primero veremos el uso de cdigo para generar tablas, y luego tendr la
oportunidad de trabajar con el Administrador corporativo. A continuacin se muestra la
sintaxis del comando CREATE TABLE:

CREATE TABLE [basededatos. [propietario.] nombre_tabla
(
Nombre_columna tipodatos [Identity|contraint|NULL|NOT NULL|Collate]
[. . .]
)

En esta sintaxis:

Nombre_tabla es el nombre de la nueva tabla, el cual debe seguir las
reglas para los identificadores. Tambin debe ser nico para su
propietario dentro de la base de datos. Esto significa que si dos usuarios
tienen permiso para crear tablas dentro de una base de datos, las tablas
podran tener el mismo nombre, pero se consideran nicas debido a que
el nombre del propietario forma parte del nombre de la tabla.
Nombre_columna es el nombre de la columna y debe seguir las reglas
para los identificadores.
Tipodatos es el tipo de datos de la columna.
La ltima parte es opcional. Puede especificar la propiedad Identity, las
restricciones de campo y la nulidad.
Collate tambin es opcional. Esta propiedad le permite redefinir la
secuencia de intercalacin de la base de datos para esta columna.

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
El listado 2.3 muestra una instruccin CREATE TABLE de ejemplo. Esta
instruccin crea una tabla de empelados con la capacidad de capturar informacin
acerca de los nombres, las direcciones y fechas de inicio de labores de los empleados.



Listado 2.3 Creacin de una tabla

CREATE TABLE tblEmpleado
(
batid_Emp tinyint IDENTITY NOT NULL,
strNombre char (15)
strApellidoPaterno char (20) NOT NULL,
strDireccion1 varchar (30),
strDireccion2 varchar (30),
strCiudad varchar (30),
strEstado char (2),
strCodigoPostal char (10),
dtFechaInicio datetime
)

.Cmo crear tablas con el Administrador corporativo de SQL Server

Con el Administrador corporativo de SQL Server puede crear sus tablas en
forma visual. Para hacerlo, siga estos pasos:
1. Conctese con su servidor SQL Server, expanda la carpeta Base de datos y
luego expanda la base de datos con la que desea trabajar. A continuacin
haga clic en la entrada Tablas.
Haga clic conel botn derecho del ratn en el panel derecho y seleccione la opcin
Nueva tabla.
2. Agregue la informacin correspondiente en Nombre de columna, Tipo de
datos, Longitud y Permitir valores nulos. En la mitad inferior de la pantalla
puede establecer propiedades de columna tales como la descripcin y la
escala de valores predeterminados. Si desea crear un campo de identidad,
establezca a S la propiedad Identidad (identity) de la ficha Columnas, y
luego elija una inicializacin de identidad y un incremento. Como puede ver
se ha agregado varios campos a mi tabla tblEmpleados.
3. Al terminar de agregar los datos necesarios, haga clic en el icono Guardar
para guardar su tabla y darle un nombre, y luego cierre el cuadro de dilogo.



Cmo quitar tablas

Puede quitar tablas en el Administrador corporativo de SQL Server haciendo clic
con el botn derecho del ratn en la tabla correspondiente y seleccionando la opcin
Eliminar del men contextual. Para quitar una tabla utilizando Transact-SQL, ejecute la
instruccin DROP TABLE. Por ejemplo, para quitar la tabla tblEmpleados, utilice:

Universidad del Mar

Carrera Tcnica: Tcnico Universitario en Computacin
Asignatura: Base de Datos


Udelmar Digital
Entrada DROP TABLE tblEmpleados

Para quitar una tabla utilizando el Administrador corporativo de SQL Server,
siga estos pasos:
1. Vaya hasta la entrada Tablas y haga clic con el botn derecho del ratn en la
tabla que desea quitar.
2. Seleccione la opcin Eliminar del men contextual. Aparecer un cuadro de
dilogo.
3. Si desea ver dependencias en esta tabla, haga clic en el botn Mostrar
dependencias. Cuando la tabla ya no participa en ninguna relacin de claves
primarias/externas, puede hacer clic en el botn Quitar todos para quitar la tabla.

Universidad del Mar

También podría gustarte