You are on page 1of 352

Prefacio

Este manual, la Gua de Administracin del Sistema SQL Server de Sybase , describe
cmo administrar y controlar las bases de datos de SQL Server(TM)
independientemente de cualquier aplicacin de base de datos especfica.

Audiencia
Este manual est destinado a los Administradores del sistema Sybase y a los
Propietarios de base de datos.

Cmo utilizar este manual


Este manual contiene cinco secciones. La Parte 1, "Introduccin", describe los aspectos
bsicos de la administracin del sistema:

El Captulo 1, "Introduccin a la administracin del sistema", describe la


estructura del sistema Sybase.
El Captulo 2, "Bases de datos del sistema", trata el contenido y funcin de las
bases de datos del sistema de SQL Server.
El Captulo 3, "Nociones de administracin del sistema para principiantes",
resume tareas importantes que los Administradores del sistema nuevos deben
realizar.
El Captulo 4, "Diagnosis de problemas en el sistema", trata el manejo de errores
en SQL Server y Backup Server(TM) y muestra cmo cerrar servidores y
destruir procesos.

La Parte 2, "Administracin de los recursos fsicos", describe cmo configurar y utilizar


discos, memoria y procesadores con SQL Server:

El Captulo 5, "Introduccin a los temas de recursos de disco", proporciona una


descripcin general de los aspectos relacionados con los recursos de disco de
SQL Server.
El Captulo 6, "Inicializacin de dispositivos de base de datos", describe cmo
inicializar y utilizar dispositivos de base de datos.
El Captulo 7, "Duplicacin de dispositivos de base de datos", describe cmo
duplicar dispositivos de base de datos para una recuperacin interrumpida del
fallo en un disco.
El Captulo 8, "Configuracin de la memoria", explica cmo configurar SQL
Server para que utilice la memoria disponible en su sistema.
El Captulo 9, "Configuracin de cachs de datos", trata cmo crear cachs con
nombre en la memoria y vincular objetos a esos cachs.
El Captulo 10, "Administracin de servidores multiprocesadores", explica cmo
utilizar varias CPU con SQL Server y trata algunos aspectos de la
administracin del sistema que son exclusivos de los entornos de multiproceso
simtrico (SMP).

La Parte 3, "Configuracin del comportamiento de SQL Server", explica cmo


configurar y utilizar diferentes caractersticas de SQL Server:

El Captulo 11, "Definicin de los parmetros de configuracin", resume los


parmetros de sp_configure , que controlan muchos aspectos del
comportamiento de SQL Server.
El Captulo 12, "Juegos de caracteres, ordenacin e idioma de los mensajes",
trata aspectos internacionales, como los archivos incluidos en los Mdulos de
idioma, y cmo configurar el idioma, criterios de ordenacin y juego de
caracteres para SQL Server.
El Captulo 13, "Conversin de juegos de caracteres entre SQL Server y los
clientes", trata de la conversin de juegos de caracteres entre SQL Server y los
clientes en un entorno heterogneo.

La Parte 4, "Administracin de bases de datos y de sus objetos", describe cmo crear y


administrar bases de datos y segmentos:

El Captulo 14, "Creacin de bases de datos de usuarios", trata la ubicacin


fsica de las bases de datos, tablas e ndices, y la asignacin de espacio para
ellos.
El Captulo 15, "Definicin de opciones de base de datos", describe cmo definir
las opciones de las bases de datos.
El Captulo 16, "Creacin y uso de segmentos", describe cmo utilizar
segmentos, que son colecciones con nombre de dispositivos de base de datos, en
las bases de datos.
El Captulo 17, "Verificacin de la consistencia de las bases de datos", describe
cmo utilizar el verificador de consistencia de bases de datos, dbcc , para
detectar y solucionar problemas en las bases de datos.

La Parte 5, "Copias de seguridad y recuperacin", describe cmo desarrollar y ejecutar


un plan de copia de seguridad y recuperacin del sistema SQL Server:

El Captulo 18, "Desarrollo de un plan de copias de seguridad y recuperacin",


discute las capacidades de Backup Server y cmo desarrollar una estrategia de
copia de seguridad.
El Captulo 19, "Copia de seguridad y restauracin de las bases de datos de
usuario", explica cmo recuperar las bases de datos de usuario.
El Captulo 20, "Copias de seguridad y restauracin de las bases de datos del
sistema", trata cmo recuperar las bases de datos del sistema.
El Captulo 21, "Administracin de espacio libre con umbrales", trata el manejo
de espacio con umbrales.

Documentos relacionados
La documentacin del sistema de administracin de bases de datos relacionales SQL
Server est diseada para satisfacer tanto la preferencia por la simplicidad del usuario
inexperto como el deseo de practicidad y amplitud del usuario experimentado. La gua
del usuario y los manuales de referencia tratan las diversas necesidades de los usuarios
finales, de los administradores de bases de datos y de seguridad, de los desarrolladores
de aplicaciones y de los programadores.
Otros manuales que pueden resultar de utilidad son:

La Gu a de instalacin y configuracin de SQL Server correspondiente a su


plataforma, que describe los procedimientos de instalacin de SQL Server y las
tareas de administracin especficas del sistema operativo.
Gua de Mejora de Rendimiento y Afinacin de SQL Server , que explica cmo
afinar SQL Server para obtener el mximo rendimiento. El libro incluye
informacin sobre aspectos del diseo de bases de datos que afectan al
rendimiento, optimizacin de consultas, cmo afinar SQL Server para bases de
datos de gran tamao, aspectos de disco y cach y los efectos de los bloqueos y
cursores sobre el rendimiento.
Manual de Referencia de SQL Server , que contiene informacin detallada sobre
todos los comandos y procedimientos del sistema tratados en este manual.
Suplemento de Referencia de SQL Server , que contiene una lista de las palabras
reservadas de Transact-SQL(R), definiciones de las tablas del sistema, una
descripcin de la base de datos de ejemplo pubs2 , una lista de los mensajes de
error de SQL Server y otra informacin de referencia que es comn a todos los
manuales.
Gua de Administracin de Seguridad de SQL Server , que explica cmo usar las
funciones de seguridad proporcionadas por SQL Server para controlar el acceso
de los usuarios a los datos. El manual incluye informacin sobre cmo aadir
usuarios a SQL Server, cmo darles un acceso controlado a los objetos de base
de datos y a los procedimientos y cmo administrar SQL Server remotos.
Gua del Usuario de las Caractersticas de Seguridad de SQL Server, que
explica cmo utilizar las funciones de seguridad de SQL Server.
El manual de los programas de utilidad de SQL Server, que documenta los
programas de utilidad de Sybase, como isql y bcp , que se ejecutan a nivel del
sistema operativo.
Gua del Usuario de Transact-SQL , que documenta Transact-SQL, la versin
mejorada por Sybase del lenguaje de base de datos relacional. Este manual sirve
como libro de texto para los usuarios principiantes del sistema de administracin
de bases de datos.
Novedades de SQL Server de Sybase, V ersin 11.0 , que describe las nuevas
caractersticas de la versin 11.0 de SQL Server.

Convenciones utilizadas en este manual


Las secciones siguientes describen las convenciones estilsticas utilizadas en este
manual.
Formato de las instrucciones SQL
SQL es un lenguaje de forma libre: no hay reglas en cuanto al nmero de palabras que
pueden ponerse en una lnea o sobre dnde debe dividirse una lnea. Sin embargo, a
efectos de legibilidad, todos los ejemplos e instrucciones de sintaxis de este manual se
han formateado de forma que cada clusula de una instruccin comience en una nueva
lnea. Las clusulas que tienen ms de una parte se extienden a lneas adicionales de
forma intencionada.
Convenciones de sintaxis SQL
Las convenciones de las instrucciones de sintaxis de este manual son las siguientes:

Tabla 1: Convenciones de las instrucciones de sintaxis


Clave

Definicin
Los nombres de comando, de opcin de comando, de utilidad, de indicador de
comando utilidad y otras palabras clave se imprimen en Courier negrita en las
instrucciones de sintaxis, y en Helvetica negrita en el texto de los prrafos.
variable

Las variables o las palabras que representan valores que debe rellenar el
usuario se muestran en cursiva.

{}

Las llaves indican que el usuario debe elegir al menos una de las opciones
encerradas entre ellas. No incluya las llaves en la opcin.

[]

Los corchetes significan que es opcional elegir una o ms de las opciones


encerradas entre ellos. No incluya los corchetes en la opcin.

()

Los parntesis deben utilizarse como parte del comando.

La barra vertical significa que puede seleccionar slo una de las opciones
mostradas.

La coma significa que puede elegir tantas de las opciones mostradas como
desee, separando las elegidas con comas, que se deben introducir como parte
del comando.

Las instrucciones de sintaxis (que muestran la sintaxis y todas las opciones de un


comando) se imprimen de esta forma:
sp_dropdevice [

device_name

o, en el caso de un comando con ms opciones:


select
column_name
from
table_name
where
search_conditions

En las instrucciones de sintaxis, las palabras clave (comandos) aparecen en una


fuente normal, y los identificadores en minscula: fuente normal para las
palabras clave y cursiva para las palabras suministradas por el usuario.

Los ejemplos que muestran el uso de comandos de Transact-SQL se imprimen


de esta forma:
select * from publishers

Los ejemplos de salida de la computadora se imprimen de esta forma:


pub_id
------0736
0877
1389

pub_name
------------------New Age Books
Binnet & Hardley
Algodata Infosystems

(3 rows affected)

city
----------Boston
Washington
Berkeley

state
----MA
DC
CA

Uso de maysculas o minsculas


Las palabras clave pueden escribirse indistintamente en maysculas o minsculas:
SELECT es lo mismo que Select y que select .
Opciones obligatorias {debe elegir una al menos}

Llaves y barras verticales: Elija una y slo una opcin.


{die_on_your_feet | live_on_your_knees |
live_on_your_feet}

Llaves y comas: Elija una o ms opciones. Si elige varias, seprelas con comas.
{cash, check, credit}

Opciones optativas [no tiene que elegir ninguna]

Un elemento entre corchetes: No es necesario que lo elija.


[anchovies]

Corchetes y barras verticales: Elija una sola o ninguna .


[beans | rice | sweet_potatoes]

Corchetes y comas: Elija ninguna, una o ms de una opcin. Si elige varias,


seprelas con comas.
[extra_cheese, avocados, sour_cream]

Puntos suspensivos: Reptalo una vez (y otra)...


Los puntos suspensivos (. . .) significan que puede repetir la ltima unidad tantas veces
como desee. En esta instruccin de sintaxis, buy es una palabra clave requerida:
buy thing = price [cash | check | credit]
[, thing = price [cash | check | credit] ]...

Debe comprar al menos una cosa y dar su precio. Puede elegir una forma de pago: una
de las opciones encerradas entre corchetes. Tambin puede elegir comprar otras cosas:
tantas como desee. Por cada cosa que compre, d su nombre y precio y (opcionalmente)
una forma de pago.
Los puntos suspensivos tambin sirven para indicar partes de un comando que se omiten
de un ejemplo de texto. La siguiente instruccin de sintaxis representa el comando
create database completo, aunque faltan palabras clave requeridas y otras opciones:
create database...for load

Expresiones

En las instrucciones de sintaxis de SQL Server, se utilizan algunos tipos diferentes de


expresiones .
Tabla 2: Tipos de expresiones usadas en instrucciones de sintaxis
Uso

Definicin

expresin

Puede incluir constantes, literales, funciones, identificadores de


columna, variables o parmetros.

expresin lgica

Expresin que devuelve TRUE, FALSE o UNKNOWN.

expresin
constante

Expresin que siempre devuelve el mismo valor, como "5+3" o


"ABCDE".

expr_flotante

Cualquier expresin de coma flotante o que convierta implcitamente


a un valor flotante.

expr_entero

Cualquier expresin de entero o que convierta implcitamente a un


valor entero.

expr_numrica

Cualquier expresin numrica que devuelva un solo valor.

expr_caract

Expresin que devuelve un solo valor del tipo carcter.

expr_binaria

Expresin que devuelve un solo valor binario o varbinario .

Si necesita ayuda
Existe a su disposicin ayuda sobre el software en la forma de documentacin y
Servicio de Asistencia Tcnica de Sybase.
Cada instalacin tiene una persona designada que puede ponerse en contacto con el
Servicio de Asistencia Tcnica. Si no puede resolver un problema usando los manuales
o la ayuda en lnea, pida a la persona designada que contacte a dicho Servicio.

Chapter 1

Introduccin a la administracin del sistema


En este captulo se presentan los temas bsicos de la administracin del sistema SQL
Server. Incluye estas secciones:

Introduccin
Tablas del sistema
Procedimientos del sistema
Registro de los mensajes de error
El archivo de interfaces

Introduccin
La administracin de las bases de datos de SQL Server incluye las siguientes tareas:

Instalacin de SQL Server y Backup Server.


Concesin de roles y permisos a los usuarios de SQL Server.

Administracin y seguimiento del uso del espacio de disco, la memoria y las


conexiones.
Copias de seguridad y restauracin de las bases de datos.
Diagnstico de los problemas del sistema.
Configuracin de SQL Server para lograr el mejor rendimiento.

Adems, los Administradores del sistema pueden intervenir en ciertas labores de diseo
de las bases de datos, como por ejemplo la aplicacin de ciertas normas de integridad.
Esta funcin puede superponerse con el trabajo de los diseadores de las aplicaciones.
Aunque un Administrador del sistema se concentra en tareas que son independientes de
las aplicaciones que se ejecutan en SQL Server, es probable que tenga mejor perspectiva
global de todas las aplicaciones. Por esta razn, un Administrador del sistema puede
aconsejar a los diseadores de las aplicaciones acerca de los datos que ya existen en
SQL Server, realizar recomendaciones sobre la normalizacin de las definiciones de
datos en todas las aplicaciones, etctera.
Sin embargo, la distincin entre lo que es y lo que no es especfico de una aplicacin
puede ser confusa. Los propietarios de las bases de datos de usuario consultarn ciertas
secciones de este manual. De forma similar, los Administradores del sistema y los
Propietarios de bases de datos utilizarn la Gua del Usuario de T ransact-SQL (en
especial los captulos que describen la definicin de datos, los procedimientos
almacenados y los disparadores). Tanto los Administradores del sistema como los
diseadores de aplicaciones leern la Gua de Mejora de Rendimiento y Afinacin .
La Gua de Administracin del Sistema (este manual) describe aspectos del
almacenamiento fsico, copias de seguridad y restauracin, configuracin de SQL
Server, etc. Las funciones especficas de una aplicacin (definicin de datos y
mantenimiento de la integridad de referencia) se tratan en otros manuales. La
instalacin de SQL Server se explica en la gua de instalacin y configuracin de SQL
Server correspondiente a cada plataforma.
Los roles de Administrador del sistema, Propietario de la base de datos y otros usuarios
de SQL Server se tratan con mayor profundidad en la Gua de Administracin de
Seguridad .
Roles requeridos para las tareas de administracin del sistema
Muchos de los comandos y procedimientos tratados en este manual requieren el rol de
Administrador del sistema o de Oficial de seguridad del sistema. Estos roles especiales
de SQL Server se tratan en la Gua de Administracin de Seguridad .
Otras secciones de este manual son importantes para los Propietarios de bases de datos.
En una base de datos, el nombre de usuario de un Propietario de base de datos es "dbo".
Sin embargo, no es posible tener acceso como "dbo": el Propietario de una base de datos
se conecta con su nombre de login de SQL Server y se reconoce como "dbo" en SQL
Server slo mientras utiliza la base de datos.
Uso de isql para realizar tareas de administracin del sistema

Casi todas las tareas de administracin del sistema descritas en esta gua requieren que
el Administrador del sistema se conecte a SQL Server con la utilidad isql . Esta seccin
proporciona informacin bsica sobre el uso de isql . Para ms informacin sobre isql ,
consulte el manual de los programas de utilidad de SQL Server.
Inicio de isql
En la mayora de plataformas, para iniciar isql , escriba este comando en el indicador
del sistema operativo:
isql -U

username

-P

password

donde username y password son el nombre de usuario y contrasea del Administrador


del sistema. Esto inicia isql en modo de lnea de comando, que permite introducir
muchos de los ejemplos de Transact-SQL que se presentan en este manual.
Introduccin de instrucciones
Las instrucciones que introduzca en isql pueden abarcar varas lneas. isql no procesa
las instrucciones hasta que escriba "go" en una lnea aparte. Por ejemplo:
1>
2>
3>
4>

select *
from sysobjects
where type = "TR"
go

Los ejemplos que se presentan en este manual no incluyen el comando go en las


instrucciones. Si escribe estas instrucciones, debe introducir el comando go para ver el
ejemplo de salida.
Almacenamiento y reutilizacin de instrucciones
Este manual solicita con frecuencia que se guarden las instrucciones de Transact-SQL
utilizadas para crear o modificar bases de datos de usuarios y objetos de base de datos.
La forma ms sencilla de hacerlo es crear o copiar las instrucciones a un archivo con
formato ASCII. As, puede utilizar el archivo para suministrar instrucciones a isql si
necesita volver a crear las bases de datos u objetos de base de datos posteriormente.
La sintaxis para utilizar isql con un archivo de formato ASCII es:
isql -U

username

-P

password

-I

filename

donde filename es la ruta completa y el nombre del archivo que contiene instrucciones
de Transact-SQL. En UNIX y otras plataformas, utilice el smbolo menor que ( < ) para
redirigir el archivo.
Las instrucciones de Transact-SQL del archivo ASCII deben utilizar una sintaxis vlida
y el comando go .

Tablas del sistema

La base de datos master contiene tablas del sistema que controlan la informacin sobre
SQL Server de forma global. Adems, cada base de datos (incluida master ) contiene
tablas del sistema que controlan informacin especfica de esa base de datos.
Todas las tablas suministradas con SQL Server en la base de datos master (base de
datos de control de SQL Server) se consideran tablas del sistema, las cuales tambin
pueden denominarse diccionario de datos o catlogos del sistema. Adems, cada base
de datos de usuario se crea con un subconjunto de estas tablas del sistema.
Cuando se instala SQL Server, se crean una base de datos master y sus tablas. Las
tablas del sistema de una base de datos de usuario se crean automticamente cuando se
ejecuta el comando create database . Los nombres de todas las tablas del sistema
comienzan con "sys". En el Suplemento de Referencia de SQL Server , se incluye una
explicacin de las tablas del sistema y sus columnas. Algunas de estas tablas se
describen con ms detalle en captulos posteriores de este manual.
Consulta de las tablas del sistema
Es posible realizar consultas en las tablas del sistema igual que en cualquier otra tabla.
Por ejemplo, la instruccin siguiente devuelve los nombres de todos los disparadores de
la base de datos:
select name
from sysobjects
where type = "TR"

Adems, SQL Server suministra procedimientos almacenados (llamados


procedimientos del sistema ), muchos de los cuales proporcionan atajos para consultar
las tablas del sistema.
Estos procedimientos del sistema proporcionan informacin de las tablas del sistema:
Tabla 1-1: Procedimientos que consultan las tablas del sistema
sp_commonkey
sp_configure
sp_dboption
sp_estspace
sp_help
sp_helpconstraint
sp_helpdb
sp_helpdevice
sp_helpgroup

sp_helpindex
sp_helpjoins
sp_helpkey
sp_helplanguage
sp_helplog
sp_helpremotelogin
sp_helprotect
sp_helpsegment
sp_helpserver

sp_helpsort
sp_helptext
sp_helpthreshold
sp_helpuser
sp_lock
sp_monitor
sp_spaceused
sp_who

Para informacin completa sobre los procedimientos del sistema, consulte el Manual de
Referencia de SQL Server .
Claves de las tablas del sistema
Las claves primarias, externas y comunes de las tablas del sistema se definen en las
bases de datos master y model . Para obtener un informe sobre las claves definidas,

ejecute el procedimiento del sistema sp_helpkey . Para un informe sobre las columnas
de dos tablas del sistema que pueden ser susceptibles de combinacin, ejecute
sp_helpjoins . El SQL Server System Tables Diagram incluido con SQL Server muestra
las relaciones existentes entre las columnas de las tablas del sistema.
Advertencias sobre las tablas del sistema
Las tablas del sistema de SQL Server contienen informacin que es crucial para el
funcionamiento de las bases de datos. Los datos de estas tablas se insertan, actualizan y
eliminan mediante comandos de Transact-SQL como create y drop o mediante
procedimientos del sistema. En circunstancias normales, no es necesario realizar
modificaciones directas en los datos de las tablas del sistema.
Actualice las tablas del sistema slo cuando se lo indique el Servicio de Asistencia
Tcnica o una instruccin de la Gua de Solucin de Problemas de SQL Server o de este
manual.
Cuando actualice las tablas del sistema, debe ejecutar un comando sp_configure que
permita las actualizaciones de las tablas del sistema. Mientras este comando est
efectivo, cualquier usuario con un permiso adecuado puede modificar una tabla del
sistema. Estas son otras pautas para realizar cambios directos en las tablas del sistema:

Modifique las tablas del sistema slo dentro de una transaccin. Utilice b egin
transaction antes del comando de modificacin de datos.
Verifique que el comando haya afectado slo a las filas que deseaba modificar y
que los datos se modificaron correctamente.
Si el comando produjo el resultado deseado, utilice un comando commit
transaction . Si no fue as, ejecute rollback transaction .
No cree disparadores en las tablas del sistema.
Warning! Ningn usuario debe alterar ciertas tablas del sistema bajo ninguna
circunstancia. Algunas se construyen dinmicamente a partir de procesos del
sistema, contienen informacin codificada o muestran slo una parte de los
datos que contienen cuando se realiza una consulta. Las actualizaciones ad-hoc
imprudentes de ciertas tablas del sistema pueden imposibilitar la ejecucin de
SQL Server, y el acceso a los objetos de base de datos, as como desordenar los
permisos sobre los objetos o terminar una sesin de usuario.

Procedimientos del sistema


Los nombres de todos los procedimientos del sistema comienzan con "sp_", y estn
situados en la base de datos sybsystemprocs , pero muchos pueden ejecutarse desde
cualquier base de datos.
Excepto por los procedimientos del sistema que actualizan slo las tablas de master, si
se ejecuta un procedimiento del sistema sobre una base de datos que no sea
sybsystemprocs , funciona sobre las tablas del sistema de la base de datos desde la que
se ejecut. Por ejemplo, si el Propietario de la base de datos pubs2 ejecuta sp_adduser
desde pubs2 , el nuevo usuario se aade en pubs2..sysusers .

Los permisos sobre los procedimientos del sistema se tratan en la Gua de


Administracin de Seguridad y en el Manual de Referencia de SQL Server .
Uso de los procedimientos del sistema
Si el valor de un parmetro de un procedimiento del sistema contiene palabras
reservadas, signos de puntuacin o espacios en blanco incrustados, debe ir entre
comillas simples o dobles. Si el parmetro es el nombre de un objeto y se califica
mediante el nombre de su base de datos o de su propietario, todo el nombre debe ir entre
comillas.
Las sesiones pueden invocar procedimientos del sistema mediante modos encadenados
o no encadenados de transaccin. Sin embargo, los procedimientos del sistema que
modifican datos en las tablas del sistema de master no pueden ejecutarse desde dentro
de una transaccin, ya que esto podra comprometer su recuperacin. Los
procedimientos del sistema que crean tablas temporales no pueden ejecutarse desde
transacciones.
Si no hay ninguna transaccin activa cuando se ejecutan procedimientos del sistema,
SQL Server desactiva el modo no encadenado y define transaction isolation level 1
mientras dure el procedimiento. Antes de volver, el modo encadenado de la sesin y el
nivel de aislamiento se redefinen a sus valores originales. Para ms informacin sobre
los modos de transaccin y los niveles de aislamiento, consulte el Manual de Referencia
de SQL Server .
Todos los procedimientos del sistema indican un estado de retorno. Por ejemplo:
return status = 0

significa que el procedimiento se ejecut con xito.


Tablas de procedimientos del sistema
Los procedimientos del sistema utilizan varias tablas de procedimientos del sistema
de la base de datos master para convertir valores internos del sistema (por ejemplo, bits
de estado) a un formato legible para las personas. Una de ellas, spt_values , es empleada
por una amplia variedad de procedimientos del sistema, incluidos sp_configure ,
sp_dboption , sp_depends , sp_help , sp_helpdb , sp_helpdevice , sp_helpindex ,
sp_helpkey , sp_helprotect y sp_lock .
La tabla spt_values puede actualizarse slo mediante una versin mejorada; nunca debe
modificarse manualmente. Para ver cmo se usa, ejecute sp_helptext y observe el texto
para uno de los procedimientos del sistema a que hace referencia.
Las dems tablas de procedimientos del sistema incluyen spt_monitor y spt_committab
y las tablas necesarias para los procedimientos de catlogo. Adems, algunos de los
procedimientos del sistema crean y luego omiten tablas temporales. Por ejemplo,
sp_helpdb crea #spdbdesc , sp_helpdevice crea #spdevtab y sp_helpindex crea
#spindtab .

Creacin de procedimientos del sistema


Muchos de los procedimientos del sistema se explican en este manual en las secciones
pertinentes. El Manual de Referencia de SQL Server los enumera y describe todos.
Los administradores del sistema pueden escribir procedimientos ejecutables desde
cualquier base de datos. Basta crear un procedimiento almacenado en sybsystemprocs y
darle un nombre que comience con "sp_". El uid del procedimiento almacenado debe
ser 1, que es el uid del propietario de la base de datos.
Muchos de los procedimientos del sistema credos personalmente consultan tablas del
sistema. Tambin puede crear procedimientos que modifiquen las tablas del sistema,
aunque no es aconsejable.
Para crear un procedimiento almacenado que modifique tablas del sistema, un oficial de
seguridad del sistema debe activar antes el parmetro de configuracin allow updates
to system tables . Cualquier procedimiento almacenado que se cree mientras este
parmetro est "activado" podr actualizar las tablas del sistema siempre , aunque
allow updates to system tables est "desactivado". Para crear un procedimiento
almacenado que actualice tablas del sistema:
1. Utilice sp_configure para activar allow updates to system tables .
2. Cree el procedimiento almacenado con el comando create procedure .
3. Utilice sp_configure para desactivar allow updates to system tables .
Warning! Tenga un cuidado extremo cuando modifique tablas del sistema.
Pruebe siempre los procedimientos que modifican tablas del sistema con bases
de datos en desarrollo o de prueba, no con la base de datos de produccin.

Registro de los mensajes de error


SQL Server escribe informacin de arranque en un archivo local de diario de errores
cada vez que se inicia. El nombre y ubicacin del archivo de diario de errores se
determina mediante un parmetro de arranque ( -e en la mayora de plataformas). El
programa de instalacin define automticamente la ubicacin del diario de errores
cuando se configura un nuevo SQL Server. Consulte la gua de instalacin y
configuracin de SQL Server para conocer la ubicacin y nombre de archivo
predeterminados.
Muchos mensajes de error de SQL Server van slo al terminal del usuario. Sin embargo,
los mensajes de error fatales (niveles de seguridad 19 y superiores), los del kernel y los
mensajes informativos de SQL Server se registran en el diario de errores.
SQL Server mantiene abierto el archivo del diario de errores hasta que detenga el
proceso del servidor. Si necesita reducir el tamao del diario de errores eliminando
mensajes antiguos, detenga el proceso de SQL Server antes de hacerlo.
Note: En algunas plataformas, como Windows NT, SQL Server tambin registra
mensajes de error en el diario de eventos del sistema operativo. Para informacin

adicional sobre los diarios de errores, consulte la gua de instalacin y configuracin de


SQL Server.

El archivo de interfaces
SQL Server puede comunicarse con otros SQL Server, aplicaciones Open Server y
programas cliente en la red. Los clientes pueden hablar con uno o ms servidores, y los
servidores pueden comunicarse entre s mediante llamadas de procedimientos remotos.
Para que los productos interacten unos con otros, cada uno de ellos debe saber dnde
residen los otros en la red. Esta informacin se almacena en un archivo de interfaces
(que puede llamarse interfaces , interfac o sql.ini , dependiendo del sistema operativo).
El archivo de interfaces es como una agenda de direcciones. Contiene el nombre y
direccin de todos los servidores conocidos. Cuando se emplea un programa cliente
para conectarse a un servidor, el programa busca el nombre del servidor en el archivo de
interfaces y entonces se conecta al servidor usando la direccin, como se muestra en la
Figura 1-1.
Figure 1-1: Conexin a SQL Server
El nombre, ubicacin y contenido del archivo de interfaces vara de un sistema
operativo a otro. El formato de las direcciones de SQL Server en el archivo de interfaces
tambin vara de un protocolo de red a otro.
Al instalar SQL Server, el programa de instalacin crea un archivo de interfaces simple
que se puede utilizar para las conexiones locales a SQL Server mediante uno o ms
protocolos de red. Como administrador del sistema, es responsabilidad suya modificar
el archivo de interfaces y distribuirlo entre los usuarios para que puedan conectarse a
SQL Server por la red. Para obtener informacin sobre el archivo de interfaces
correspondiente a su plataforma, consulte la gua de instalacin y configuracin de SQL
Server.

Chapter 2

Bases de datos del sistema


En este captulo se describen las bases de datos del sistema que residen en todos los
sistemas SQL Server y las bases de datos opcionales suministradas por Sybase que
pueden instalarse. Este captulo incluye las secciones siguientes:

Introduccin a las bases de datos del sistema


Base de datos master
Base de datos model
Base de datos sybsystemprocs
Base de datos tempdb
Base de datos sybsecurity
Base de datos de ejemplo pubs2
Base de datos sybsyntax

Introduccin a las bases de datos del sistema

Al instalarse, SQL Server incluye estas bases de datos del sistema :

La base de datos master


La base de datos model
La base de datos de procedimientos del sistema, sybsystemprocs
La base de datos temporal, te mpdb

Optativamente, es posible instalar:

La base de datos de auditora, sybsecurity. Utilice el programa de instalacin


para instalarla.
El ejemplo de base de datos, pubs2 . Utilice isql y el guin de instalacin de
pubs2 (llamado installpubs2 en la mayora de plataformas) para instalarla.
La base de datos de sintaxis, sybsyntax . Utilice isql y varios guiones de
instalacin para instalarla.

Las bases de datos master , model y temporal residen en el dispositivo indicado durante
la instalacin, que se conoce como d_master . La base de datos master est contenida
por completo en el dispositivo master y no puede expandirse en ningn otro. Las dems
bases de datos y objetos de usuario deben crearse en otros dispositivos.
Warning! No almacene bases de datos de usuario en el dispositivo master, pues
dificultara la recuperacin de las bases de datos del sistema en caso de que resultaran
daadas. Adems, es posible que no pueda recuperar bases de datos de usuario
guardadas en d_master usando las instrucciones del Captulo 20, "Copias de seguridad y
restauracin de las bases de datos del sistema".
La base de datos sybsecurity debe instalarse en su propio dispositivo y segmento. Esta
recomendacin se explica en la gua de instalacin y configuracin de SQL Server .
sybsystemprocs puede instalarse en un dispositivo de su eleccin . Tal vez desee
modificar los guiones de instalacin de pubs2 y sybsyntax para que compartan el
dispositivo creado para sybsystemprocs.
Note: El guin installpubs2 no especifica un dispositivo en su instruccin create
database , y por lo tanto se crea en el dispositivo predeterminado. En la instalacin,
master es el dispositivo predeterminado. Para cambiarlo, puede editar el guin o seguir
las instrucciones incluidas en este manual para aadir ms dispositivos de base de datos
y designar los predeterminados.

Base de datos master


La base de datos master controla el funcionamiento de SQL Server en su conjunto y
almacena informacin sobre todas las bases de datos de usuario, y sus dispositivos
asociados. Hace el seguimiento de:

Cuentas de usuarios (en syslogins )


Cuentas de usuarios remotos (en sysremotelogins )
Servidores remotos con los que puede interactuar este servidor (en sysservers )
Procesos en curso (en sysprocesses )

Variables de entorno configurables (en sysconfigures )


Mensajes de error del sistema (en sysmessages )
Bases de datos en SQL Server (en sysdatabases )
Espacio asignado a cada base de datos (en sysusages )
Cintas y discos montados en el sistema (en sysdevices )
Bloqueos activos (en syslocks )
Juegos de caracteres (en syscharsets ) e idiomas (en syslanguages )
Usuarios que tienen roles en todo el servidor (en sysloginroles )
Roles del servidor (en syssrvroles )
Mquinas SQL Server que estn en lnea (en sysengines )

Dado que master guarda informacin sobre los dispositivos y bases de datos de usuario,
es necesario estar en la base de datos master para poder ejecutar create database , alter
database , disk init , disk refit , disk reinit y los comandos de duplicacin de disco.
Control de creacin de objetos en master
Al instalar SQL Server por primera vez, slo los administradores del sistema pueden
crear objetos en la base de datos master , porque se convierten implcitamente en los
"dbo" de cualquier base de datos que usen. Los objetos que se creen en el dispositivo de
base de datos master deben usarse para la administracin del sistema en conjunto. Los
permisos de master deben permanecer definidos para que la mayora de usuarios no
puedan crear objetos en l.
Warning! Nunca site objetos de usuario en master . Almacenarlos ah puede provocar
que el diario de transacciones se llene con rapidez. Si el diario agota el espacio por
completo, no podr utilizar comandos dump transaction para liberar espacio en master
.
Otra forma de dificultar que los usuarios creen objetos en master es cambiar la base de
datos predeterminada de los usuarios (a la que se conectan cuando tienen acceso) con el
procedimiento del sistema sp_modifylogin , que se describe en la Gua de
Administracin de Seguridad .
Si crea sus propios procedimientos del sistema, hgalo en la base de datos
sybsystemprocs antes que en master .
Proteccin de SQL Server mediante la copia de seguridad de master
Para prevenir las consecuencias de un fallo de hardware o software en SQL Server, las
dos tareas principales de mantenimiento son:

Realizar copias de seguridad frecuentes de la base de datos master y de todas las


bases de datos de usuario.
Note: Realice una copia de seguridad de la base de datos master con dump
database siempre que cree, altere u omita cualquier dispositivo, base de datos u
objeto de base de datos, y siempre que ejecute un procedimiento almacenado
que cambie la base de datos master . Consulte el Captulo 20, "Copias de
seguridad y restauracin de las bases de datos del sistema".

Mantener una copia (preferiblemente fuera de lnea) de estas tablas del sistema:
sysusages, sysdatabases, sysdevices , sysloginroles y syslogins . Es conveniente
crear un guin para ejecutar estos comandos:
select
select
select
select
select

*
*
*
*
*

from
from
from
from
from

sysusages order by vstart


sysdatabases
sysdevices
sysloginroles
syslogins

Si dispone de copias de estas tablas y se produce un fallo del disco duro u otro
problema que inutilice la base de datos, puede usar los procedimientos de
recuperacin que se describen en el Captulo 20, "Copias de seguridad y
restauracin de las bases de datos del sistema". Si no tiene copias actualizadas,
ser mucho ms difcil recuperar SQL Server cuando resulte daada la base de
datos master .

Base de datos model


SQL Server incluye la base de datos model , que sirve de plantilla, o prototipo, de las
nuevas bases de datos de usuario. Cada vez que un usuario introduce el comando create
database , SQL Server realiza una copia de la base de datos model y extiende la copia
al tamao especificado por el comando create database .
Note: Una base de datos nueva no puede ser ms pequea que la model .
model contiene las tablas del sistema necesarias para cada base de datos de usuario.
Puede modificar model para personalizar la estructura de las nuevas bases de datos
creadas. Todo lo que haga en model se reflejar en cada base de datos nueva. Algunos
de los cambios que los administradores suelen efectuar son:

Aadir reglas, valores predeterminados o tipos de datos definidos por el usuario.


Aadir los usuarios que deben tener acceso a todas las bases de datos de SQL
Server.
Conceder privilegios predeterminados, en especial para las cuentas huspedes.
Definir opciones de base de datos, como select into/bulkcopy . Los valores
(originalmente "desactivados" en model ) se reflejarn en todas las bases de
datos nuevas. El Captulo 15, "Definicin de opciones de base de datos",
describe las opciones de base de datos.

Normalmente, la mayora de los usuarios no tienen permiso para modificar la base de


datos model . Tampoco tiene sentido conceder permiso de lectura, puesto que SQL
Server copia todo su contenido a cada nueva base de datos de usuario.

El tamao de model no puede ser mayor que el de tempdb . SQL Server muestra un
mensaje de error si se intenta aumentar el tamao de model sin dar a tempdb ese mismo
tamao como mnimo.
Note: Conserve una copia de seguridad de la base de datos model y efecte una nueva
copia con dump database siempre que la modifique. En caso de fallo del disco,
restaure model tal como hara con una base de datos de usuario.

Base de datos sybsystemprocs


Los procedimientos del sistema de Sybase se almacenan en la base de datos
sybsystemprocs. Cuando un usuario ejecuta, desde cualquier base de datos, un
procedimiento almacenado cuyo nombre comienza con "sp_", SQL Server lo busca
primero en la base de datos actual del usuario. Si no est ah, SQL Server lo busca en
sybsystemprocs . Si tampoco est, SQL Server busca el procedimiento en master.
Si el procedimiento modifica tablas del sistema (por ejemplo, sp_adduser modifica la
tabla sysusers), los cambios se realizan en la base de datos desde la que se ejecut el
procedimiento.
Si desea cambiar los permisos predeterminados sobre los procedimientos del sistema,
debe hacerlo en sybsystemprocs.
Note: Si modifica sybsystemprocs o aade procedimientos almacenados propios a la
base de datos, realice copias de seguridad de la base de datos con regularidad .

Base de datos tempdb


SQL Server tiene una base de datos temporal , tempdb , que proporciona un rea de
almacenamiento para tablas temporales y otras necesidades temporales (por ejemplo,
resultados intermedios de group by y order by ). El espacio de tempdb se comparte
entre todos los usuarios de todas las bases de datos del servidor.
El tamao predeterminado de tempdb es 2MB. Ciertas actividades pueden requerir el
incremento de su tamao. Las ms comunes son:

Tablas temporales grandes.


Mucha actividad en tablas temporales, que llena los diarios tempdb .
Ordenaciones grandes o muchas ordenaciones simultneas. Las subconsultas y
agregados con group by tambin causan cierta actividad en tempdb .

Se puede aumentar el tamao de tempdb con el comando alter database . tempdb se


crea inicialmente en el dispositivo master. Puede aadirse espacio del master o de
cualquier otro dispositivo de base de datos.
Creacin de tablas temporales
No son necesarios permisos especiales para utilizar tempdb , es decir, para crear tablas
temporales o para ejecutar comandos que precisen espacio de almacenamiento en la
base de datos temporal.

Para crear tablas temporales anteponga el smbolo # al nombre de la tabla en una


instruccin create table o especifique el prefijo "tempdb..".
A una tabla temporal creada con el smbolo # slo puede tener acceso la sesin actual de
SQL Server: los usuarios de otras sesiones no pueden tener acceso a ella. Estas tablas
temporales no compartibles se destruyen al final de la sesin actual. Los 13 primeros
bytes del nombre de la tabla, incluido el smbolo #, deben ser nicos. SQL Server
asigna a los nombres de dichas tablas un sufijo numrico de 17 bytes. (El sufijo se ve al
consultar tempdb..sysobjects .)
Las tablas temporales creadas con el prefijo "tempdb.." se almacenan en tempdb y
pueden compartirse entre varias sesiones de SQL Server. SQL Server no cambia los
nombres de las tablas temporales creadas de esta forma. La tabla existe hasta que se
reinicie SQL Server o hasta que su propietario la omita utilizando drop table .
Los procedimientos del sistema (por ejemplo, sp_help ) trabajan sobre tablas
temporales, pero slo si se usan desde tempdb .
Si un procedimiento almacenado crea tablas temporales, stas se omiten cuando el
procedimiento sale. Las tablas temporales tambin pueden omitirse explcitamente antes
de que termine una sesin.
Cada vez que se reinicia, SQL Server copia model a tempdb, lo cual borra la base de
datos. Las tablas temporales no pueden recuperarse.

Base de datos sybsecurity


sybsecurity contiene el sistema auditor de SQL Server y consta de:

La tabla sysaudits , que contiene la lista de auditora. Todos los registros de


auditora se escriben en sysaudits.
La tabla sysauditoptions , que contiene filas que describen las opciones globales
de auditora.
Las dems tablas predeterminadas del sistema que se derivan de model .

El sistema de auditora se trata con ms detalle en la Gua de Administracin de


Seguridad .

Base de datos de ejemplo pubs2


Instalar la base de datos de ejemplo ( pubs2 ) es opcional. Diseada como utilidad de
aprendizaje, pubs2 es la base de la mayora de los ejemplos presentados en la
documentacin de SQL Server. Para informacin sobre su instalacin, consulte la gua
de instalacin y configuracin de SQL Server.
Mantenimiento de la base de datos de ejemplo
La base de datos de ejemplo incluye un mecanismo de usuario invitado que permite el
acceso a la base de datos a cualquier SQL Server autorizado. Este usuario tiene amplios
privilegios en pubs2 , incluyendo permisos para seleccionar, insertar, actualizar y

eliminar tablas de usuario. Para ms informacin sobre el mecanismo de usuario


invitado y una lista de permisos para el usuario de p ubs2 , consulte la Gua de
Administracin de Seguridad .
La base de datos pubs2 requiere por lo menos 2MB. Si fuera posible, d una copia
limpia de pubs2 a cada usuario nuevo para que los cambios de otros usuarios no lo
confundan. Si desea situar pubs2 en un dispositivo especfico de base de datos, edite el
guin de instalacin antes de instalarla.
Si hay problemas de espacio, indique a los usuarios que utilicen el comando begin
transaction antes de actualizar la base de datos de ejemplo. Cuando el usuario haya
terminado de actualizarla, podr ejecutar rollback transaction para anular los cambios.
Datos image de pubs2
SQL Server incluye un guin para instalar datos image en la base de datos pubs2 . Los
datos image consisten de seis figuras, dos en cada formato de archivo por trama PICT,
TIF y Sun. Sybase no incluye herramientas para mostrar datos image . Use las utilidades
grficas de pantalla adecuadas para mostrar las imgenes despus de extraerlas de la
base de datos.
Consulte la gua de instalacin y configuracin de SQL Server para obtener informacin
sobre instalacin de los datos image en pubs2 .

Base de datos sybsyntax


La base de datos sybsyntax contiene ayuda sobre la sintaxis de los comandos de
Transact-SQL, los procedimientos del sistema de Sybase, las utilidades de SQL Server
y las rutinas de Open Client DB-Library(TM). Los usuarios pueden recuperar esa
informacin mediante el procedimiento del sistema sp_syntax . Por ejemplo, para
aprender la sintaxis del comando select de Transact-SQL, escriba:
sp_syntax "select"

SQL Server incluye dos guiones para crear la base de datos sybsyntax . El primer guin,
que suele llamarse ins_syn_sql , instala la ayuda para la sintaxis de los comandos de
Transact-SQL, los procedimientos del sistema Sybase y las utilidades de SQL Server. El
segundo guin, que suele llamarse ins_syn_dblib , instala la ayuda para la sintaxis de las
rutinas de Open Client DB-Library. Pueden instalarse uno o ambos guiones.
Para obtener instrucciones sobre cmo instalar sybsyntax , consulte la gua de
instalacin y configuracin de SQL Server. Para ms informacin sobre sp_syntax ,
consulte el Manual de Referencia de SQL Server .

Chapter 3

Nociones de administracin del sistema para principiantes


En este captulo se esbozan algunas de las tareas bsicas que los administradores del
sistema realizan durante la vida de un SQL Server. Incluye las secciones siguientes:

Uso de los servidores de "prueba"


Instalacin de productos Sybase
Asignacin de recursos fsicos
Copia de seguridad y recuperacin
Mantenimiento continuo y solucin de problemas
Mantenimiento de registros
Obtencin de ayuda adicional

Este captulo est destinado principalmente a:

Presentar temas importantes a los nuevos administradores del sistema.


Ayudar a los administradores del sistema a encontrar informacin en la
documentacin de Sybase.

Este captulo tambin puede ser til a los administradores experimentados para
organizar sus actividades de mantenimiento.
Ms informacin sobre las tareas presentadas en este captulo aparece en otros manuales
de SQL Server o en otra documentacin de Sybase; siempre que corresponda, se
incluyen referencias a libros o captulos individuales.

Uso de los servidores de "prueba"


Tanto para un administrador del sistema nuevo o experimentado, siempre es aconsejable
instalar y utilizar un SQL Server de "prueba" y/o "desarrollo", con intenciones de
quitarlo antes de crear el servidor de "produccin". En general, un servidor de prueba
facilita la planificacin y verificacin de distintas configuraciones y reduce la tensin
inherente a solucionar errores. Es mucho ms fcil aprender a instalar y administrar las
nuevas caractersticas cuando no hay riesgo de tener que reiniciar un servidor de
produccin o volver a crear una base de datos de produccin.
Si decide utilizar un servidor de prueba, siempre es mejor hacerlo desde el momento de
instalar o actualizar SQL Server, pasando por el proceso de configurar el servidor. Es en
esos pasos donde deben tomarse algunas de las decisiones ms importantes sobre el
sistema de produccin final. Las secciones siguientes describen las formas en que el uso
de un servidor de prueba puede ayudar a los administradores del sistema.
Comprensin de nuevos procedimientos y funciones
Un servidor de prueba permite practicar procedimientos bsicos de administracin antes
de realizarlos en un entorno de produccin. Si usted es un administrador nuevo de SQL
Server, muchos de los procedimientos tratados en este libro pueden serle desconocidos,
y tal vez necesite efectuar varios intentos antes de completar una tarea con xito. Sin
embargo, incluso los administradores experimentados se beneficiarn de practicar las
tcnicas introducidas por las nuevas caractersticas de SQL Server, versin 11.0.
Planificacin de recursos
Al configurar un servidor nuevo, los administradores suelen descubrir que necesitan
discos, memoria o hardware adicionales para soportar sus objetivos de rendimiento y

capacidad. La utilizacin de un servidor de prueba ayuda a planificar los requisitos


finales de recursos para su sistema y a descubrir las deficiencias que podra no haber
previsto.
En particular, los recursos de disco pueden tener un efecto decisivo sobre el diseo final
del sistema de produccin. Por ejemplo, usted puede decidir que cierta base de datos
requiere una recuperacin ininterrumpida en caso de un fallo de los medios. Esto
requerira configurar uno o ms dispositivos adicionales para duplicar la base de datos
crucial. Descubrir la necesidad de estos recursos en un servidor de prueba permite
cambiar la disposicin fsica de las bases de datos y tablas sin afectar a los usuarios de
las mismas.
Tambin puede usar un servidor de prueba como entorno "seguro" para evaluar SQL
Server y las aplicaciones empleando diferentes configuraciones de hardware. As podr
determinar la configuracin ptima de los recursos fsicos a nivel de SQL Server y del
sistema operativo, antes de habilitar todo el sistema para el uso general.
Consecucin de los objetivos de rendimiento
Aunque en ocasiones se puede mejorar el rendimiento de los servidores de produccin
"sobre la marcha", muchos objetivos de rendimiento pueden cumplirse slo
planificando cuidadosamente el diseo y configuracin de las bases de datos. Por
ejemplo, usted puede descubrir que el rendimiento de insercin y E/S de cierta tabla es
engorroso. En este caso, la mejor lnea de accin puede ser volver a crear la tabla en un
segmento dedicado y dividir la tabla en partes. Los cambios de esta naturaleza causan
trastornos en un sistema de produccin, e incluso la modificacin de un parmetro de
configuracin puede requerir la reinicializacin de SQL Server.

Instalacin de productos Sybase


Instalar SQL Server y otros productos Sybase suele ser la tarea del administrador del
sistema. Si la instalacin es responsabilidad suya, utilice las siguientes indicaciones en
el proceso.
Comprobacin de la compatibilidad de los productos
Antes de instalar productos nuevos o versiones mejoradas de productos existentes, lea
siempre el R elease Bulletin de los productos para enterarse de los aspectos relacionados
con la compatibilidad que podran afectar a su sistema. Pueden producirse problemas de
compatibilidad entre hardware y software y entre el mismo software de versiones
diferentes. La lectura previa del Release Bulletin puede ahorrarle el tiempo y trabajo de
solucionar problemas de compatibilidad conocidos.
Lea adems las listas de problemas conocidos que se instalan con SQL Server. Para ms
informacin sobre esas listas, consulte "Aprendizaje de problemas conocidos".
Instalacin de SQL Server o de una versin mejorada
Lea toda la gua de instalacin y configuracin de SQL Server antes de comenzar una
instalacin o actualizar una versin. Ser necesario planificar partes de la instalacin y

configurar el sistema operativo antes de instalar SQL Server. Tambin es til consultar
al administrador local de su sistema operativo para definir los requisitos del sistema
operativo para SQL Server. Dichos requisitos pueden incluir la configuracin de
memoria, dispositivos en bruto, E/S asincrnica y otras caractersticas, dependiendo de
la plataforma empleada. Muchas de estas tareas no pueden llevarse a cabo una vez
iniciada la instalacin.
Si est instalando la versin mejorada de un servidor, efecte una copia de seguridad de
todos los datos (incluyendo la base de datos master , las bases de datos de usuario,
disparadores y procedimientos del sistema) fuera de lnea antes de comenzar. Despus
de instalada, cree inmediatamente otra copia de seguridad completa de los datos, en
especial si hay incompatibilidades entre los archivos de volcado antiguos y las versiones
ms modernas.
Instalacin de software de red adicional
Generalmente, SQL Server incluye soporte para los protocolos de red que son
habituales en cada plataforma de hardware. Si su red soporta protocolos adicionales,
instale el soporte correspondiente. Como siempre, lea primero el Release Bulletin para
comprobar que el software es compatible con esta versin de SQL Server.
Configuracin y prueba de las conexiones cliente
Una conexin cliente satisfactoria depende de la coordinacin entre SQL Server, el
software cliente y los productos de red. Si utiliza uno de los protocolos de red instalados
con SQL Server, consulte la gua de instalacin y configuracin de SQL Server para
obtener informacin sobre la verificacin de las conexiones de red. Si emplea otro
protocolo de red, siga las instrucciones incluidas con el producto. Tambin puede usar
utilidades "ping", incluidas con los productos de conectividad de Sybase, para probar las
conexiones cliente con SQL Server.
Una vez configuradas satisfactoriamente las conexiones de red, realice una copia de
seguridad del archivo de interfaces master y utilcelo para todas las conexiones cliente.
"El archivo de interfaces" proporciona una descripcin general de dicho archivo. Para
obtener ms detalles sobre el nombre y contenido del archivo de interfaces, consulte la
gua de instalacin y configuracin de SQL Server.

Asignacin de recursos fsicos


La asignacin de recursos fsicos es el proceso de dar la memoria, espacio en disco y
capacidad de la CPU a SQL Server necesarios para alcanzar los objetivos de
rendimiento y recuperacin. Todo administrador de sistema debe tomar decisiones en
cuanto al uso de los recursos cuando instala un nuevo servidor. Tambin deber cambiar
la asignacin de recursos de SQL Server si posteriormente realiza una mejora de su
plataforma de hardware aadiendo nueva memoria, controladores de disco o CPU, o
cuando cambie el diseo del sistema de base de datos. O bien, la evaluacin previa de
SQL Server y las aplicaciones puede ayudarle a identificar deficiencias en los recursos
de hardware que crean atascamientos en el rendimiento.

Consulte el Captulo 5, "Introduccin a los temas de recursos de disco", de este manual


para conocer los tipos de recursos de disco que SQL Server requiere. Consulte tambin
el Captulo 8, "Configuracin de la memoria", y el Captulo 10, "Administracin de
servidores multiprocesadores", para obtener informacin sobre la memoria y los
recursos de la CPU.
Las secciones siguientes proporcionan indicaciones prcticas para determinar los
requisitos de recursos fsicos.
Servidores dedicados o compartidos
El primer paso en la planificacin de los recursos de SQL Server es comprender qu
recursos necesitan las o tras aplicaciones que se ejecutan en la misma mquina.
Habitualmente, los administradores de sistema "dedican" una mquina exclusivamente
al uso de SQL Server, es decir, slo el sistema operativo y el software de red consumen
recursos que, de lo contrario, deberan estar reservados a SQL Server. En un sistema
"compartido", otras aplicaciones, como programas clientes de SQL Server o servidores
de impresin, se ejecutan en la misma mquina que SQL Server. Puede ser difcil
calcular los recursos disponibles para SQL Server en un sistema compartido, ya que los
tipos de programas y su forma de uso pueden cambiar a lo largo del tiempo.
En cualquier caso, es responsabilidad del administrador del sistema tener en cuenta los
recursos empleados por los sistemas operativos, programas clientes, sistemas de
ventanas y otros, cuando configura recursos para SQL Server. Configure SQL Server
para que emplee slo los recursos disponibles. De lo contrario, el servidor puede
funcionar con un rendimiento mediocre o simplemente no iniciarse. El Captulo 8,
"Configuracin de la memoria", describe cmo estimar la memoria que utiliza SQL
Server. Consulte tambin el Captulo 5, "Introduccin a los temas de recursos de disco",
y el Captulo 10, "Administracin de servidores multiprocesadores", para comprender
cmo el servidor utiliza los recursos de disco y de CPU.
Aplicaciones de apoyo a decisiones y OLTP
Determine, con antelacin, la combinacin requerida entre la cantidad de trabajo del
proceso de transacciones en lnea (OLTP) y el trabajo de apoyo a decisiones que se
espera que realice SQL Server. SQL Server contiene muchas caractersticas que
optimizan el rendimiento para OLTP, apoyo de decisiones y entornos mixtos. Sin
embargo, usted debe determinar los requisitos de las aplicaciones de su sistema para
poder hacer un uso ptimo de esas caractersticas.
Para sistemas mixtos de trabajo, elabore una lista con las tablas individuales que cree
que sern ms utilizadas para cada tipo de aplicacin. Esta lista puede ser til al
configurar cachs con nombre o crear particiones de datos para lograr el mximo
rendimiento de las aplicaciones.
Planificacin anticipada del uso de recursos
Es de extrema importancia comprender y planificar el uso de recursos con antelacin.
En el caso de los recursos de disco, por ejemplo, una vez que inicialice y asigne un
dispositivo a SQL Server, ese dispositivo no puede usarse para ningn otro propsito

(aunque SQL Server nunca lo llene con datos). De forma similar, SQL Server se reserva
automticamente la memoria para la que est configurado, y ninguna otra aplicacin
puede utilizar esa memoria.
Estas sugerencias pueden ayudarle a planificar el uso de recursos:

A efectos de recuperacin, siempre es aconsejable situar el diario de


transacciones de una base de datos en un dispositivo fsico distinto a donde se
encuentran sus datos. Consulte el Captulo 14, "Creacin de bases de datos de
usuarios".
Tenga presente la posibilidad de duplicar los dispositivos que contienen datos de
mxima importancia. Consulte el Captulo 7, "Duplicacin de dispositivos de
base de datos". Tambin puede usar arreglos y la duplicacin de discos para los
datos de SQL Server si el sistema operativo lo permite.
Si trabaja con un SQL Server de prueba, puede inicializar los dispositivos de
base de datos como archivos del sistema operativo para su comodidad, y no
como dispositivos en bruto. Esto le ayuda a determinar tamaos exactos de los
dispositivos en bruto que crear para el servidor de produccin. Para obtener
informacin sobre la configuracin de archivos del sistema operativo o de
dispositivos en bruto, consulte la gua de instalacin y configuracin de SQL
Server.
Tenga en cuenta que la modificacin de las opciones de configuracin puede
afectar a la forma en que SQL Server consume los recursos fsicos. Esto es
especialmente vlido para los recursos de memoria. Consulte el Captulo 11,
"Definicin de los parmetros de configuracin", para ms informacin sobre
cunta memoria utilizan los parmetros individuales.

Configuracin del sistema operativo


Muchas veces, es necesario configurar recursos fsicos a nivel del sistema operativo
antes de que puedan estar disponibles para SQL Server. Tras determinar qu recursos
estn disponibles y cules son necesarios, configrelos a nivel del sistema operativo:

Inicialice los dispositivos en bruto con los tamaos que requiera SQL Server. Si
inicializa un dispositivo en bruto para SQL Server, no podr utilizarse para
ningn otro propsito (por ejemplo, para contener archivos del sistema
operativo). Solicite asistencia a su administrador de UNIX para inicializar y
configurar dispositivos en bruto con los tamaos requeridos.
Configure el nmero de conexiones de red. El parmetro number of user
connections controla el nmero mximo de conexiones con SQL Server. Sin
embargo, debe asegurarse de que la mquina en que se ejecute SQL Server
soporta en realidad tantas conexiones. Para ello, normalmente se define una
variable en un archivo de arranque del sistema operativo. Consulte la
documentacin de su sistema operativo.
Puede ser necesario configurar otros parmetros para su sistema operativo y las
aplicaciones que emplee. La gua de instalacin y configuracin de SQL Server
describe los requisitos del sistema operativo para SQL Server. Lea tambin la
documentacin del software cliente o consulte a sus tcnicos para comprender
los requisitos del sistema operativo de sus aplicaciones.

Copia de seguridad y recuperacin


La realizacin de copias peridicas de seguridad de las bases de datos es un factor clave
para mantener la integridad del sistema de base de datos. Aunque SQL Server se
recupera automticamente de los fallos del sistema (por ejemplo, cortes de corriente) o
del servidor, slo el administrador puede resolver la prdida de datos provocada por
un fallo del disco. Siga las pautas bsicas que se indican a continuacin para realizar
copias de seguridad del sistema.
Los captulos 17 a 20 de este manual describen cmo desarrollar e implementar un plan
de copia de seguridad y recuperacin.
Mantenimiento de copias de seguridad actualizadas de master
La copia de seguridad de la base de datos master es la piedra angular de cualquier plan
de copia de seguridad y recuperacin. La base de datos master contiene detalles sobre la
estructura de todo el sistema de bases de datos. La misma controla las bases de datos de
SQL Server, los dispositivos y los fragmentos de dispositivos que constituyen esas
bases de datos. Dado que SQL Server necesita esa informacin durante una
recuperacin, es crucial mantener una copia de seguridad actualizada de la base de datos
master siempre.
Para garantizar que la copia de seguridad de master est siempre actualizada, realcela
despus de cada comando que afecte a los discos, almacenamiento, bases de datos o
segmentos. Es decir, realice una copia de seguridad de master despus de cualquiera de
los procedimientos siguientes:

Crear o eliminar bases de datos.


Inicializar nuevos dispositivos de bases de datos.
Aadir nuevos dispositivos de volcado.
Utilizar cualquier comando de duplicacin de dispositivos.
Crear u omitir procedimientos almacenados del sistema, si estn en master.
Crear, omitir o modificar un segmento.
Aadir nuevos logins de SQL Server.

Para realizar una copia de seguridad de master en un dispositivo de cinta, inicie isql e
introduzca el comando:
dump database master to "

tape_device

"

donde tape_device es el nombre del dispositivo de cinta (por ejemplo, /dev/rmt0 ).


Mantenimiento de copias fuera de lnea de las tablas del sistema
Adems de realizar copias de seguridad de master regularmente, mantenga copias fuera
de lnea del contenido de las siguientes tablas del sistema: sysdatabases , sysdevices ,
sysusages , sysloginroles y syslogins . Para ello, emplee la utilidad defncopy , que se
describe en el manual de los programas de utilidad de SQL Server, y guarde una copia
impresa del contenido de cada tabla del sistema. Cree dicha copia imprimiendo la salida
de las consultas siguientes:

select
select
select
select
select

*
*
*
*
*

from
from
from
from
from

sysusages order by vstart


sysdatabases
sysdevices
sysloginroles
syslogins

Si dispone de esas copias y se produce un fallo del disco duro u otro problema que
inutilice la base de datos, podr emplear los procedimientos de recuperacin descritos
en el Captulo 20, "Copias de seguridad y restauracin de las bases de datos del
sistema".
Tambin mantenga copias de todos los guiones del lenguaje de definicin de datos
(DDL) para los objetos de los usuarios, como se describe en "Mantenimiento de
registros".
Automatizacin de las copias de seguridad
La creacin de un procedimiento automatizado de copias de seguridad elimina dudas
sobre la realizacin de dichas copias y agiliza y simplifica la ejecucin del
procedimiento. La automatizacin de las copias de seguridad puede ser tan simple como
usar un guin o una utilidad del sistema operativo (por ejemplo, la utilidad cron de
UNIX) para ejecutar los comandos de copia de seguridad necesarios. O bien, se puede
automatizar el procedimiento an ms mediante umbrales, que se explican en el
Captulo 21, "Administracin de espacio libre con umbrales".
Aunque los comandos necesarios para crear un guin automatizado varan en funcin
del sistema operativo que se emplee, todos los guiones deben llevar a cabo los mismos
pasos bsicos:
1. Iniciar isql y volcar el diario de transacciones a un rea de almacenamiento (por
ejemplo, un archivo temporal).
2. Cambiar el nombre del archivo de volcado por uno que contenga la fecha y hora
del volcado y el nombre de la base de datos.
3. Anotar la nueva copia de seguridad en un archivo de historial.
4. Registrar los errores que se produzcan durante el volcado en un archivo de
errores aparte.
5. Enviar correo automticamente al administrador del sistema informndole de las
situaciones de error.
Un guin que efecte estas tareas simplifica el proceso de realizar copias de seguridad
incrementales. Peridicamente, tambin se debe verificar la consistencia de la base de
datos mediante dbcc , volcar toda la base de datos a cinta y purgar los archivos de diario
incrementales.
Verificacin de la consistencia de los datos antes de hacer una copia de seguridad
de la base de datos
Tener copias de seguridad de una base de datos puede no ser suficiente es necesario
disponer de copias de seguridad coherentes y exactas (en especial de master ). Si realiza
una copia de una base de datos con errores internos, tendr los mismos errores cuando la
restaure.

Utilizando los comandos dbcc , podr comprobar la presencia de errores en una base de
datos antes de realizar su copia de seguridad. Los comandos dbcc verifican que el
contenido de una base de datos o de un objeto de base de datos "tenga sentido" con SQL
Server. Utilice siempre los comandos dbcc para verificar la integridad de una base de
datos antes de volcarla. Si dbcc detecta errores, corrjalos antes de proceder con el
volcado.
Con el tiempo, podr pensar en ejecutar dbcc como seguro para sus bases de datos. Si
encontr pocos o ningn error al ejecutar dbcc en el pasado, puede decidir que el riesgo
de corrupcin de la base de datos es pequeo y ejecutar dbcc slo ocasionalmente. O, si
las consecuencias de perder datos son graves, contine ejecutando comandos dbcc cada
vez que realice una copia de seguridad.
Note: Por razones de rendimiento, muchos administradores prefieren ejecutar las
verificaciones dbcc fuera de las horas pico o en servidores aparte.
Consulte el Captulo 17, "Verificacin de la consistencia de las bases de datos", para
obtener informacin sobre el comando dbcc .
Control del tamao del diario
Si el diario de transacciones est casi lleno, puede resultar imposible usar
procedimientos estndar para volcar las transacciones y recuperar espacio. El
administrador del sistema debe controlar el tamao del diario y realizar volcados
peridicos del diario de transacciones (adems de los volcados habituales de las bases
de datos) para garantizar que nunca se produzca esa situacin. Utilice el mtodo que
prefiera para definir un procedimiento almacenado de umbral que le notifique
automticamente (o que vuelque el diario automticamente) cuando el diario llega a
cierta capacidad. Consulte el Captulo 21, "Administracin de espacio libre con
umbrales", para obtener informacin sobre el uso de los procedimientos de umbral.
Tambin es aconsejable volcar el diario de transacciones inmediatamente antes de un
volcado completo de la base de datos para abreviar el tiempo necesario de volcado y
carga de la misma.
Tambin puede controlarse el espacio utilizado en el segmento de diario manualmente,
por medio del procedimiento almacenado sp_helpsegment , como se describe en
"Obtencin de informacin sobre los segmentos".

Mantenimiento continuo y solucin de problemas


Adems de realizar copias de seguridad programadas peridicamente, el administrador
del sistema realiza las siguientes actividades de mantenimiento durante la vida de un
servidor.
Inicio y detencin de SQL Server
Muchos administradores automatizan el procedimiento para iniciar SQL Server de
forma que coincida con el arranque de la mquina servidora. Para hacerlo as, edite los
guiones de inicio del sistema operativo o srvase de otros procedimientos del sistema

operativo. Para determinar cmo iniciar y detener SQL Server, consulte la gua de
instalacin y configuracin de SQL Server.
Visualizacin y poda del diario de errores
El administrador del sistema debe examinar el contenido del diario de errores de forma
peridica para comprobar si se ha producido algn error grave. Tambin se pueden
emplear guiones del sistema operativo para buscar ciertos mensajes en el diario de
errores y notificar al administrador del sistema cuando se detectan ciertos errores. La
verificacin peridica del diario de errores ayuda a determinar si hay problemas
continuos de la misma naturaleza o si cierto dispositivo de base de datos resulta
problemtico. Consulte el Captulo 4, "Diagnosis de problemas en el sistema", para
obtener ms informacin sobre los mensajes de error y su gravedad.
El archivo del diario de errores puede llegar a ser muy grande, ya que SQL Server aade
mensajes informativos y de estado en el diario cada vez que se inicia. Puede "podar" el
diario peridicamente abrindolo y eliminando los registros antiguos. Si mantiene el
diario con un tamao manejable, ahorrar espacio en el disco y facilitar la localizacin
de errores actuales.

Mantenimiento de registros
Mantener registros del sistema SQL Server es una parte importante de su labor como
administrador del sistema. Un registro preciso de los cambios y problemas
experimentados puede ser una valiosa referencia cuando se ponga en contacto con el
Servicio de Asistencia Tcnica o recupere bases de datos. Y ms importante an,
proporcionan informacin vital para los administradores a cargo del sistema SQL Server
en su ausencia. Las secciones siguientes esbozan los tipos de registros cuyo
mantenimiento es ms importante.
Informacin de contactos
Mantenga una lista de personas de contacto para su uso (como administrador del
sistema) y para el oficial de seguridad del sistema, el operador y los usuarios de las
bases de datos de su sistema. Adems, registre personas de contacto secundarias para
cada rol. Ponga esta informacin a disposicin de todos los usuarios de SQL Server para
que las personas adecuadas reciban solicitudes de mejoras e informes de problemas.
Informacin de la configuracin
En condiciones ideales, usted deber crear bases de datos y objetos de base de datos, y
configurar SQL Server mediante archivos de guin que posteriormente guardar en un
lugar seguro. Esta prctica le permitir volver a crear todo el sistema si se produjese un
desastre. Tambin le permitir recrear sistemas de bases de datos con rapidez en nuevas
plataformas de hardware, para su evaluacin. Si utiliza una herramienta proporcionada
por terceros para realizar la administracin del sistema, recuerde generar guiones
equivalentes despus de llevar a cabo las tareas de administracin.
Considere registrar los siguientes tipos de informacin:

Comandos empleados para crear bases de datos y objetos de base de datos


(guiones DDL).
Comandos que aaden nuevos logins y usuarios de base de datos de SQL Server.
El archivo de configuracin actual de SQL Server, como se describe en "Uso de
sp_configure con un archivo de configuracin".
El nombre, ubicacin y tamao de todos los archivos y dispositivos en bruto
inicializados como dispositivos de base de datos.

Tambin es til mantener un diario fechado de todos los cambios efectuados en la


configuracin de SQL Server. Marque cada cambio con una breve descripcin de
cundo y por qu lo realiz, as como un resumen del resultado final.
Programas de mantenimiento
Mantenga un calendario de eventos para las actividades regulares de mantenimiento
programadas. Dicho calendario debe enumerar todos los procedimientos que realice en
el lugar:

Uso de dbcc para verificar la consistencia de las bases de datos.


Copia de seguridad de las bases de datos de usuario y de sistema.
Control del espacio disponible en los diarios de transacciones (si no se hace
automticamente).
Volcado peridico del diario de transacciones.
Examen del contenido de los diarios de errores de SQL Server, Backup
Server(TM) y SQL Monitor Server(TM).
Ejecucin del comando update statistics (consulte "Index Statistics" de la Gua
de M ejora de R endimiento y A finacin ).
Examen de la informacin de auditora, si ha instalado la opcin de auditora.
Recompilacin de los procedimientos almacenados.
Control de la utilizacin de los recursos de la mquina servidora.

Informacin del sistema


Registre informacin sobre el equipo y sistema operativo en que se ejecuta SQL Server.
Puede incluir:

Copias de los archivos de configuracin o de inicio del sistema operativo.


Copias de los archivos de configuracin de la red (por ejemplo, los archivos
hosts y services ).
Nombres y permisos para los archivos ejecutables y los dispositivos de base de
datos de SQL Server.
Nombre y ubicacin de los dispositivos de cinta utilizados para las copias de
seguridad.
Copias de los guiones o programas del sistema operativo para copias de
seguridad automatizadas, inicio de SQL Server u otras actividades de
administracin.

Plan de recuperacin de desastres

Haga una lista concisa de pasos de recuperacin para su sistema reuniendo los
procedimientos bsicos de copia de seguridad y recuperacin, las sugerencias
proporcionadas en "Copia de seguridad y recuperacin", y sus experiencias personales
en recuperacin de datos. Esto puede serle til a usted o a otros administradores del
sistema que deban recuperar un sistema de produccin si se produce una emergencia.

Obtencin de ayuda adicional


La cantidad de nueva informacin que los administradores deben aprender puede
parecer abrumadora en ocasiones. Sin embargo, hay varias utilidades de software que
pueden ayudarle a aprender y simplificar las tareas bsicas de administracin. Entre
ellas, se incluyen SQL Server Monitor, que sirve para controlar el rendimiento del
servidor y otras actividades, y SQL Server Manager(TM), que puede ayudarle en
muchas tareas de administracin diferentes. Adems, hay muchos paquetes de software
de terceros diseados para ayudar a los administradores del sistema a realizar las
actividades de mantenimiento diario.

Chapter 4

Diagnosis de problemas en el sistema


En este captulo se explica la diagnosis y solucin de problemas en el sistema. Los
temas tratados incluyen:

Cmo responde SQL Server a problemas en el sistema


Diario de errores de Backup Server
Destruccin de procesos
Cierre de servidores
Aprendizaje de problemas conocidos

Cmo responde SQL Server a problemas en el sistema


Cuando SQL Server encuentra un problema (causado por el usuario o por el sistema)
muestra informacin sobre el problema, su gravedad y cmo puede solucionarse. Esta
informacin consta de:

Un nmero de mensaje , que identifica en forma exclusiva el mensaje de error.


Un nmero de nivel de gravedad entre 10 y 24.
Un nmero de estado de error , que permite la identificacin de la lnea de
cdigo de SQL Server en que se produjo el error.
Un mensaje de error , que indica cul es el problema y puede sugerir una forma
de solucionarlo.

Esto es lo que sucede si, por ejemplo, usted comete un error mecanogrfico e intenta
tener acceso a una tabla que no existe:
select * from editores
Msg 208, Level 16, State 1:
Invalid object(table) name editores

En algunos casos, puede haber ms de un mensaje de error para una sola consulta. Si
hay ms de un error en un lote o consulta, SQL Server suele comunicar el primero
solamente. Los errores subsiguientes se anotan la prxima vez que ejecute el lote o
consulta.
Los mensajes de error se almacenan en master..sysmessages , que se actualiza con cada
nueva versin de SQL Server. Estas son las primeras filas (de un SQL Server con
us_english definido como idioma predeterminado):
select error, severity, description
from sysmessages
where error >=101 and error <=106
and langid is null
error severity description
----- -------- -------------------------------------------------101
15 Lnea %d: error sintctico de SQL.
102
15 Sintaxis incorrecta cerca de '%1!'.
103
15 El %1! que comienza con '%2!' es demasiado largo.
La longitud mxima es %3!.
104
15 Si la instruccin contiene operadores de
conjuntos, los elementos order-by deben aparecer
en la lista de seleccin.
105
15 Comilla sola antes de la cadena de caracteres
'%1!'.
106
16 Demasiados nombres de tabla en la consulta. El
mximo permitido es %1!.
(6 rows affected)

Para generar su propia lista, ejecute una consulta sobre sysmessages . Esta informacin
adicional le ser til para escribir la consulta:

Si el servidor soporta ms de un idioma, sysmessages almacena los mensajes en


cada idioma. La columna langid es NULL para us_english e indica el
syslanguages.langid para otros idiomas instalados en el servidor. Para obtener
informacin sobre los idiomas disponibles en su servidor, utilice
sp_helplanguage.
La columna dlevel de sysmessages no se utiliza actualmente.
La columna sqlstate almacena el valor SQLSTATE para las condiciones de error
y las excepciones definidas en ANSI SQL92.
Los nmeros de mensaje 17000 y ms altos son mensajes de error y cadenas de
mensajes de los procedimientos del sistema.

Mensajes de error y nmeros de mensaje


El nmero de mensaje de combinacin ( error ) y la ID de idioma ( langid ) identifican
cada mensaje de error de forma exclusiva. Los mensajes con el mismo nmero de
mensaje, pero diferente ID de idioma, son traducciones.
select error, description, langid
from sysmessages
where error = 101
error description
langid
----- -------------------------------------- -----101 Line %d: SQL syntax error.
NULL

101 Ligne %1!: erreur de syntaxe SQL.


101 Zeile %1!: SQL Syntaxfehler.

1
2

(3 rows affected)

El texto del mensaje de error es una descripcin del problema y suele incluir un nmero
de lnea, una referencia a un tipo de objeto de base de datos (tabla, columna,
procedimiento almacenado, etc.) o el nombre de un objeto de base de datos en
particular.
En el campo description de sysmessages , un signo de porcentaje (%) seguido por un
carcter o una cadena de caracteres sirve como un marcador de lugar de estos datos, que
SQL Server suministra cuando encuentra el problema y genera el mensaje. "%d" es el
marcador de lugar de un nmero; "%S_MSG" lo es de un tipo de objeto de base de
datos; "%.*s" (todo entre comillas) es un marcador de lugar del nombre de cierto objeto
de base de datos. La Figura 4-1 enumera los sustitutos y lo que representan.
Por ejemplo, el campo description del mensaje nmero 103 es:
El %1! que comienza con '%2!' es demasiado largo.
La longitud mxima es %3!.

El mensaje de error real que lee el usuario podra ser:


El columna que comienza con 'title' es demasiado largo.
La longitud mxima es 80.

Cuando comunique errores, es importante que incluya los nmeros, tipos de objeto y
nombres de objeto. (Consulte "Comunicacin de errores".)
Variables en el texto de los mensajes de error
La tabla siguiente explica las abreviaturas que aparecen en el texto de los mensajes de
error junto con su explicacin:
Tabla 4-1: Clave de las abreviaturas en los textos de error
Smbolo

Representa

%d, %D

Nmero decimal

%x, %X, %.*x, %lx, %04x,


%08lx

Nmero hexadecimal

%s

Cadena terminada en nulo

%.*s, %*s, %*.s

Cadena, normalmente el nombre de cierto objeto de base


de datos

%S_ type

Estructura definida por SQL Server

%c

Un solo carcter

%f

Nmero de coma flotante

%ld

Decimal largo

%lf

Nmero doble de coma flotante

Registro de los errores


Muchos mensajes de error de SQL Server se envan slo a la pantalla del usuario.
El rastreo inverso de los mensajes de error fatal (niveles de gravedad 19 y superiores) y
los mensajes de error del kernel tambin se envan a un archivo de diario de errores. El
nombre de este archivo vara; consulte la gua de instalacin y configuracin de SQL
Server o el manual de los programas de utilidad de SQL Server.
Note: El archivo del diario de errores es propiedad del usuario que instal SQL Server
(o de quien lo inici despus de quitar un diario de errores). Los problemas de permiso
o propiedad con el diario de errores a nivel del sistema operativo pueden impedir el
arranque satisfactorio de SQL Server.
SQL Server crea un diario de errores automticamente si no existe uno. La ubicacin de
este diario depende de cmo se inicia el servidor:

Si se usa startserver y el archivo de ejecucin del servidor creado por el


proceso de instalacin de SQL Server, el comando dataserver incluye una
opcin que indica la ubicacin del diario de errores.
Si se escribe el comando dataserver (o sqlsrvr en plataformas PC) desde el
sistema operativo, puede incluirse la opcin que especifica la ubicacin del
diario de errores ( -e en plataformas UNIX y PC; /errorfile en OpenVMS).
Si no se incluye la opcin de diario de errores, el diario se crea en el directorio
donde se inicia SQL Server.
Note: Para poder localizar los diarios de errores, inicie SQL Server siempre
desde el mismo directorio, con el archivo de ejecucin del servidor o con el
indicador de diario de errores.

Cada vez que se inicia un servidor, los mensajes del diario de errores proporcionan
informacin sobre el xito (o fracaso) del arranque y la recuperacin de cada base de
datos del servidor. Los sucesivos mensajes de error fatal y todos los del kernel se
aaden al final del archivo del diario de errores. Si necesita reducir el tamao de ese
diario eliminando mensajes antiguos o innecesarios, deber "podar" el diario mientras
SQL Server est cerrado.
Formato del diario de errores
Las entradas del diario de errores incluyen la informacin siguiente:

La mquina implicada para cada entrada del diario. El nmero de mquina se


indica al principio de cada lnea, con un nmero de dos cifras seguido por un
signo de dos puntos.
La fecha, mostrada en el formato aa/mm/dd , que permite ordenar los mensajes
de error por fecha.
La hora, en formato de 24 horas, con segundos y centsimas de segundo.
El mensaje de error en s.

El siguiente es un ejemplo de una lnea de un diario de errores:

00: 95/02/18 13:40:28.13 server: Recovery complete.

La entrada "00:" al comienzo de la lnea muestra que la mquina nmero 0 produjo el


mensaje. La fecha es 18 de febrero de 1995, y la hora es 1:40 p.m., 28 segundos y 13
centsimas de segundo.
Niveles de seguridad
El nivel de seguridad proporciona informacin sobre el tipo de problema encontrado por
SQL Server. Para una mxima integridad, cuando SQL Server responde a las
situaciones de error, muestra mensajes de sysmessages , pero acta en funcin de una
tabla interna. Algunos mensajes similares varan en niveles de gravedad, por lo que es
posible que note una diferencia en el comportamiento esperado si desarrolla
aplicaciones o procedimientos que hacen referencia a los mensajes y niveles de
gravedad de SQL Server.
Warning! Usted puede crear sus propios nmeros y mensajes de error basados en los
nmeros de error de SQL Server (por ejemplo, sumando 20.000 al valor de SQL
Server), pero no altere los mensajes del sistema suministrados por SQL Server en
sysmessages .
Aada mensajes de error definidos por el usuario a sysusermessages con el
procedimiento almacenado sp_addmessage . Para ms informacin, consulte el Manual
de Referencia de SQL Server .
En isql y Data Workbench(R), los mensajes con nivel de gravedad 10 (de estado o
informativos) no muestran un nmero de mensaje ni un nivel de gravedad. En las
aplicaciones de Open Client(TM), SQL Server devuelve "0" para el nivel de gravedad
10.
Los niveles de gravedad 1 a 16 indican problemas causados por errores introducidos por
los usuarios.
Los niveles de gravedad 16 y superiores indican errores de software o hardware. Si el
nmero es 17 18, podr continuar con el trabajo pero quiz no pueda ejecutar algn
comando.
Los niveles de gravedad 19 y superiores indican errores fatales, lo cual implica que el
proceso (el cdigo del programa que se est ejecutando para lograr la tarea especificada
en el comando) ya no est en ejecucin. El proceso congela su estado antes de
detenerse, registrando informacin sobre lo que suceda. Luego se destruye y
desaparece.
Los errores fatales (niveles 19 y superiores) cortan la conexin del usuario con SQL
Server. Dependiendo del problema, es posible que el usuario pueda volver a conectarse
y reanudar su trabajo. Algunos problemas con niveles de gravedad en este intervalo
afectan slo a un usuario y a un proceso. Otros afectan a todos los procesos de la base
de datos. En algunos casos ser necesario reiniciar SQL Server. Aunque estos
problemas no necesariamente daan una base de datos o sus objetos, pueden hacerlo.
Los daos tambin pueden ser consecuencia de daos anteriores a una base de datos o

sus objetos. Otros problemas son resultado de los fallos en el funcionamiento del
hardware.
Un rastreo inverso de los mensajes de error fatal del kernel se enva al diario de errores,
donde el administrador del sistema puede revisarlo.
Debe instruirse a los usuarios para que informen al administrador del sistema siempre
que se produzcan problemas con niveles de gravedad 17 y superiores. El administrador
es responsable de resolverlos y controlar su frecuencia, y debe supervisar todos los
problemas con niveles de gravedad 17 a 24.
Si el problema afect a toda una base de datos, es posible que el administrador del
sistema tenga que utilizar el verificador de consistencia de bases de datos ( dbcc ) para
determinar el alcance del dao. dbcc puede identificar algunos objetos que deben
quitarse. Tambin puede reparar algunos daos, pero probablemente haya que volver a
cargar la base de datos.
Para ms informacin, consulte lo siguiente:

dbcc se explica en el Captulo 17, "Verificacin de la consistencia de las bases


de datos".
La carga de una base de datos de usuario se trata en el Captulo 19, "Copia de
seguridad y restauracin de las bases de datos de usuario".
La carga de las bases de datos del sistema se describe en el Captulo 20, "Copias
de seguridad y restauracin de las bases de datos del sistema".

En los apartados siguientes, se trata cada nivel de gravedad.


Niveles 10 a 18
Los mensajes de error con niveles de gravedad 10 a 16 se generan por problemas
causados por errores del usuario. Estos problemas siempre pueden ser corregidos por el
usuario. Los niveles de gravedad 17 y 18 no terminan la sesin del usuario.
Los mensajes con niveles 17 y superiores deben comunicarse al administrador del
sistema o al propietario de la base de datos.
Nivel 10: Informacin de estado
Los mensajes cuyo nivel de gravedad es 10 no son errores. Muestran informacin
adicional despus de ejecutarse ciertos comandos y, habitualmente, no muestran el
nmero de mensaje ni el nivel de gravedad. Por ejemplo, despus de ejecutar un
comando create database , SQL Server muestra un mensaje indicando al usuario qu
cantidad del espacio solicitado se ha asignado a la nueva base de datos.
Nivel 11: No se encuentra el objeto de base de datos especificado
Los mensajes con nivel de gravedad 11 indican que SQL Server no puede encontrar un
objeto al que se hizo referencia en el comando.

Esto suele deberse a que el usuario ha escrito mal el nombre de un objeto de base de
datos, a que no especific el nombre del propietario del objeto o a una confusin sobre
cul es la base de datos actual. Verifique que los nombres de objeto no contengan
errores, utilice el nombre del propietario si el objeto no es suyo o del "dbo", y
compruebe que est en la base de datos correcta.
Nivel 12: Se ha encontrado un tipo de datos errneo
Los mensajes cuyo nivel de gravedad es 12 indican un problema con los tipos de datos.
Por ejemplo, el usuario puede haber intentado introducir un valor con un tipo de datos
equivocado en una columna, o comparar columnas de tipos distintos (e incompatibles).
Para corregir los problemas de comparacin, utilice la funcin convert con select . Para
obtener informacin sobre convert , consulte el Manual de Referencia de SQL Server o
la Gua del U suario de Transact-SQL .
Nivel 13: Error de sintaxis de transaccin
Los mensajes de nivel 13 indican que hay algo errneo con la transaccin actual
definida por el usuario. Por ejemplo, es posible que usted haya ejecutado un comando
commit transaction sin introducir begin transaction antes, o que haya intentado
revertir una transaccin a un punto de resguardo no definido (en ocasiones, puede haber
un error mecanogrfico en el nombre del punto de resguardo).
El nivel de gravedad 13 tambin puede indicar un bloqueo insoluble, en cuyo caso se
revierte el proceso de la vctima de dicho bloqueo. El usuario debe reiniciar su
comando.
Nivel 14: Permiso insuficiente para ejecutar el comando
Los mensajes cuyo nivel de gravedad es 14 implican que el usuario no tiene el permiso
necesario para ejecutar el comando o tener acceso al objeto de base de datos. Solicite al
propietario de ese objeto, al propietario de la base de datos o al administrador del
sistema que le conceda el permiso de utilizar el comando u objeto en cuestin.
Nivel 15: Error de sintaxis en una instruccin SQL
Los mensajes cuyo nivel de gravedad es 15 indican que el usuario ha cometido un error
en la sintaxis del comando. El texto de estos mensajes de error incluye los nmeros de
lnea donde ocurre el error y las palabras concretas cerca de las cuales se produjo.
Nivel 16: Errores varios del usuario
Los mensajes de error cuyo nivel de seguridad es 16 indican que el usuario ha realizado
algn tipo de error no fatal que no est comprendido en las otras categoras.
Por ejemplo, el usuario puede haber intentado actualizar una vista de una forma que
viola las restricciones. Otro error propio de esta categora es la inclusin de nombres de
columna no calificados en un comando que menciona ms de una tabla con ese nombre

de columna. SQL Server no tiene forma de determinar a cul se refiere el usuario.


Verifique la sintaxis del comando y el contexto de la base de datos activa.
Note: El administrador del sistema debe controlar la aparicin de errores con niveles de
gravedad entre 17 y 24. Los niveles 17 y 18 no suelen registrarse en el diario de errores.
Debe instruirse a los usuarios para que notifiquen al administrador del sistema cuando
surjan errores de los niveles 17 y 18.
Nivel 17: Recursos insuficientes
Los mensajes de error cuyo nivel de gravedad es 17 significan que el comando ha
provocado que SQL Server agote los recursos (normalmente espacio para la base de
datos en el disco) o que supere algn lmite definido por el administrador del sistema.
Entre esos lmites del sistema, se incluyen el nmero de bases de datos que pueden estar
abiertas al mismo tiempo y el nmero de conexiones permitidas a SQL Server. Esos
lmites se guardan en tablas del sistema y pueden verificarse con sp_configure .
Consulte el Captulo 11, "Definicin de los parmetros de configuracin", para obtener
ms informacin sobre la modificacin de las variables de configuracin.
El propietario de la base de datos puede corregir los mensajes de error del nivel 17
indicando que se agot el espacio. Otros mensajes de este nivel debe corregirlos el
administrador del sistema.
Nivel 18: Se detect un error interno no fatal
Los mensajes de error cuyo nivel de gravedad es 18 indican algn tipo de error interno
del software. Sin embargo, el comando se ejecuta hasta terminar, y se mantiene la
conexin con SQL Server. Un ejemplo de situacin que genera este nivel de gravedad
es que SQL Server detecte una decisin sobre la ruta de acceso de cierta consulta en
particular realizada sin una razn vlida.
Como los problemas que generan estos mensajes no impiden que los usuarios continen
su trabajo, los usuarios tienden a no comunicarlos. Por ello, debe indicrseles que
informen al administrador del sistema siempre que se produzca un mensaje de error con
esta gravedad (y superior) para que el administrador tome las medidas adecuadas.
Niveles de gravedad 19 a 24
Los problemas fatales generan mensajes de error con los niveles de gravedad 19 y
superiores, y cortan la conexin del usuario con SQL Server. Para continuar trabajando,
el usuario debe reiniciar el programa cliente.
Nivel 19: Error fatal de SQL Server en un recurso
Los mensajes de error cuyo nivel de gravedad es 19 indican que se excedi algn lmite
interno no configurable y que SQL Server no puede recuperarlo fcilmente. Vuelva a
conectarse con SQL Server. Consulte al administrador del sistema.
Nivel 20: Error fatal de SQL Server en el proceso actual

Los mensajes de error cuyo nivel de gravedad es 20 significan que SQL Server ha
encontrado un error en un comando. El problema ha afectado slo al proceso actual, y
es improbable que la base de datos en s haya resultado daada. Ejecute los diagnsticos
dbcc . Vuelva a conectarse con SQL Server. Consulte al administrador del sistema.
Nivel 21: Error fatal de SQL Server en los procesos de base de datos
Los mensajes de error cuyo nivel de gravedad es 21 significan que SQL Server ha
encontrado un error de software que afecta a todos los procesos de la base de datos
actual. Sin embargo, es improbable que la base de datos en s haya resultado daada.
Reinicie SQL Server y ejecute dbcc . Vuelva a conectarse con SQL Server. Consulte al
administrador del sistema.
Nivel 22: Error fatal de SQL Server: La integridad de la tabla es dudosa
Los mensajes de error cuyo nivel de gravedad es 22 significan que la tabla o el ndice
que se especifican en el mensaje haban resultado daados previamente por un problema
de software o hardware.
El primer paso es reiniciar SQL Server y ejecutar dbcc para averiguar si hay otros
objetos daados en la base de datos. Cualquiera sea el resultado de dbcc , es posible que
el problema est slo en el cach y no en el disco. Si es as, reiniciar SQL Server
solucionar el problema.
Si esto no soluciona el problema, el problema est tambin en el disco. A veces, el
problema puede solucionarse omitiendo el objeto indicado en el mensaje de error. Por
ejemplo, si el mensaje dice que SQL Server ha encontrado una fila de longitud 0 en un
ndice no agrupado, el propietario puede omitir el ndice y volver a crearlo.
Vuelva a conectarse con SQL Server. Consulte al administrador del sistema.
Nivel 23: Error fatal: La integridad de la base de datos es dudosa
Los mensajes de error cuyo nivel de gravedad es 23 indican que la integridad de toda la
base de datos es dudosa debido a un dao anterior causado por un problema de software
o hardware. Reinicie SQL Server y ejecute los diagnsticos dbcc .
Aunque un error del nivel 23 indica que toda la base de datos es dudosa, el dao puede
estar limitado al cach, y el disco en s puede estar perfectamente. Si es as, reiniciar
SQL Server con startserver solucionar el problema.
Nivel 24: Error de hardware o corrupcin de una tabla del sistema
Los mensajes de error cuyo nivel de gravedad es 24 reflejan algn tipo de fallo en el
disco o (en casos raros) que sysusages est corrupta. Es posible que el administrador del
sistema tenga que volver a cargar la base de datos. Quiz sea necesario llamar al
proveedor del hardware.
Comunicacin de errores

Cuando comunique un error, no olvide incluir los datos siguientes:

El nmero de mensaje, de nivel y de estado.


Los nmeros, los tipos o los nombres de objeto de base de datos que se incluyan
en el mensaje de error.
El contexto en que se gener el mensaje, es decir, qu comando se estaba
ejecutando. Tambin puede ser til proporcionar una copia del rastreo inverso
del diario de errores.

Diario de errores de Backup Server


Al igual que SQL Server, Backup Server crea un diario de errores automticamente si
no existe uno. La ubicacin de este diario depende de cmo se inicie el servidor:

Si emplea startserver y el archivo de ejecucin del servidor creado por el


proceso de instalacin, el comando backupserver incluye una opcin que
especifica la ubicacin del diario de errores.
Si utiliza el comando backupserver desde el sistema operativo, puede incluir la
opcin que especifica la ubicacin del diario de errores ( -e en plataformas
UNIX y PC; /errorfile en OpenVMS).
Si no incluye la opcin de diario de errores, se crear en el directorio en que se
inicie Backup Server.

Los mensajes de error de Backup Server tienen la forma siguiente:


MMM DD AAA: Backup Server:N.N.N.N: Texto de mensaje

Los nmeros de los mensajes de Backup Server constan de cuatro enteros separados por
puntos, con la forma N.N.N.N. Los mensajes con la forma N.N.N son enviados por
Open Server.
Los cuatro componentes de un mensaje de error de Backup Server son
principal.secundario.gravedad.estado :

El componente principal suele indicar el rea funcional del cdigo de Backup


Server en que se produjo el error:
o 1 - Errores del sistema
o 2 - Errores de eventos de Open Server
o 3 - Errores de llamada de procedimientos remotos de Backup Server
o 4 - Errores de capa de servicios E/S
o 5 - Errores de transferencia de datos de red
o 6 - Errores de gestin de volmenes
o 7 - Errores de anlisis de opciones
Las categoras de error principal 1 a 6 pueden ser resultado de errores internos
de Backup Server o de diversos problemas del sistema. Los errores principales
de la categora 7 se deben casi siempre a problemas en las opciones
especificadas en un comando de volcado o carga.

Los nmeros secundarios se asignan por orden dentro de una categora


principal.
La gravedad puede ser una de las siguientes:
o 1 - Informativo; no es necesaria ninguna accin del usuario.
o 2, 3 - Se ha producido una situacin inesperada, posiblemente fatal en la
sesin. El error puede haber ocurrido dentro de parte o toda la lgica
interna, de uso o de entorno.
o 4 - Se ha producido una situacin inesperada, fatal para la ejecucin de
Backup Server. Es necesario salir de Backup Server inmediatamente.
Los cdigos de estado tienen una correspondencia biunvoca con las entradas del
informe de errores dentro del cdigo. Si necesita ponerse en contacto con el
Servicio de Asistencia Tcnica acerca de errores de Backup Server, este cdigo
ayuda a determinar la causa exacta del error.

Destruccin de procesos
Un proceso es una tarea realizada por SQL Server. Los procesos pueden ser iniciados
por un usuario que ejecuta un comando o por el propio SQL Server. Cuando se inicia un
proceso, se le asigna un nmero exclusivo de identificacin de proceso. Estos nmeros
de ID, y otra informacin sobre cada proceso, se almacenan en master..sysprocesses .
Para ver la mayor parte de esa informacin, ejecute el procedimiento del sistema
sp_who .
El comando kill pone fin a un proceso en curso. La razn ms frecuente para destruir un
proceso es que interfiere con otros usuarios y que el responsable de su ejecucin no est
disponible. El proceso puede mantener bloqueos que impiden el acceso a objetos de
base de datos, o puede haber muchos procesos en reposo que ocupan las conexiones de
usuario disponibles. Un administrador del sistema puede destruir procesos que:

Estn esperando una alarma, como un comando waitfor .


Estn esperando envos o recepciones de la red.
Estn esperando un bloqueo.
Son principalmente procesos en ejecucin o "a ejecutar".

SQL Server permite destruir procesos slo si puede revertir limpiamente las
transacciones no terminadas y liberar todos los recursos del sistema del sistema
utilizados por el proceso.
La ejecucin de sp_who en un servidor de un solo procesador muestra el proceso
sp_who como "en ejecucin" (running) y los dems procesos como "a ejecutar"
(runnable) o en uno de los estados de reposo (sleep). En servidores de varios
procesadores, puede haber un proceso "en ejecucin" para cada uno.
La tabla siguiente muestra los valores que sp_who comunica :
Tabla 4-2: Valores de estado comunicados por sp_who
Estado
recv sleep

Condicin
Espera una lectura de la red.

Efectos del comando kill


Inmediatos.

send sleep Espera un envo de la red.

Inmediatos.

alarm sleep

Espera una alarma, como waitfor


Inmediatos.
delay "10:00"

lock sleep

Espera lograr un bloqueo.

Inmediatos.

sleeping

Espera E/S del disco o algn otro


recurso. Indica probablemente un
proceso que est en ejecucin,
pero haciendo un uso intenso de
la E/S del disco.

Se destruye cuando se "reactiva",


normalmente de inmediato; algunos
procesos en reposo no se reactivan, y
para su eliminacin es preciso reiniciar
el servidor.

runnable

Est en la cola de procesos a


ejecutar.

Inmediatos.

running

Se ejecuta activamente en uno de


Inmediatos.
los motores del servidor.

infected

Se desaconseja el uso del comando kill .


El servidor ha detectado un error
Para borrar el proceso, probablemente
grave; situacin muy rara.
deba reiniciar el servidor.

Un proceso, como un
procedimiento de umbral,
background
ejecutado por SQL Server, no por
un proceso de usuario.

log
suspend

Inmediatos; use kill con mucho cuidado.


Es aconsejable una verificacin
exhaustiva de sysprocesses antes de
destruir un proceso en segundo plano.

Se destruye al "reactivarse": cuando se


libera espacio en el diario con un
Procesos suspendidos porque han
comando dump transaction o cuando
llegado al umbral de ltima
un administrador usa la funcin
oportunidad en el diario.
lct_admin para reactivar procesos "log
suspend".

Slo un administrador del sistema puede ejecutar el comando kill : el permiso de


utilizarlo no puede transferirse.
La sintaxis es:
kill

spid

Slo es posible destruir un proceso cada vez. El comando kill no es reversible y


tampoco puede incluirse en una transaccin definida por el usuario. spid debe ser una
constante numrica; no puede usarse una variable. Este es un ejemplo de la salida
generada por sp_who :
spid status
loginame hostname blk dbname cmd
---- -------- -------- -------- --- ------ -------------1 recv sleep bird
jazzy
0
master AWAITING COMMAND
2 sleeping
NULL
0
master NETWORK HANDLER
3 sleeping
NULL
0
master MIRROR HANDLER
4 sleeping
NULL
0
master AUDIT PROCESS
5 sleeping
NULL
0
master CHECKPOINT SLEEP
6 recv sleep rose
petal
0
master AWAITING COMMAND
7 running
sa
helos
0
master SELECT
8 send sleep daisy
chain
0
pubs2 SELECT

9 alarm sleep lily


10 lock sleep viola

pond
cello

0
7

master WAITFOR
pubs2 SELECT

En este ejemplo, los procesos 2 a 5 no pueden destruirse, ya que son procesos del
sistema. El nombre de login NULL y la ausencia de un nombre de computadora
principal los identifican como procesos del sistema. Siempre se ver NETWORK
HANDLER, MIRROR HANDLER y CHECKPOINT SLEEP (o, raramente,
CHECKPOINT). AUDIT PROCESS se activa si se habilita la auditora.
Los procesos 1, 6, 8, 9 y 10 pueden destruirse, ya que tienen valores de estado "recv
sleep", "send sleep", "alarm sleep" y "lock sleep".
En la salida de sp_who , no es posible discernir si un proceso cuyo estado es "recv
sleep" pertenece a un usuario que est usando SQL Server y est haciendo una pausa
para examinar el resultado de un comando, o si el proceso indica que un usuario ha
reiniciado una PC u otro terminal y ha dejado un proceso abandonado. Para aprender
ms sobre un proceso cuestionable, consulte la tabla sysprocesses . Por ejemplo, esta
consulta muestra el ID del proceso principal y el software cliente utilizado por el
proceso 8:
select hostprocess, program_name
from sysprocesses
where spid = 8
hostprocess program_name
----------- ---------------3993
isql

Esta consulta, ms la informacin sobre el usuario y la computadora principal obtenida


en el resultado de sp_who , aporta ms informacin para rastrear el proceso desde el
nivel del sistema operativo.
Uso de sp_lock para examinar procesos bloqueantes
Adems de sp_who , el procedimiento del sistema sp_lock puede ayudarle a identificar
procesos que estn bloqueando a otros procesos. Si la columna blk del informe de
sp_who indica que otro proceso se ha bloqueado mientras esperaba conseguir bloqueos,
sp_lock puede mostrar informacin sobre el proceso bloqueante. Por ejemplo, el
proceso 10 de la salida anterior de sp_who est bloqueado por el 7. Para ver
informacin sobre el proceso 7, ejecute:
sp_lock 7

Para obtener ms informacin sobre el bloqueo en SQL Server, consulte la Gua de M


ejora de R endimiento y A finacin .

Cierre de servidores
Un administrador del sistema puede cerrar SQL Server o Backup Server con el
comando shutdown . La sintaxis es:
shutdown [

backup_server_name

] [with {wait|nowait}]

El valor predeterminado del comando shutdown es with wait . Es decir, shutdown y


shutdown with wait hacen exactamente lo mismo.
Cierre de SQL Server
Si no da un nombre de servidor, shutdown cierra el SQL Server que usted est
utilizando. Cuando se ejecuta el comando shutdown , SQL Server:
1. Desactiva los logins, salvo de los Administradores del sistema.
2. Realiza un punto de verificacin en cada base de datos, vaciando las pginas que
pasaron de la memoria al disco.
3. Espera a que terminen los procedimientos o instrucciones SQL que se estn
ejecutando actualmente.
De esta forma, shutdown minimiza la cantidad de trabajo que debe hacer la
recuperacin automtica cuando se reinicie SQL Server.
La opcin with no_wait cierra SQL Server de inmediato, cancelando los procesos del
usuario, por lo que la recuperacin puede precisar ms tiempo que despus de un
shutdown with nowait . Para reducir el tiempo de recuperacin, utilice el comando c
heckpoint antes de ejecutar shutdown with nowait .
Cierre de un Backup Server
Para cerrar un Backup Server, d el nombre del Backup Server:
shutdown

SYB_BACKUP

El valor predeterminado es with wait , por lo que los volcados o cargas en curso se
terminarn antes de que cese el proceso del Backup Server. Una vez que ejecute un
comando shutdown , no puede iniciarse ninguna sesin nueva de volcado o carga en el
Backup Server.
Para ver los nombres de los Backup Server accesibles desde su SQL Server, ejecute
sp_helpserver. Utilice el valor de la columna name en el comando shutdown . Slo es
posible cerrar un Backup Server que est:

Enumerado en sysservers , en su SQL Server, y


Enumerado en su archivo local de interfaces.

Utilice sp_addserver para aadir un Backup Server a sysservers .


Verificacin de volcados y cargas activas
Para ver la actividad en su Backup Server antes de efectuar un cierre, ejecute sp_who en
Backup Server:
SYB_BACKUP...sp_who
spid
status
loginame hostname
blk cmd
------ -------- -------- ---------- --- ---------------1 sleeping NULL
NULL
0
CONNECT HANDLER

2
3
4
5

sleeping
runnable
runnable
running

NULL
NULL
NULL
sa

NULL
NULL
NULL
heliotrope

0
0
0
0

DEFERRED HANDLER
SCHEDULER
SITE HANDLER
NULL

Uso de nowait en un Backup Server


El comando shutdown backup_server with nowait cierra el Backup Server, cualquiera
sea la actividad actual. Utilcelo slo en situaciones graves, ya que puede dejar los
volcados o cargas en estado incompleto o inconsistente.
Si utiliza shutdown...with nowait durante el volcado de un diario o una base de datos,
verifique que se haya generado el mensaje que indica la terminacin del volcado. Si no
recibi dicho mensaje, o no est seguro, el volcado siguiente debera ser un dump
database , no un volcado de transacciones. Esto garantiza que usted no depender de
volcados que puedan ser incoherentes.
Si utiliza shutdown with nowait durante una carga de cualquier tipo, y no ha recibido
el mensaje indicando que la carga ha terminado, es posible que no pueda ejecutar ms
comandos load transaction en la base de datos. Asegrese de ejecutar una verificacin
de coherencia de toda la base de datos ( dbcc ) antes de utilizarla. Quiz tenga que
volver a ejecutar todo el grupo de comandos de carga, comenzando con load database.

Aprendizaje de problemas conocidos


El Release Bulletin es una valiosa fuente de informacin para aprender sobre problemas
o incompatibilidades conocidos con SQL Server y Backup Server. La lectura previa del
Release Bulletin puede ahorrarle tiempo y trabajo en la solucin de problemas
conocidos.
El programa de instalacin de SQL Server tambin instala archivos que enumeran todos
los informes de problemas del sistema (SPR) e informes de problemas cerrados (CPR)
para SQL Server versin 11.0. Los informes de problemas estn organizados por reas
funcionales del producto. Por ejemplo, un archivo llamado cpr_bus contendra una lista
de los informes de problemas cerrados (solucionados) relativos a Backup Server, y el
archivo spr_bus contendra una lista de los informes de problemas abiertos actualmente
del Backup Server.
Consulte el Release Bulletin para conocer la ubicacin de los archivos CPR y SPR.

Chapter 5

Introduccin a los temas de recursos de disco


En este captulo se tratan algunos temas bsicos que determinan cmo se asignan y
utilizan los recursos de disco con SQL Server. Incluye los temas siguientes:

Asignacin de dispositivos y ubicacin de objetos


Comandos para administrar los recursos de disco
Consideraciones sobre la administracin del almacenamiento

Estado y valores predeterminados durante la instalacin


Tablas del sistema que manejan el almacenamiento

SQL Server puede tomar algunas decisiones predeterminadas razonables sobre muchos
aspectos del manejo del almacenamiento, como dnde situar las bases de datos, tablas e
ndices y cunto espacio se asigna a cada uno. No obstante, el administrador del sistema
tiene el control final sobre la asignacin de recursos de disco a SQL Server y la
ubicacin fsica de las bases de datos, tablas e ndices en esos recursos.
La responsabilidad de asignar y manejar el almacenamiento suele estar centralizada. No
obstante, el administrador del sistema tiene un control total sobre esas materias en
muchas instalaciones.

Asignacin de dispositivos y ubicacin de objetos


Al configurar un nuevo sistema, el administrador del sistema debe considerar aspectos
que tienen impacto directo sobre el nmero y tamao de los recursos de disco
requeridos. Estos aspectos de la asignacin de dispositivos hacen referencia a
procedimientos y comandos que aaden recursos de disco a SQL Server. La asignacin
de dispositivos se describe en los captulos indicados en la Tabla 5-1.
Tabla 5-1: Temas de asignacin de dispositivos
Tarea

Captulo

Inicializar y asignar un conjunto predeterminado Captulo 6, "Inicializacin de


de dispositivos de base de datos.
dispositivos de base de datos"
Duplicar los dispositivos de base de datos para la Captulo 7, "Duplicacin de
recuperacin.
dispositivos de base de datos"
Despus de asignar los recursos de disco iniciales a SQL Server, el administrador del
sistema, el propietario de bases de datos y los propietarios de objetos deben considerar
cmo situar las bases de datos y sus objetos en dispositivos especficos de base de datos.
Estos aspectos de la ubicacin de objetos determinan dnde residen los objetos de base
de datos en su sistema y si los objetos comparten dispositivos o no. Las tareas de
ubicacin de objetos se explican en todo el manual, incluidos los captulos indicados en
la Tabla 5-2.
Tabla 5-2: Temas de ubicacin de objetos
Tarea
Captulo
Situar bases de datos en dispositivos de base de Captulo 14, "Creacin de bases de
datos especficos.
datos de usuarios"
Situar tablas e ndices en dispositivos de base
de datos especficos.

Captulo 16, "Creacin y uso de


segmentos"

El concepto de asignar dispositivos no debe considerarse aisladamente del concepto de


situar objetos. Por ejemplo, si decide que una tabla en particular debe residir en un par
de dispositivos dedicados, primero debe asignarlos a SQL Server. Las secciones
restantes de este captulo proporcionan una descripcin general que abarca desde la

asignacin de dispositivos a la ubicacin de objetos, y hace referencia a otros captulos


cuando as corresponde.

Comandos para administrar los recursos de disco


La Tabla 5-3 ilustra los principales comandos que un administrador del sistema usa para
asignar recursos de disco a SQL Server, e incluye referencias a los captulos que
describen esos comandos.
Tabla 5-3: Comandos para asignar recursos de disco
Comando
disk init
name = "
dev_name "
physname = "
phys_name " ...

Tarea
Pone un dispositivo fsico a disposicin de un
SQL Server en particular. Asigna un nombre
de dispositivo de base de datos ( dev_name )
que sirve para identificarlo en otros
comandos de SQL Server.

sp_diskdefault " Aade dev_name al conjunto general de


dev_name " ...
espacio predeterminado de base de datos.
disk mirror
name = "
dev_name "
mirror = "
phys_name " ...

Captulo
Captulo 6,
"Inicializacin de
dispositivos de base
de datos"
Captulo 6,
"Inicializacin de
dispositivos de base
de datos"

Captulo 7,
Duplica un dispositivo de base de datos en un "Duplicacin de
dispositivo fsico especfico.
dispositivos de base
de datos"

El administrador del sistema, el propietario de la base de datos y los propietarios de los


objetos deben decidir cmo situar bases de datos y objetos en dispositivos especficos.
La Tabla 5-4 ilustra los comandos usados en la ubicacin de objetos. Consulte tambin
el Chapter 13, "Controlling Physical Data Placement" de la Gua de M ejora de R
endimiento y A finacin para obtener informacin sobre cmo afecta la ubicacin de
objetos al rendimiento.
Tabla 5-4: Comandos para situar objetos en recursos de disco
Comando

Tarea

create database...on
dev_name
Pone los dispositivos de base de datos a
disposicin de una base de datos de SQL
o
Server en particular. La clusula log on de
create database sita los diarios de la base de
alter database...on datos en un dispositivo en particular.
dev_name
create database...
o

Captulo
Captulo 14,
"Creacin de
bases de datos de
usuarios"

Captulo 14,
Cuando se utiliza sin la clusula on dev_name
"Creacin de
, estos comandos asignan espacio en los
bases de datos de
dispositivos predeterminados de base de datos.
usuarios"

alter database...
sp_addsegment
seg_name ,
dbname , devname
y
sp_extendsegment
seg_name ,
dbname , devname
create table...on
seg_name
o
create index...on
seg_name
create table...
o
create index...

Crea un segmento, que es un conjunto de


espacio con nombre, en los dispositivos
disponibles para una base de datos en
particular.

Captulo 16,
"Creacin y uso
de segmentos"

Crea objetos de base de datos y los sita en un Captulo 16,


"Creacin y uso
segmento especfico del espacio de disco
asignado a la base de datos.
de segmentos"

Cuando se usa sin on seg_name , las tablas e


ndices ocupan el conjunto general de espacio
asignado a la base de datos (los dispositivos
predeterminados).

Captulo 16,
"Creacin y uso
de segmentos"

Consideraciones sobre la administracin del almacenamiento


El administrador del sistema de una instalacin de SQL Server debe tomar muchas
decisiones respecto a la asignacin fsica de espacio a las bases de datos de SQL Server.
Las consideraciones principales son:

Recuperacin : La duplicacin de discos y/o el mantenimiento de diarios en un


dispositivo fsico distinto suponen dos mecanismos para la recuperacin total en
caso de fallos fsicos de los discos.
Rendimiento : Para ciertas tablas o bases de datos en que la velocidad de las
lecturas y escrituras en disco es crucial, la ubicacin correcta de los objetos de
base de datos en dispositivos fsicos produce mejoras en el rendimiento. La
duplicacin de discos reduce la velocidad de las escrituras en disco.

Recuperacin
La recuperacin es el motivo fundamental para utilizar varios dispositivos de disco. La
recuperacin ininterrumpida puede lograrse duplicando los dispositivos de base de
datos. La completa recuperacin tambin puede garantizarse almacenando el diario de
una base de datos en un dispositivo fsico aparte.
Mantenimiento de los diarios en un dispositivo aparte
A menos que un dispositivo de base de datos est duplicado, la recuperacin total en
caso de fallo del disco requiere que el diario de transacciones de la base de datos est
almacenado en otro dispositivo distinto a donde se hallan los datos en s (incluidos los

ndices) de la base de datos. La clusula log on de create database permite garantizar el


almacenamiento de los registros del diario en un dispositivo aparte. En caso de un fallo
del disco duro, es posible recrear la base de datos actualizada cargando un volcado de la
misma y aplicando los registros del diario guardados en otro dispositivo. Consulte el
Captulo 14, "Creacin de bases de datos de usuarios", para obtener informacin sobre
la clusula log on de create database .
Duplicacin
La recuperacin ininterrumpida en caso de fallo del disco duro est garantizada por el
mecanismo de duplicacin de los dispositivos de SQL Server en otro disco fsico. La
duplicacin de los dispositivos de base de datos con los datos e ndices (no slo del
dispositivo con el diario de transacciones) es necesaria para que la recuperacin pueda
realizarse sin necesidad de detener SQL Server. El Captulo 7, "Duplicacin de
dispositivos de base de datos", describe el proceso de duplicar dispositivos.
Rendimiento
El rendimiento del sistema puede mejorarse situando los diarios y objetos de base de
datos en dispositivos distintos:

Situar una tabla en un disco duro y los ndices no agrupados en otro, garantiza
que las lecturas y escrituras fsicas sean ms rpidas, ya que el trabajo se reparte
entre dos unidades de disco.
Dividir las tablas de gran tamao en dos discos puede mejorar el rendimiento, en
especial con aplicaciones multiusuario.

Consulte el Chapter 13, "Controlling Physical Data Placement," de la Gua de M ejora


de R endimiento y A finacin para obtener una explicacin detallada de cmo la
ubicacin de los objetos afecta al rendimiento.

Estado y valores predeterminados durante la instalacin


En la gua de instalacin y configuracin se dan instrucciones para instalar SQL Server.
El programa y los guiones de instalacin inicializan el dispositivo master y configuran
automticamente las bases de datos master , model , sybsystemprocs, sybsecurity y
temporales.
Cuando se instala SQL Server por primera vez, las bases de datos del sistema, los
segmentos definidos por el sistema y los dispositivos de base de datos se organizan
como sigue:

Las bases de datos master , model y tempdb se instalan en el dispositivo master


d_master .
La base de datos sybsystemprocs se instala en el dispositivo que usted elija
durante la instalacin.
Se crean tres segmentos en cada base de datos: system , default y logsegment.
El dispositivo de almacenamiento predeterminado para todas las bases de datos
creadas por usuarios es d_master .

Note: Tras inicializar nuevos dispositivos para el almacenamiento


predeterminado, quite el dispositivo master del rea de almacenamiento
predeterminado con s p_diskdefault . No almacene bases de datos ni objetos de
usuario en d_master . Para obtener ms informacin, consulte "Designacin de
dispositivos predeterminados".

Si ha instalado la base de datos de auditora, sybsecurity , la encontrar ubicada


en su propio dispositivo.

Tablas del sistema que manejan el almacenamiento


Dos tablas del sistema de la base de datos master y otras dos de cada base de datos de
usuario controlan la ubicacin de las bases de datos, tablas (incluida la tabla del diario
de transacciones, syslogs ) e ndices. La relacin entre las tablas se ilustra en la Figura
5-1.
Figure 5-2: Tablas del sistema que manejan el almacenamiento
Tabla sysdevices
La tabla sysdevices de la base de datos master contiene una fila para cada dispositivo de
base de datos y puede contener una fila para cada dispositivo de volcado (cinta, disco o
archivo del sistema operativo) disponible para SQL Server.
El comando disk init aade entradas de dispositivos de base de datos a
master..sysdevices . Los dispositivos de volcado, aadidos con el procedimiento del
sistema sp_addumpdevice , se discuten en el Captulo 18, "Desarrollo de un plan de
copias de seguridad y recuperacin".
sysdevices almacena dos nombres por cada dispositivo:

Un nombre lgico o de dispositivo , usado en los sucesivos comandos de


administracin del almacenamiento, se guarda en la columna name de sysdevices
. Generalmente es un nombre fcil de asociar que indica el uso previsto del
dispositivo, por ejemplo "logdev" o "userdbdev".
El nombre fsico es el nombre real del dispositivo en el sistema operativo. Este
nombre se utiliza exclusivamente en el comando disk init ; despus, todos los
comandos de almacenamiento de datos de SQL Server emplean el nombre
lgico.

El diario de una base de datos o de transacciones se sita en uno o ms dispositivos,


especificando el nombre lgico del dispositivo en la instruccin create database o alter
database . La clusula log on de create database sita el diario de transacciones de
una base de datos en otro dispositivo para asegurar su recuperacin total. El dispositivo
del diario tambin debe tener una entrada en sysdevices antes de que pueda utilizarse log
on .
Una base de datos puede residir en uno o ms dispositivos, y un dispositivo puede
almacenar una o ms bases de datos. Consulte el Captulo 14, "Creacin de bases de

datos de usuarios", para obtener informacin sobre la creacin de bases de datos en


dispositivos especficos.
Tabla sysusages
La tabla sysusages de la base de datos master lleva cuenta de todo el espacio asignado a
todas las bases de datos de SQL Server.
create database y alter database asignan nuevo espacio a la base de datos aadiendo
una fila a sysusages para cada dispositivo de base de datos o fragmento de dispositivo.
Cuando se asigna slo una parte del espacio en un dispositivo con create o alter
database , esa parte se denomina fragmento .
Los procedimientos del sistema sp_addsegment , sp_dropsegment y
sp_extendsegment cambian la columna segmap de sysusages por el dispositivo que se
correlaciona o no se correlaciona a un segmento. El Captulo 16, "Creacin y uso de
segmentos", trata estos procedimientos en detalle.
Tabla syssegments
La tabla syssegments (una en cada base de datos) enumera los segmentos de una base de
datos. Un segmento es un conjunto de dispositivos de base de datos y/o fragmentos
disponibles para una base de datos en particular. Las tablas e ndices pueden asignarse a
cierto segmento y, por lo tanto, a cierto dispositivo fsico, o pueden abarcar varios
dispositivos fsicos.
create database realiza entradas predeterminadas en syssegments . Los procedimientos
del sistema sp_addsegment y sp_dropsegment aaden y quitan entradas en
syssegments .
Tabla sysindexes
La tabla sysindexes enumera cada tabla e ndice, y el segmento en que se almacena cada
tabla, ndice agrupado, ndice no agrupado y cadena de pginas de texto. Tambin
contiene otra informacin, como la configuracin de max_rows_per_page para la tabla
o ndice.
Los comandos create table , create index y alter table crean nuevas filas en sysindexes
. La particin de una tabla cambia la funcin de las entradas de sysindexes para la tabla,
como se describe en "Partitioning and Unpartitioning Tables" de la Gua de M ejora de
R endimiento y A finacin .

Chapter 6

Inicializacin de dispositivos de base de datos


En este captulo se explica cmo inicializar dispositivos de base de datos y cmo
asignarlos al conjunto predeterminado de dispositivos. Incluye las secciones siguientes:

Introduccin

Uso del comando disk init


Sintaxis de disk init
Obtencin de informacin sobre los dispositivos
Omisin de dispositivos
Designacin de dispositivos predeterminados
Ubicacin de objetos en dispositivos de base de datos

Introduccin
Un dispositivo de base de datos contiene los objetos que constituyen las bases de datos.
El trmino dispositivo no hace referencia necesariamente a un dispositivo fsico bien
determinado: puede referirse a cualquier parte de un disco (como una particin) o a un
archivo del sistema utilizado para almacenar las bases de datos y sus objetos.
Cada archivo o dispositivo de base de datos debe prepararse y darse a conocer a SQL
Server antes de que pueda emplearse para el almacenamiento de datos. Este proceso se
denomina inicializacin .
Una vez inicializado un dispositivo de base de datos, es posible:

Asignarlo al conjunto predeterminado de dispositivos para los comandos create


y alter database .
Asignarlo al conjunto de espacio disponible de una base de datos de usuario.
Asignarlo a una base de datos de usuario y emplearlo para almacenar uno o ms
objetos de base de datos.
Asignarlo para almacenar el diario de transacciones de una base de datos.

Uso del comando disk init


El administrador del sistema inicializa los nuevos dispositivos de base de datos con el
comando disk init , que hace lo siguiente:

Correlaciona el dispositivo de disco fsico o archivo del sistema operativo


especificados, con un nombre de dispositivo de base de datos .
Enumera el nuevo dispositivo en master..sysdevices .
Prepara el dispositivo para el almacenamiento de bases de datos.
Note: Antes de ejecutar disk init , consulte la gua de instalacin y
configuracin de SQL Server de su plataforma para obtener informacin sobre la
eleccin de dispositivos de base de datos y cmo prepararlos para usarlos con
SQL Server. Posiblemente sea conveniente volver a hacer las particiones en los
discos de su computadora para lograr el mximo rendimiento de las bases de
datos de Sybase.

disk init divide los dispositivos de base de datos en unidades de asignacin de 256
pginas de 2K, totalizando 1/2MB. En cada unidad de asignacin de 256 pginas, el
comando disk init inicializa la primera pgina como pgina de asignacin, la cual
contendr informacin sobre la base de datos (si la hubiera) que reside en la unidad de
asignacin.

Warning! Despus de ejecutar el comando disk init, asegrese de utilizar dump


database para volcar la base de datos master . Esto permite que la recuperacin sea ms
sencilla y segura en caso de que master resulte daada. Si aade un dispositivo y no
realiza la copia de seguridad de master , es posible que pueda recuperar los cambios con
disk reinit . Consulte el Captulo 20, "Copias de seguridad y restauracin de las bases
de datos del sistema".

Sintaxis de disk init


La sintaxis del comando disk init es:
disk init
name = " device_name " ,
physname = " physicalname " ,
vdevno =
virtual_device_number
,
size =
number_of_blocks
[, vstart =
virtual_address
,
cntrltype =
controller_number
[, contiguous]
(
Slo
para

]
OpenVMS)

Ejemplos de disk init


En UNIX:
disk init
name = "user_disk",
physname = "/dev/rxy1a",
vdevno = 2, size = 5120

En OpenVMS:
disk init
name = "user_disk",
physname = "disk$rose_1:[dbs]user.dbs",
vdevno = 2, size = 5120,
contiguous

Especificacin de un nombre lgico de dispositivo con disk init


El device_name debe ser un identificador vlido. Este nombre se utiliza en los
comandos create database y alter database y en los procedimientos del sistema que
administran segmentos. El nombre lgico de dispositivo es conocido slo por SQL
Server, no por la computadora en que funciona el servidor.
Especificacin de un nombre fsico de dispositivo con disk init
El physicalname del dispositivo de base de datos da el nombre de una particin de disco
en bruto (UNIX) o un dispositivo exterior (OpenVMS), o el nombre de un archivo del
sistema operativo. En plataformas PC, slo pueden usarse nombres de archivo del
sistema operativo para el physicalname .
Eleccin de un nmero de dispositivo para disk init

vdevno es un nmero identificador del dispositivo de base de datos, que debe ser
exclusivo entre los dispositivos utilizados por SQL Server. El nmero de dispositivo 0
representa al dispositivo d _master , que almacena los catlogos del sistema. Los
nmeros vlidos son entre 1 y 255, pero el nmero mayor debe ser uno menos que el
nmero de dispositivos de base de datos para el cual est configurado el sistema. Por
ejemplo, en un sistema que tiene la configuracin predeterminada de 10 dispositivos,
los nmeros vlidos de dispositivo son de 1 a 9. Para ver el valor de configuracin de su
sistema, ejecute sp_configure "n umber of devices" , sin dar un segundo parmetro, y
verifique el valor de la ltima columna de la salida:
sp_configure "number of devices"
Parameter name Default Memory Used Config Value Run Value
--------------- ------- ----------- ------------ ---------number of devices
10
0
10
10

Para ver los nmeros que ya estn en uso por vdevno , observe la columna
device_number del informe de sp_helpdevice , o utilice la siguiente consulta para
enumerar todos los nmeros de dispositivo actualmente en uso:
select distinct low/16777216
from sysdevices
order by low

SQL Server est configurado originalmente para 10 dispositivos. Es posible que usted
se vea limitado a un nmero menor por restricciones del sistema operativo. Vea la
explicacin de sp_configure , utilizada para cambiar los parmetros de configuracin,
en el Captulo 11, "Definicin de los parmetros de configuracin".
Si ejecuta un comando disk init que por alguna razn no tiene xito, y debe volver a
ejecutarlo, utilice otro valor para vdevno o reinicie SQL Server.
Especificacin del tamao del dispositivo con disk init
El tamao ( size ) del dispositivo de base de datos debe darse en bloques de 2K. Hay
512 bloques de 2K en 1MB. El tamao mximo de un dispositivo de base de datos es de
1.048.576 bloques de 2K (2GB).
Si tiene previsto utilizar el nuevo dispositivo para crear una nueva base de datos, el
tamao ( s ize ) mximo es el mayor de los siguientes:

El tamao de model . Cuando se instala SQL Server, model usa 1024 bloques de
2K (2MB). Utilice sp_helpdb model para ver el tamao actual de model .
El parmetro de configuracin default database size . Utilice sp_configure y
compruebe el valor de default database size.

Si inicializa un dispositivo de base de datos para un diario de transacciones o para


almacenar tablas o ndices pequeos en un segmento, el tamao ( s ize ) puede reducirse
hasta 512 bloques de 2K (1MB).
Si inicializa un dispositivo en bruto (UNIX) o uno exterior (OpenVMS), determine el
tamao del dispositivo desde el sistema operativo, como se describe en la gua de

instalacin y configuracin de SQL Server de su plataforma. Utilice el tamao total


disponible, hasta el mximo de 2GB. Una vez inicializado el disco para uso de SQL
Server, no es posible utilizar espacio del disco para ningn otro propsito. Por esta
razn, nunca se debe crear un dispositivo en bruto o exterior mayor de 2GB si se lo
piensa utilizar como dispositivo de base de datos de SQL Server.
disk init utiliza size para calcular el valor del nmero de pgina virtual alta en
sysdevices.high .
Warning! Si el dispositivo fsico no contiene el nmero de bloques especificado por el
parmetro size , el comando disk init falla. Si utiliza el parmetro opcional vstart , el
dispositivo fsico debe contener la suma de los bloques especificados por los parmetros
vstart y size ; de lo contrario, el comando falla.
Parmetros opcionales de disk init
vstart es la direccin virtual inicial, o el desplazamiento en bloques de 2K, en que SQL
Server comienza a utilizar el dispositivo de base de datos. El valor predeterminado (y
normalmente el preferido) de vstart es 0. Si el dispositivo especificado no tiene la suma
de vstart + size bloques disponibles, el comando disk init falla.
La palabra clave opcional cntrltype especifica el controlador de disco. Su valor
predeterminado es 0. Cmbielo slo si se le indica que lo haga.
contiguous , una opcin para los sistemas OpenVMS solamente, fuerza la creacin
contigua del archivo de base de datos.
Note: Para realizar la inicializacin del disco, el usuario que inici SQL Server debe
tener los permisos apropiados del sistema operativo en el dispositivo que va a
inicializar.

Obtencin de informacin sobre los dispositivos


El procedimiento del sistema sp_helpdevice muestra informacin sobre los dispositivos
incluidos en la tabla sysdevices .
Cuando se utiliza sin un nombre de dispositivo, sp_helpdevice enumera todos los que
hay disponibles en SQL Server. Si se indica un nombre de dispositivo, muestra
informacin sobre l. Aqu, sp_helpdevice proporciona informacin sobre el
dispositivo master:
sp_helpdevice master
device_name physical_name description
----------- -------------- ----------------------------------------master
MB
status
-----3

d_master
cntrltype
---------0

special, default disk, physical disk, 20


device_number
-------------0

Cada fila de master..sysdevices describe:

low
-----0

high
------9999

Un dispositivo de volcado (cinta, disco o archivo) que se utiliza para la copia de


seguridad de las bases de datos, o bien
Un dispositivo de base de datos que se utiliza para el almacenamiento de bases
de datos.

El contenido inicial de sysdevices depende del sistema operativo y suele incluir las
siguientes entradas:

Una para d_master .


Una para la base de datos sybsystemprocs , que sirve para almacenar bases de
datos adicionales, como pubs2 y sybsyntax , o para diarios y bases de datos de
usuario.
Dos para dispositivos de volcado de cinta.

Si instal la opcin de auditora, tambin habr un dispositivo aparte para sybsecurity.


Los campos low y high representan los nmeros de pgina asignados al dispositivo. En
el caso de dispositivos de volcado, representan la capacidad del dispositivo.
El campo status de sysdevices es un mapa de bits que indica: el tipo de dispositivo; si se
utiliza un dispositivo de disco como dispositivo predeterminado de almacenamiento
cuando los usuarios usan un comando create o alter database , sin especificar un
dispositivo de base de datos; y la informacin de duplicacin del disco. Los bits de
estado y su significado se indican en la tabla siguiente:
Tabla 6-1: Bits de estado en sysdevices
Bit

Significado

Disco predeterminado (puede utilizarse en cualquier comando create o alter


database que no especifique una ubicacin)

Disco fsico

Disco lgico (no utilizado)

Saltar encabezado (usado con dispositivos de volcado de cinta)

16

Dispositivo de volcado

32

Escrituras en serie

64

Dispositivo duplicado

128 Lecturas duplicadas


256 Slo duplicacin del lado secundario
512 Duplicacin activada
2048 Uso interno; se define despus de d isk unmirror, side = retain
Para obtener ms informacin sobre los dispositivos de volcado y sp_addumpdevice ,
consulte el Captulo 18, "Desarrollo de un plan de copias de seguridad y recuperacin".

Omisin de dispositivos

Para omitir dispositivos de base de datos y de volcado, utilice el procedimiento del


sistema sp_dropdevice . La sintaxis es:
sp_dropdevice logicalname

No es posible omitir un dispositivo que est en uso por una base de datos. Primero debe
omitirse la base de datos.
sp_dropdevice quita el nombre de dispositivo de sysdevices. sp_dropdevice no quita
un archivo del sistema operativo omitido como dispositivo de base de datos: slo lo
hace inaccesible a SQL Server. Para eliminar el archivo despus de usar sp_dropdevice
, debe utilizar los comandos del sistema operativo.
Despus de omitir un dispositivo, es necesario reiniciar SQL Server porque el servidor
tiene un proceso con acceso al dispositivo omitido y no hay ninguna otra forma de
destruir el proceso. Al reiniciar SQL Server, se libera el nmero de dispositivo virtual.
Para obtener informacin sobre el inicio e interrupcin de SQL Server, consulte la gua
de instalacin y configuracin de SQL Server.
Si un disk init falla por alguna razn, quiz sea necesario reiniciar SQL Server para
liberar el nmero de dispositivo virtual.

Designacin de dispositivos predeterminados


Para crear un conjunto de dispositivos de base de datos predeterminados que puedan
usar todos los usuarios de SQL Server para crear bases de datos, emplee el comando
sp_diskdefault despus de inicializar los dispositivos con disk init . El comando
sp_diskdefault marca los dispositivos en sysdevices como dispositivos
predeterminados. Siempre que los usuarios creen (o alteren) bases de datos sin
especificar un dispositivo, se asigna nuevo espacio de disco del conjunto espacio de
disco predeterminado.
La sintaxis de sp_diskdefault es:
sp_diskdefault

logicalname

, {defaulton | defaultoff}

Probablemente se utilizar la opcin defaultoff para quitar el dispositivo master del


conjunto de espacio predeterminado:
sp_diskdefault master, defaultoff

El comando siguiente convierte sprocdev , que es el dispositivo que contiene la base de


datos sybsystemprocs , en predeterminado:
sp_diskdefault sprocdev, defaulton

SQL Server puede tener varios dispositivos predeterminados, que se utilizan en el orden
en que aparecen en la tabla sysdevices (es decir , en orden alfabtico). Cuando se llena
el primer dispositivo predeterminado, se utiliza el segundo, y as sucesivamente.
Eleccin de dispositivos predeterminados y no predeterminados

sp_diskdefault permite planificar cuidadosamente el uso del espacio para optimizar el


rendimiento y la recuperacin, al tiempo que deja que los usuarios creen o alteren las
bases de datos ocasionalmente.
Asegrese de que estos dispositivos no sean predeterminados:

El dispositivo master (utilice sp_diskdefault para definir defaultoff despus de


aadir dispositivos de usuario).
El dispositivo de sybsecurity .
Cualquier dispositivo destinado solamente a diarios.
Dispositivos donde residen bases de datos de alto rendimiento, que quiz usen
segmentos.

El dispositivo que contiene sybsystemprocs puede utilizarse para otras bases de datos de
usuario.
Note: Si utiliza segmentos o duplicacin de discos, tenga cuidado al decidir qu
dispositivos agrega a la lista de dispositivos predeterminados con sp_diskdefault . En la
mayora de los casos, los dispositivos que van a duplicarse o las bases de datos que
contendrn objetos situados en segmentos deberan asignar los dispositivos
especficamente, en lugar de convertirse en parte del almacenamiento predeterminado.

Ubicacin de objetos en dispositivos de base de datos


Despus de inicializar un conjunto de dispositivos de base de datos, quiz sea
conveniente asignarles ciertas bases de datos u objetos, en lugar de aadirlos al conjunto
predeterminado de dispositivos. Por ejemplo, es posible que se quiera asegurar que el
tamao de una tabla nunca superare el de cierto dispositivo.
Consulte estos captulos para obtener informacin sobre la ubicacin de bases de datos
y objetos en los dispositivos:

El Captulo 14, "Creacin de bases de datos de usuarios", describe cmo situar


bases de datos de usuario en dispositivos especficos.
El Captulo 16, "Creacin y uso de segmentos", explica cmo utilizar segmentos
para situar tablas e ndices en dispositivos especficos.

Chapter 7

Duplicacin de dispositivos de base de datos


En este captulo se describe el proceso de crear y administrar duplicaciones de disco.
Incluye las secciones siguientes:

Introduccin
Cmo decidir qu duplicar
Condiciones que no inhabilitan la duplicacin
Comandos de duplicacin de disco

Tutorial de duplicacin de un disco

Introduccin
La duplicacin de disco puede mejorar la recuperacin ininterrumpida en caso de fallo
de un disco. El comando disk mirror duplica un dispositivo de base de datos de SQL
Server, es decir, todas las escrituras en el dispositivo se copian a otro dispositivo fsico.
Si uno de los dispositivos falla, el otro contiene una copia actualizada de todas las
transacciones.
Cuando falla una lectura o escritura en un dispositivo duplicado, SQL Server
"desduplica" el dispositivo defectuoso y muestra mensajes de error. SQL Server
contina ejecutndose sin duplicaciones. Para reiniciar la duplicacin, el administrador
del sistema debe ejecutar el comando disk remirror .

Cmo decidir qu duplicar


Cuando decida duplicar un dispositivo, debe ponderar factores como los costos de
inactividad del sistema, la posible reduccin de rendimiento y el costo de los soportes
de almacenamiento. El estudio de dichos factores le ayudar a decidir qu duplicar: slo
los diarios de transacciones, todos los dispositivos de un servidor o ciertos dispositivos
seleccionados.
Note: No es posible duplicar un dispositivo de volcado.
La Figura 7-1 ilustra la "configuracin mnima de garanta" para la recuperacin de las
bases de datos en caso de fallo del hardware. El dispositivo master y una duplicacin
del diario de transacciones de la base de datos de usuario se almacenan en particiones
aparte en un solo disco fsico. El otro disco contiene la base de datos del usuario y su
diario de transacciones en dos particiones distintas.
Si falla el disco que contiene la base de datos de usuario, puede restaurarla en otro disco
a partir de las copias de seguridad y del diario de transacciones duplicado.
Si falla el disco que contiene el dispositivo master, puede restaurarlo desde un volcado
de la base de datos master y volver a duplicar el diario de transacciones de la base de
datos de usuario.
Figure 7-3: Duplicacin de disco usando un mnimo de espacio fsico
Esta configuracin minimiza la cantidad de espacio de almacenamiento requerida.
Adems, permite la recuperacin completa, aunque est daado el disco con la base de
datos de usuario y el diario de transacciones, porque la duplicacin del diario de
transacciones garantiza su recuperacin total. Sin embargo, esta configuracin no
permite la recuperacin ininterrumpida porque las bases de datos master y de usuario no
estn duplicadas y deben recuperarse a partir de las copias de seguridad.
La Figura 7-2 representa otra configuracin de duplicacin. En este caso, el dispositivo
master, las bases de datos de usuario y el diario de transacciones estn almacenados en

particiones diferentes del mismo dispositivo fsico y todos estn duplicados en un


segundo dispositivo fsico.
La configuracin mostrada en la Figura 7-2 permite la recuperacin ininterrumpida de
un fallo en el hardware. Las copias de trabajo de las bases de datos master y de usuario,
y del diario en el disco primario, estn duplicadas, y el fallo de alguno de los discos no
interrumpir el trabajo de los usuarios de SQL Server.
Figure 7-4: Duplicacin de discos para una recuperacin rpida
Con esta configuracin, todos los datos se escriben dos veces, una vez en el disco
primario y otra vez en la duplicacin. Las aplicaciones que implican muchas escrituras
pueden ser ms lentas con duplicacin de discos que sin duplicacin.
La Figura 7-3 ilustra otra configuracin con un alto nivel de redundancia. Los tres
dispositivos de base de datos estn duplicados, pero la configuracin utiliza cuatros
discos en lugar de dos. Esta configuracin acelera el rendimiento durante las
transacciones de escritura porque el diario de transacciones de la base de datos est
almacenado en un dispositivo diferente al de las bases de datos de usuario, y el sistema
puede tener acceso a ambos con menos desplazamiento de los cabezales del disco.
Figure 7-5: Duplicacin de discos: diarios de transacciones en un disco aparte
En resumen, estos tres ejemplos implican diferentes consideraciones de costo y
rendimiento:
1. Velocidad de recuperacin . Es posible lograr la recuperacin ininterrumpida
cuando las bases de datos master y de usuario (incluidos los diarios) estn
duplicadas y pueden recuperarse sin necesidad de volver a cargar los diarios de
transacciones.
2. Espacio de almacenamiento . La recuperacin inmediata requiere una
redundancia completa (todas las bases de datos y diarios duplicados), lo cual
consume espacio de disco.
3. Impacto sobre el rendimiento . La duplicacin de las bases de datos de usuario
(como en las Figura 7-2 y Figura 7-3) aumenta el tiempo necesario para escribir
transacciones en ambos discos.

Condiciones que no inhabilitan la duplicacin


SQL Server inhabilita una duplicacin slo cuando encuentra un error de E/S en un
dispositivo duplicado. Por ejemplo, si SQL Server intenta escribir en un bloque
defectuoso del disco, el error resultante inhabilita la duplicacin del dispositivo. Sin
embargo, el proceso contina sin interrupcin en la duplicacin no afectada.
Las situaciones siguientes no inhabilitan una duplicacin:

Un bloque no usado de un dispositivo es defectuoso. SQL Server no detecta un


error de E/S ni inhabilita la duplicacin hasta que tenga acceso al bloque
defectuoso.

Se sustituyen los datos de un dispositivo. Esto puede suceder si un dispositivo


duplicado est montado como sistema de archivos UNIX, y UNIX escribe sobre
los datos de SQL Server. Esto corrompe la base de datos, pero no inhabilita la
duplicacin, ya que SQL Server no encontrar un error de E/S.
Se escriben datos incorrectos tanto en el dispositivo primario como en el
secundario.
Se cambian los permisos de archivo en un dispositivo activo. Algunos
administradores del sistema pueden tratar de hacer la duplicacin de disco
cambiando los permisos en un dispositivo, esperando provocar el fallo de E/S y
desduplicar el otro dispositivo. Pero el sistema operativo UNIX no verifica los
permisos de un dispositivo despus de abrirlo, por lo que el fallo de E/S no se
produce hasta la prxima vez que se inicie el dispositivo.

La duplicacin de disco no est diseada para detectar o impedir la corrupcin de las


bases de datos. Algunas de las posibilidades descritas pueden provocar la corrupcin de
datos, por lo que conviene realizar verificaciones de consistencia peridicas, como dbcc
checkalloc y dbcc checkdb , en todas las bases de datos. Consulte el Captulo 17,
"Verificacin de la consistencia de las bases de datos", para obtener una explicacin de
estos comandos.

Comandos de duplicacin de disco


Los comandos disk mirror , disk unmirror y disk remirror controlan la duplicacin
de discos. Todos pueden ejecutarse mientras los dispositivos estn en uso, lo cual
permite comenzar o interrumpir la duplicacin de dispositivos mientras se usan las
bases de datos.
Note: Los comandos disk mirror , disk unmirror y disk remirror alteran la tabla
sysdevices de la base de datos master . Despus de ejecutar cualquiera de estos
comandos, vuelque la base de datos master para asegurar la recuperacin en caso de que
master resultase daada.
Inicializacin de duplicaciones
El comando disk mirror comienza la duplicacin de disco. No inicialize el dispositivo
de duplicacin con disk init . Un dispositivo de base de datos y su duplicado
constituyen un solo dispositivo lgico. El nombre de la duplicacin se aade en la
columna mirrorname de la tabla sysdevices .
Note: Para retener el uso de E/S asincrnica, duplique siempre los dispositivos capaces
de E/S asincrnica en otros dispositivos que tambin tengan esa capacidad. En la
mayora de los casos, esto implica la duplicacin de dispositivos en bruto en
dispositivos en bruto, y de archivos del sistema operativo en archivos del sistema
operativo.
Si el sistema operativo no puede realizar operaciones de E/S asincrnica en los archivos,
la duplicacin de un dispositivo en bruto en un archivo normal produce un mensaje de
error. La duplicacin de un archivo normal en un dispositivo en bruto funcionar, pero
no utilizar E/S asincrnica.

La siguiente es la sintaxis de disk mirror :


disk mirror
name =
"device_name " ,
mirror =
"physicalname "
[ , writes = { serial | noserial }]
[ , contiguous ]
(Slo
para

OpenVMS)

El device_name es el nombre del dispositivo que se desea duplicar, tal y como est
registrado en sysdevices.name (por disk init ). El physicalname es una ruta de acceso
completa para el disco de duplicacin, que an no est inicializado. No puede ser un
archivo existente del sistema operativo.
En sistemas que permiten operaciones de E/S asincrnica, la opcin writes permite
especificar si las escrituras deben terminar en el primer dispositivo antes de que
comiencen en el segundo ( serial ), o si ambas peticiones de E/S se van a poner en la
cola de inmediato, una en cada lado de la duplicacin ( noserial ). En cualquier caso, si
una escritura no puede terminarse, el error de E/S hace desduplicar el dispositivo
defectuoso.
El tipo de escritura serial es el predeterminado. Las escrituras al dispositivo ocurren
consecutivamente, es decir, la primera termina antes de que la segunda comience. Las
escrituras tipo s erial proporcionan proteccin en caso de cortes elctricos: una escritura
puede estar truncada, pero no ambas. Las escrituras tipo s erial suelen ser ms lentas
que las noserial .
Los usuarios de OpenVMS deben consultar el Manual de Referencia de SQL Server
para obtener una explicacin de la opcin contiguous .
En el ejemplo siguiente, tranlog es el nombre lgico de un dispositivo en bruto. El
dispositivo tranlog se inicializ con disk init y se est usando para el diario de
transacciones (como en create database ... log on tranlog ). El comando siguiente
duplica el dispositivo de diario de transacciones:
disk mirror
name
=
"tranlog",
mirror = "/dev/rxy1e"

Efectos sobre las tablas del sistema


El dispositivo de base de datos que usted desea duplicar ya se habr inicializado con
disk init . El physicalname que proporciona a disk mirror se aade a la fila existente
de sysdevices en la columna mirrorname y los bits de s tatus se actualizan para reflejar
la configuracin elegida. La Tabla 6-1 de la pgina 6-7 describe los bits de estado.
Desduplicacin de un dispositivo
La duplicacin de un disco se desactiva automticamente cuando falla uno de los dos
dispositivos fsicos.
Utilice el comando disk unmirror para detener el proceso de duplicacin cuando sea
necesario hacer el mantenimiento del hardware o cuando deba cambiarse un dispositivo.

disk unmirror
name = " device_name "
[, side = { "primary" | secondary }]
[, mode = { retain | remove }]

La opcin side del comando disk unmirror permite especificar qu lado desactivar de
la duplicacin. primary (entre comillas) es el dispositivo mencionado en la columna
name de sysdevices ; secondary (no son necesarias las comillas) es el dispositivo de la
columna mirrorname de sysdevices . secondary es el valor predeterminado.
La opcin mode indica si el proceso de desduplicacin debe ser temporal ( retain ) o
permanente ( remove ). retain es el valor predeterminado.
Efectos sobre las tablas del sistema
La opcin mode cambia la columna status de sysdevices para indicar que la duplicacin
fue inhabilitada (consulte la Tabla 6-1pgina 6-7). Sus efectos sobre las columnas
phyname y mirrorname de sysdevices dependen tambin del argumento side , como se
muestra en la Tabla 7-1
Tabla 7-1: Efectos de las opciones mode y side del comando disk mirror
side
primary
El nombre de mirrorname se mueve a
mode remove phyname y mirrorname se define como
nulo; cambia status .
retain

secondary
El nombre de mirrorname
se quita; cambia status .

Los nombres no cambian; status se cambia para


indicar qu dispositivo se est desactivando.

Este ejemplo suspende el funcionamiento del dispositivo primario:


disk unmirror
name = "tranlog",
side = primary

Reinicio de las duplicaciones


Utilice disk remirror para reiniciar un proceso de duplicacin suspendido por el fallo
de un dispositivo o mediante disk unmirror . La sintaxis es:
disk remirror
name = " device_name

"

Este comando copia el dispositivo de base de datos a su duplicado.


waitfor mirrorexit
Puesto que el fallo de un disco puede poner en peligro la seguridad del sistema, el
comando waitfor mirrorexit puede incluirse en una aplicacin para realizar ciertas
tareas cuando un disco se desduplica.

begin
waitfor mirrorexit
commands to be executed
end

Los comandos dependen de las aplicaciones. Quiz desee aadir ciertas advertencias en
las aplicaciones que realicen actualizaciones, o utilizar sp_dboption para que ciertas
bases de datos sean de slo lectura si el disco se desduplica.
Note: SQL Server sabe que un dispositivo se ha desduplicado slo cuando intenta la
E/S en el dispositivo duplicado. En las bases de datos duplicadas, esto ocurre en un
punto de verificacin o cuando la memoria intermedia de SQL Server debe escribirse en
el disco. En los diarios duplicados, la E/S se produce cuando un proceso escribe en el
diario, incluyendo cualquier transaccin consignada que realice modificaciones de
datos, un punto de verificacin o un volcado de la base de datos.
waitfor mirrorexit (y los mensajes de error que se imprimen en la consola y el diario
de errores cuando se produce un fallo en la duplicacin) son activados slo por estos
eventos.
Duplicacin del dispositivo master
Si decide duplicar el dispositivo que contiene la base de datos master , necesitar editar
el archivo de ejecucin del servidor para su SQL Server, de forma que el dispositivo
duplicado se inicie cuando el servidor arranca.
En UNIX, aada el indicador -r y el nombre del duplicado:
dataserver -d /dev/rsd1f -r /dev/rs0e -e/sybase/install/errorlog

En OpenVMS, aada el nombre del duplicado:


dataserver /device=(DUA0:[dbdevices]master.dat, DUB1:[dbmirrors]mirror.dat) /errorfile=sybase_system:[sybase.install]errorlog

Para ver ejemplos de la plataforma PC, consulte la Gu a de instalacin y configuracin


de SQL Server .

Tutorial de duplicacin de un disco


Los pasos siguientes ilustran el uso de los comandos de duplicacin y su efecto sobre
ciertas columnas de master..sysdevices .

Paso 1
Inicialice un nuevo dispositivo de prueba usando el comando:
disk init name = "test",
physname = "/usr/sybase/test.dat",
size=5120, vdevno=3

Esto inserta los valores siguientes en las columnas de master..sysdevices :


name
test

phyname
/usr/sybase/test.dat

mirrorname
NULL

status
2

El estado 2 indica que el dispositivo es un disco fsico. Dado que el bit duplicado del
dispositivo (64) est desactivado y que la columna mirrorname es nula, este dispositivo
no est duplicado.

Paso 2
Duplique el dispositivo de prueba usando el comando:
disk mirror name = "test",
mirror = "/usr/sybase/test.mir"

Esto cambia las columnas de master..sysdevices a:


name
test

phyname
/usr/sybase/test.dat

mirrorname
/usr/sybase/test.mir

status
738

El estado 738 indica que la duplicacin est activa actualmente (512) en este
dispositivo. Las lecturas estn duplicadas (128) y las escrituras estn duplicadas (64) y
en serie (32). El dispositivo es un disco fsico (2).

Paso 3
Inhabilite el dispositivo de duplicacin (el secundario), pero retenga esa duplicacin:
disk unmirror name = "test",
side = secondary, mode = retain
name phyname
mirrorname
test /usr/sybase/test.dat /usr/sybase/test.mir

status
2274

El estado 2274 indica que el dispositivo de duplicacin se ha retenido (2048) pero la


duplicacin fue inhabilitada (bit 512 desactivado), y slo se utiliza el dispositivo
primario (bit 256 desactivado). Las lecturas estn duplicadas (128), y las escrituras estn
duplicadas (64) y en serie (32). El dispositivo es un disco fsico (2).

Paso 4
Vuelva a duplicar el dispositivo de prueba:
disk remirror name = "test"

Esto restaura las columnas de master..sysdevices a:


name
test

phyname
/usr/sybase/test.dat

mirrorname
/usr/sybase/test.mir

status
738

El estado 738 indica que la duplicacin est activa actualmente (512) en este
dispositivo. Las lecturas estn duplicadas (128), y las escrituras estn duplicadas (64) y
en serie (32). El dispositivo es un disco fsico (2).

Paso 5
Inhabilite el dispositivo de prueba (el primario), pero retenga esa duplicacin:
disk unmirror name = "test",
side = "primary", mode = retain

Esto cambia las columnas de master..sysdevices a:


name
test

phyname
/usr/sybase/test.dat

mirrorname
status
/usr/sybase/test.mir 482

El estado 482 indica que la duplicacin fue inhabilitada (bit 512 desactivado) y que se
utiliza slo el dispositivo secundario (256). Las lecturas estn duplicadas (128), y las
escrituras estn duplicadas (64) y en serie (32). El dispositivo es un disco fsico (2).

Paso 6
Vuelva a duplicar el dispositivo de prueba:
disk remirror name = "test"

Esto restaura las columnas de master..sysdevices a:


name
test

phyname
/usr/sybase/test.dat

mirrorname
/usr/sybase/test.mir

status
738

El estado 738 indica que la duplicacin est activa actualmente (512) en este
dispositivo. Las lecturas estn duplicadas (128), y las escrituras estn duplicadas (64) y
en serie (32). El dispositivo es un disco fsico (2).

Paso 7
Inhabilite el dispositivo de prueba (el primario), y quite esa duplicacin:
disk unmirror name = "test", side = "primary",
mode = remove

Esto cambia las columnas de master..sysdevices a:


name
test

phyname
/usr/sybase/test.mir

mirrorname
NULL

status
2

El estado 2 indica que se trata de dispositivo fsico. Puesto que la columna mirrorname
es nula, la duplicacin no est activada para este dispositivo.

Paso 8

Quite el dispositivo de prueba para terminar el tutorial:


sp_dropdevice test

Esto quita de master..sysdevices todas las entradas correspondientes al dispositivo de


prueba.

Chapter 8

Configuracin de la memoria
Este captulo describe cmo SQL Server utiliza la memoria y explica cmo maximizar
la memoria disponible para SQL Server en su sistema. Tambin explica cmo divide
SQL Server la parte que el usuario configura de la memoria de SQL Server en cach de
procedimientos y cach de datos. El captulo contiene estas secciones:

Maximizacin de la memoria de SQL Server


Cmo utiliza la memoria SQL Server
Estimacin de la sobrecarga de SQL Server
Determinacin del espacio total de cach desde el diario de errores

Despus de seguir las instrucciones de este captulo, consulte el Captulo 9,


"Configuracin de cachs de datos", para dividir el cach de datos en cachs con
nombre y vincular objetos a los cachs.

Maximizacin de la memoria de SQL Server


Cuanto ms memoria haya disponible, ms recursos tendr SQL Server para las
memorias intermedias internas y los cachs. Disponer de suficiente memoria para los
cachs reduce el nmero de veces que SQL Server tiene que leer informacin esttica o
planes de procedimientos compilados del disco.
No hay disminucin del rendimiento por configurar SQL Server para que utilice el
mximo de memoria disponible en la computadora. Sin embargo, asegrese de que
evala otras necesidades de memoria en el sistema y de que SQL Server utiliza slo el
resto de la memoria disponible. Es posible que SQL Server no arranque si no puede
adquirir la memoria para la cual est configurado.
Para determinar la cantidad mxima de memoria disponible para SQL Server en su
sistema:
1. Determine la cantidad total de memoria fsica instalada en su computadora.
2. Reste la memoria que precisa el sistema operativo del total de la memoria fsica.
3. Si la mquina no est dedicada a SQL Server, reste los requisitos de memoria de
otros usos del sistema tambin. Por ejemplo, reste la memoria que utilizarn las
aplicaciones cliente que se ejecutarn en la mquina de SQL Server. Los
sistemas de ventanas, como X Windows, requieren mucha memoria y pueden
interferir con el rendimiento de SQL Server cuando se utilizan en la misma
mquina.

4. Reste la memoria que desea asignar para el parmetro de configuracin


additional network memory . Esto se explica en "additional network memory".
La memoria que queda despus de restar los requisitos del sistema operativo, de otras
aplicaciones y de additional network memory , es la memoria total disponible para
SQL Server. Configure SQL Server para que utilice esa memoria restante definiendo el
parmetro total memory con ese valor. Consulte "total memory" para obtener detalles
sobre la definicin de total memory y otros parmetros de configuracin.
Considere la posibilidad de cambiar el valor del parmetro de configuracin t otal
memory :

Cuando cambie la cantidad de RAM en la mquina


Cuando cambie el tipo de uso de la mquina
Si asigna memoria a additional network memory para SQL Server

Si SQL Server no puede arrancar


Cuando se inicia, SQL Server toma tanta memoria especificada como el sistema lo
permita. Si esa cantidad no est disponible, SQL Server toma tanta como puede. Si el
tamao configurado es mayor que la memoria disponible, SQL Server no puede
iniciarse.
Note: Si el sistema operativo permite la asignacin dinmica de memoria durante la
vida de un proceso, puede ser que asigne memoria adicional a SQL Server despus de
haberse iniciado.
Si SQL Server no se inicia por esta razn, reduzca los requisitos de memoria de SQL
Server editando el valor del parmetro total memory (u otros parmetros que utilicen
cantidades significativas de memoria) en el archivo de configuracin del servidor.
Luego, reinicie SQL Server con los nuevos valores. Consulte el Captulo 11,
"Definicin de los parmetros de configuracin", para obtener informacin sobre el uso
de los archivos de configuracin .

Cmo utiliza la memoria SQL Server


El valor de ejecucin del parmetro total memory especifica la cantidad total de
memoria que SQL Server requiere al iniciarse. Por ejemplo, si el parmetro total
memory tiene un valor de 10.000 pginas, SQL Server intenta obtener 19,5MB (10.000
* 2048) de memoria al iniciarse. Si esa cantidad no est disponible, SQL Server no
arrancar.
Cuando SQL Server se inicia, asigna memoria para:

El cdigo ejecutable de SQL Server


La memoria esttica utilizada por SQL Server
La memoria de los parmetros configurables por el usuario
Las estructuras de datos que no se almacenan en cach

El resto de la memoria se divide entre estos cachs de SQL Server:

Cach de datos
Cach de procedimientos (en funcin del valor del parmetro procedure cache
percent )

El tamao de los cachs de datos y de procedimientos tiene un efecto significativo sobre


el rendimiento general. En un sistema de desarrollo, normalmente incrementar la
cantidad de memoria asignada al cach de procedimientos. En un sistema de
produccin, sin embargo, tal vez se desee reducir el tamao de ese cach para obtener
ms memoria para el cach de datos. Consulte el Chapter 15, "Memory Use and
Performance," en la Gua de M ejora de R endimiento y A finacin para obtener
recomendaciones sobre la optimizacin del tamao del cach de procedimientos.
Note: Cuando compila procedimientos almacenados, SQL Server versin 11.0 requiere
memoria adicional para espacio de borrador. Aunque esta memoria se libera tras la
compilacin, quiz sea necesario definir el parmetro de configuracin procedure
cache percent con un valor mayor que en versiones anteriores de SQL Server.
Para determinar la memoria disponible para los cachs, se puede estimar la cantidad de
sobrecarga requerida para SQL Server y restarla de total memory . O bien, se puede
calcular directamente el tamao de los cachs mediante los mensajes de arranque que se
escriben en el archivo del diario de errores.

Estimacin de la sobrecarga de SQL Server


En esta seccin se explica cmo estimar el tamao total del cach restando la sobrecarga
de SQL Server a total memory . Se emplea una configuracin de ejemplo de total
memory con 7500 pginas (14,65MB):
total memory= (7500 pginas) * (1MB / 512 pginas) = 14,65MB
La Figura 8-1 muestra cmo se asigna la memoria en SQL Server:
Figure 8-6: Ejemplo de asignacin de memoria
Cdigo ejecutable de SQL Server
El tamao del cdigo ejecutable de SQL Server debe restarse a la memoria total
disponible para el proceso de SQL Server. El tamao del cdigo ejecutable vara
dependiendo de la plataforma y de la versin, pero en general oscila entre 3MB y 4MB.
Para determinar el tamao del ejecutable de SQL Server en su plataforma, utilice
sp_configure , que mostrar el valor del parmetro executable code size . Consulte
"executable code size" para obtener ms informacin.
Este ejemplo utiliza un tamao de cdigo de 3,26MB. Restando esta cantidad a total
memory , quedan 11,39MB.
Estructuras internas
Despus de haber restado el tamao del ejecutable, se asigna una cantidad adicional de
memoria a las estructuras internas de SQL Server. Estas estructuras consisten del kernel

y las estructuras del servidor, pero es ms sencillo imaginarlas como una combinacin
de sobrecarga esttica y de memoria para parmetros configurables.
Sobrecarga esttica
SQL Server asigna una cierta cantidad de memoria como sobrecarga esttica. Esta
cantidad no se ve afectada por parmetros configurables por el usuario y normalmente
vara entre 2,2MB y 3,25MB. Reste la memoria esttica al total de memoria cuando
estime la memoria disponible para los cachs de su sistema.
En el ejemplo actual, SQL Server utiliza 3MB para la sobrecarga esttica. Restndola a
la memoria restante, quedan 8,39MB.
Memoria para parmetros configurables por el usuario
SQL Server tambin asigna memoria para los parmetros configurables por el usuario.
La cantidad total de memoria necesaria depende del tipo de parmetro de configuracin
y del valor que tenga. El Captulo 11, "Definicin de los parmetros de configuracin",
contiene una descripcin detallada de todos los parmetros de configuracin y la
memoria que requiere cada uno.
La Tabla 8-1 contiene una lista de los parmetros que deben tenerse en cuenta al estimar
la memoria que SQL Server usa. Esta lista incluye los parmetros que utilizan
cantidades significativas de memoria, pero no los que estn relacionados con llamadas
de procedimientos remotos. Para ms informacin sobre el uso de memoria del
parmetro, consulte la pgina indicada:
Tabla 8-1: Parmetros para estimar la memoria de SQL Server
Parmetro

Consulte la pgina

number of user connections


number of open databases
number of devices
number of open objects
number of locks
Los parmetros configurables por el usuario no enumerados en la Tabla 8-1 suelen
requerir cantidades ms pequeas de memoria. Para lograr la estimacin ms exacta de
la memoria utilizada por los parmetros, emplee sp_configure sin opciones, que
mostrar la lista completa de parmetros con la cantidad de memoria usada por cada
uno. Sume los valores de la columna "Memory Used" de la salida de sp_configure para
establecer la memoria total usada por los parmetros de configuracin. Consulte el
Captulo 11, "Definicin de los parmetros de configuracin", para obtener informacin
sobre el uso de sp_configure .
Este ejemplo usa un valor total de 3MB para los parmetros configurables. Restando
3MB de sobrecarga configurable a la memoria restante de 8,39MB, quedan 5,39MB
para el espacio total de cach.

Cachs de datos y de procedimientos


La proporcin de la memoria restante (5,39MB en el ejemplo anterior) que va al cach
de procedimientos depende del valor del parmetro de configuracin procedure cache
percent . Un valor de 20 indica que el 20 por ciento del total de cach, se utiliza para el
cach de procedimientos, y que el 80 por ciento restante se destina al cach de datos.
Por lo tanto, con un valor de procedure cache percent de 20, esta estimacin resultara
en los valores siguientes para los cachs de datos y de procedimientos:

Cach de datos = (5,39) * (0,8) = 4,31MB (o 2207 pginas)


Cach de procedimientos = (5,39) * (0,2) = 1,08MB (o 552 pginas)

Normalmente, la cantidad del cach de procedimientos es ligeramente mayor que la


indicada en este clculo porque parte del 6 por ciento de sobrecarga que no se emplea se
aade al cach de procedimientos.
Efectos del aumento de memoria
La cantidad de sobrecarga de SQL Server no depende de la cantidad de memoria que
tenga disponible. Se puede aadir ms memoria a SQL Server aumentando el valor del
parmetro total memory . La cantidad de memoria agregada se aade directamente al
espacio total de cach. Cercirese de no aumentar la memoria de SQL Server ms all
de la memoria fsica disponible, o el servidor comenzar a registrar un fallo de pgina.
Por ejemplo, si aumenta el parmetro total memory de 7500 pginas a 9548 en el
"Ejemplo de asignacin de memoria", los cachs de datos y de procedimientos
aumentan en 2048 pginas (4MB).

Determinacin del espacio total de cach desde el diario de errores


Otra forma de determinar cmo SQL Server utiliza la memoria es examinar los
mensajes relacionados con la memoria escritos en el diario de errores cuando se inicia
SQL Server. Estos mensajes indican exactamente cunto cach de datos y de
procedimientos se asign, as como cuntos procedimientos u otros objetos compilados
pueden residir en el cach en un momento dado.
Estos mensajes proporcionan la informacin ms exacta sobre uso del cach en SQL
Server. Como se explicaba antes, la cantidad de memoria asignada a los cachs de datos
y de procedimientos depende del valor de ejecucin del parmetro procedure cache
percent .
Los mensajes relacionados con la memoria de un SQL Server con un parmetro total
memory de 7500 son:
server: Number of proc buffers allocated: 556
server: Number of blocks left for proc headers: 629.
server: Memory allocated for the default data cache: 4144 Kb

Cada uno de estos mensajes del diario de errores se describe a continuacin.

Mensajes del cach de procedimientos


server: Number of proc buffers allocated: 556

Este mensaje indica el nmero total de memorias intermedias asignadas al cach de


procedimientos.
server: Number of blocks left for proc headers:629.

Este mensaje indica el nmero total de encabezados disponibles para su uso en el cach
de procedimientos.
proc buffer
Una proc buffer (memoria intermedia de procedimientos) es una estructura de datos
usada para manejar objetos compilados (cualquier procedimiento almacenado,
disparador, valor predeterminado, regla, restriccin de verificacin o vista) en el cach
de procedimientos. Con cada copia de objeto con nombre almacenado en el cach de
procedimientos, se utiliza una memoria intermedia de procedimientos. Cuando se inicia
SQL Server, determina el nmero de memorias intermedias de procedimientos
requeridas y multiplica ese valor por el tamao de una sola memoria intermedia de
procedimientos (76 bytes) para hallar la cantidad total de memoria necesaria. Entonces,
asigna esa cantidad de memoria, como un arreglo de memorias intermedias de
procedimiento. A diferencia de algunas estructuras de datos, las memorias intermedias
de procedimientos pueden abarcar varias pginas.
proc header
Un proc header (encabezado de procedimiento) es donde se almacena un objeto
compilado (por ejemplo, un procedimiento almacenado). Dependiendo del tamao del
objeto que se almacene, pueden ser necesarios uno o ms de estos encabezados. El
nmero total de objetos compilados que pueden almacenarse en el cach de
procedimientos est limitado por el nmero de encabezados o de memorias intermedias
de procedimiento disponibles, cualquiera sea el menor. En este ejemplo, no se permiten
ms de 629 objetos compilados. Dado que los procedimientos almacenados suelen usar
ms de una pgina, el valor prctico de este nmero puede ser an menor.
El tamao total del cach de procedimientos es el total combinado de memoria asignada
a las memorias intermedias de procedimientos (redondeado al siguiente lmite de
pgina) ms la memoria asignada a los encabezados de procedimientos. En este
ejemplo, hay 556 memorias intermedias de procedimientos asignadas, por lo tanto se
utilizan 21 pginas para dichas memorias:
(556 memorias intermedias) * (76 bytes/memoria intermedia) / (2048 bytes/pgina) =
21 pginas
Sumado a las 629 pginas asignadas a los encabezados de procedimientos, la cantidad
total de memoria reservada para el cach de procedimientos es 650 pginas de 2K
(1,27MB).

Mensajes del cach de datos


server: Memory allocated for the default data cache: 4144 Kb

Este mensaje indica cuntas memorias intermedias de pgina estn asignadas al cach
de datos predeterminado. En este ejemplo, 2072 pginas (4,05MB) estn dedicadas al
cach predeterminado.
Si configura cachs con nombre, el diario de errores contendr mensajes adicionales
para cada cach. Para determinar el tamao total del cach, puede sumar los tamaos
asignados a todo el cach con nombre que hay en el sistema. O bien, utilice el
procedimiento sp_helpcache para obtener informacin detallada sobre cachs
individuales, objetos vinculados a esos cachs y sobrecarga asociada con los diferentes
tamaos de cach. Consulte "Informacin sobre vinculacin de cachs" para obtener
ms informacin.

Chapter 9

Configuracin de cachs de datos


El cach de datos en SQL Server
El cach de datos contiene los datos, ndices y pginas de diarios que SQL Server est
usando actualmente, as como los que ha usado recientemente. Cuando se instala por
primera vez, SQL Server tiene un solo cach de datos predeterminado que se utiliza
para toda la actividad de diarios, datos e ndices. Este cach puede dividirse creando
cachs de datos con nombre. Adems, dentro de los cachs con nombre y del cach
predeterminado, es posible crear bancos para realizar E/S de gran tamao. Despus se
puede vincular una base de datos, tabla (incluida la tabla s yslogs ), ndice, o cadena de
pginas de texto o de imagen a un cach de datos con nombre.
Los tamaos grandes de E/S permiten que SQL Server realice recuperaciones previas de
datos cuando el optimizador de consultas determina que la recuperacin previa mejorar
el rendimiento. Por ejemplo, un tamao de E/S de 16K implica que SQL Server puede
leer todo un sector, u ocho pginas de 2K, de una sola vez, en lugar de realizar ocho E/S
distintas. Consulte el Chapter 7, "The SQL Server Query Optimizer," de la Gua de
Mejora de Rendimiento y Afinacin para obtener detalles sobre el optimizador.
El proceso de configurar cachs de datos con nombre divide el cach predeterminado en
estructuras separadas. Los cachs de datos con nombre creados por usted slo pueden
ser utilizados por bases de datos u objetos que se vinculen a ellos explcitamente. Los
objetos que no se vinculen explcitamente usan el cach de datos predeterminado.
SQL Server proporciona cachs de datos configurables por el usuario para mejorar el
rendimiento, en especial en servidores multiprocesador. En "Named Data Caches and
Performance" de la Gua de Mejora de Rendimiento y Afinacin , hay una explicacin
completa de las formas en que la configuracin de cachs de datos con nombre puede
mejorar el rendimiento.

La Figura 9-1 muestra un cach de datos con el cach predeterminado y dos cachs con
nombre. El cach predeterminado contiene dos bancos, uno de 2K y uno de 16K. El
cach User_Table_Cache tiene un banco de 2K y otro de 16K. El Log_Cache tiene un
banco de 2K y otro de 4K.
Figure 9-7: Cach de datos con cach predeterminado y dos cachs con nombre

Comandos de configuracin del cach


La Tabla 9-1 enumera los comandos para configurar cachs de datos con nombre,
vincular y desvincular objetos a los cachs e informar sobre los vnculos de los cachs.
Tambin enumera procedimientos para comprobar el tamao de los objetos de base de
datos, y comandos que controlan el uso del cach a nivel de objeto, comando o sesin.
Tabla 9-1: Procedimientos y comandos para usar cachs con nombre
Comando
sp_cacheconfig

Funcin
Crea u omite cachs con nombre y cambia su tamao o tipo.

sp_poolconfig

Crea y omite bancos de E/S y cambia su tamao.

sp_bindcache

Vincula bases de datos o sus objetos a un cach.

Desvincula ciertos objetos o bases de datos de un cach.


sp_unbindcache
sp_unbindcache_all Desvincula todos los objetos vinculados a cierto cach.
sp_helpcache

Muestra informacin de resumen sobre los cachs de datos y


enumera las bases de datos y objetos que estn vinculados a los
cachs.

sp_cachestrategy

Indica las estrategias de cach definidas para una tabla o ndice, e


inhabilita o vuelve a habilitar el recobro previo o la estrategia de
MRU.

sp_logiosize

Cambia el tamao predeterminado de E/S del diario.

sp_spaceused

Proporciona informacin sobre el tamao de las tablas e ndices, o


sobre el espacio usado en una base de datos.

sp_estspace

Estima el tamao de tablas e ndices, dado el nmero de filas que


contendr la tabla.

sp_help

Muestra a qu cach est vinculada una tabla.

sp_helpindex

Muestra a qu cach est vinculado un ndice.

sp_helpdb

Muestra a qu cach est vinculada una base de datos.

set showplan on

Informa el tamao de E/S y las estrategias de uso del cach para


una consulta.

set statistics io on

Indica el nmero de lecturas efectuadas para una consulta.

set prefetch [on


|off]

Habilita o inhabilita el recobro previo para una sesin individual.

select...
(prefetch...lru |
mru)

Fuerza que el servidor utilice el tamao de E/S o la estrategia de


sustitucin de MRU especificadas.

Adems de los comandos para configurar interactivamente los cachs de datos con
nombre, tambin puede emplearse el archivo de configuracin. Consulte "Configuracin
de los cachs de datos con el archivo de configuracin".

Informacin sobre cachs de datos


El procedimiento del sistema sp_cacheconfig crea y configura cachs con nombre. Para
ver el tamao del cach predeterminado, escriba:
sp_cacheconfig "default data cache"
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------default data cache Active
Default
0.00 Mb
59.36 Mb
------------ -----------Total
0.00 Mb
59.36 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 0.00 Mb,
Run Size: 59.36 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
59.36 Mb

La informacin resumida de cada cach se imprime en un bloque al principio del


informe y termina con el tamao total de todos los cachs configurados. Luego, por
cada cach, hay un bloque de informacin con la configuracin de los bancos de
memoria en el cach.
Los significados de las columnas del bloque de la salida que describen los cachs son:

"Cache Name" da el nombre del cach.


"Status" indica si el cach est activo. Los valores posibles son:
o "Pend/Act": el cach se acaba de crear y estar activo despus de
reiniciar el sistema.
o "Active": el cach est activo actualmente.
o "Pend/Del": el cach est activo, pero ser eliminado la prxima vez que
se reinicie el servidor. El tamao del cach se redefini como 0
interactivamente.
"Type" indica si el cach puede almacenar datos y pginas de diario ("Mixed") o
slo pginas de diario ("Log Only"). Slo el cach predeterminado tiene el tipo
"Default". No es posible cambiar el tipo del cach de datos predeterminado, ni el
tipo de otro cach a "Default".
"Config Value" muestra el tamao que tendr el cach despus de que se reinicie
SQL Server la prxima vez. En este caso, el cach predeterminado no fue
configurado explcitamente, por lo que su tamao es 0.
"Run Value" muestra el tamao que SQL Server est usando. Para el cach
predeterminado, el tamao ser siempre todo el espacio del cach de datos que
no haya sido configurado explcitamente para otros cachs.

El segundo bloque de la salida comienza con dos lneas que describen el cach,
repitiendo la informacin del primer bloque, y contina con datos sobre cada banco del
cach:

"IO Size" muestra el tamao de las memorias intermedias del banco. Cuando se
configura un cach por primera vez, todo el espacio se asigna al banco de 2K.
Los valores vlidos son 2K, 4K, 8K y 16K.
"Wash Size" indica el tamao de lavado del banco. Consulte "Cambio del rea
de lavado para un banco de memoria".
"Config Size" y "Run Size" muestran el tamao configurado y el tamao
actualmente en uso. Estos tamaos varan para el banco de 2K porque no es
posible configurar explcitamente su tamao. Esto puede ser distinto para otros
bancos si se ha intentado mover espacio entre ellos, y parte del espacio no pudo
liberarse.

Una lnea de resumen imprime el tamao total del cach o cachs mostrados.

Configuracin de cachs de datos


Despus de satisfechas las dems necesidades de memoria en SQL Server, el espacio
restante est disponible para el cach de datos. El primer paso en la planificacin de la
configuracin del cach y en la implementacin de cachs es definir el parmetro total
memory . Despus de definirlo y reiniciar SQL Server, puede verse exactamente cunto
espacio hay disponible para los cachs de datos en el servidor. Para una descripcin
general del uso de memoria por parte de SQL Server, consulte el Captulo 8,
"Configuracin de la memoria".
Es posible configurar los cachs de datos de dos formas:

Interactivamente, por medio de sp_cacheconfig y sp_poolconfig


Editando el archivo de configuracin

Las secciones siguientes describen la configuracin del cach mediante sp_cacheconfig


y sp_poolconfig . Consulte "Configuracin de los cachs de datos con el archivo de
configuracin" para obtener informacin sobre la configuracin de cachs mediante el
archivo de configuracin.
Cada vez que ejecute sp_cacheconfig o sp_poolconfig , SQL Server escribe la nueva
informacin de cachs o bancos en el archivo de configuracin y crea una copia de
seguridad de la versin anterior de ese archivo. Un mensaje indicando el nombre del
archivo de copia de seguridad se enva al diario de errores.
La sintaxis para crear un nuevo cach es:
sp_cacheconfig

cache_name

"

size

[P|K|M|G]"

Las unidades de tamao pueden especificarse con "P" para pginas, "K" para kilobytes,
"M" para megabytes o "G" para gigabytes. La unidad predeterminada es "K". El tamao
mximo del cach de datos est limitado slo por la cantidad de memoria disponible en
el sistema.
Este comando configura un cach de 10MB con el nombre pubs_cache :
sp_cacheconfig pubs_cache, "10M"

Dicho comando realiza cambios en las tablas del sistema y escribe los nuevos valores en
el archivo de configuracin, pero no activa el cach. Para que los cambios tengan efecto
es necesario reiniciar SQL Server.
El uso de sp_cacheconfig para ver la configuracin antes de reiniciar el sistema muestra
valores diferentes para "Config" y "Run":
sp_cacheconfig "pubs_cache"
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_cache
Pend/Act Mixed
10.00 Mb
0.00 Mb
------------ -----------Total
10.00 Mb
0.00 Mb

El estado "Pend/Act" de pubs_cache indica que la configuracin de este cach est


pendiente, esperando a que se reinicie el servidor. "Config Value" muestra 10MB,
mientras que "Run Value" muestra un valor 0. Los valores de configuracin y ejecucin
tambin son diferentes cuando se eliminan los cachs o se cambia su tamao.
La parte de la salida que proporciona detalles sobre los bancos no se imprime para los
cachs que no estn activos.
Despus de reiniciar SQL Server, ver esto:
sp_cacheconfig
Cache Name
------------------default data cache
pubs_cache

Status
--------Active
Pend/Act

Type
Config Value Run Value
-------- ------------ -----------Default
0.00 Mb
49.28 Mb
Mixed
10.00 Mb
10.00 Mb
------------ -----------Total
10.00 Mb
59.28 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 0.00 Mb,
Run Size: 49.28 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
49.28 Mb
================================================================
Cache: pubs_cache,
Status: Active,
Type: Mixed
Config Size: 10.00 Mb,
Run Size: 10.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
10.00 Mb

El pubs_cache ya est activo, y todo el espacio se asigna al banco de 2K. El tamao del
cach predeterminado se ha reducido en 10MB. El resto de la diferencia en el tamao
del cach predeterminado y la cantidad total de cach disponible se debe a la variacin
de los valores de la sobrecarga. Consulte "Cmo la sobrecarga afecta al espacio total de
cach" para ver ejemplos.
Antes de reiniciar SQL Server, pueden crearse tantos cachs como se desee. Sin
embargo, para poder configurar los bancos o vincular objetos a los cachs recin
creados, deber reiniciarse SQL Server.

Configuracin explcita del cach predeterminado


Si desea "bloquear" alguna parte del espacio del cach para el cach predeterminado de
datos, puede ejecutar sp_cacheconfig con default data cache y un valor de tamao.
Este comando garantiza que otros comandos de configuracin de cach no reduzcan el
tamao del cach predeterminado a menos de 25MB:
sp_cacheconfig "default data cache", "25M"

Despus de reiniciar el servidor, la columna "Config Value" muestra estos valores:


Cache Name
------------------default data cache
pubs_cache

Status
--------Active
Pend/Act

Type
Config Value Run Value
-------- ------------ -----------Default
25.00 Mb
49.28 Mb
Mixed
10.00 Mb
0.00 Mb
------------ -----------Total
35.00 Mb
49.28 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 0.00 Mb,
Run Size: 49.28 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
49.28 Mb

Este comando define un tamao mnimo para el cach de datos predeterminado. Es


posible cambiar el mnimo, pero no asignar involuntariamente ese espacio a otros
cachs. Con un "Config Value" mnimo definido, el "Run Value" an muestra que el
cach de datos predeterminado tiene asignada toda la memoria no destinada
explcitamente a otros cachs.
Cambio del tipo de cach
Si desea reservar un cach para uso exclusivo del diario de transacciones, cambie el tipo
de cach a "logonly". El ejemplo siguiente crea el cach pubs_log con el tipo "logonly":
sp_cacheconfig pubs_log, "7M", "logonly"

Lo siguiente muestra su estado antes de reiniciarse el servidor:


Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_log
Pend/Act Log Only
7.00 Mb
0.00 Mb
------------ -----------Total
7.00 Mb
0.00 Mb

Un cach existente tipo "mixed" puede cambiarse siempre que no haya objetos no de
diario vinculados al cach:
sp_cacheconfig pubtune_cache, logonly

Note: En entornos con muchas transacciones, SQL Server se desempe mejor con un
banco configurado de 4K para el diario de transacciones. Para obtener un mejor
rendimiento del diario, puede consultar la informacin sobre configuracin de cachs en
"Coincidencia del tamao de E/S del diario para los cachs de diario".

Divisin de un cach de datos en bancos de memoria


Despus de crear un cach de datos, puede dividirlo en bancos de memoria, cada uno
con un tamao de E/S distinto. En cualquier cach, slo puede haber un banco de cada
tamao de E/S.
Cuando SQL Server realiza E/S de gran tamao, se leen varias pginas en el cach al
mismo tiempo. Esas pginas se tratan siempre como una unidad: envejecen en el cach
y se escriben en disco como una unidad.
Predeterminadamente, cuando se crea un cach con nombre, todo su espacio se asigna al
banco de memoria de 2K. La creacin de bancos adicionales reasigna parte del espacio
a otros bancos, reduciendo el tamao del banco de 2K. Por ejemplo, si crea un cach de
datos con 50MB de espacio, todo el espacio se asigna al banco de 2K. Si configura un
banco de 4K con 30MB de espacio en este cach, el banco de 2K se reduce a 20MB.
Figure 9-8: Configuracin de un cach y un banco de memoria de 4K
Una vez que haya creado los bancos, podr desplazar espacio entre ellos. En un cach
con un banco de 2K de 20MB y otro de 4K de 30MB, podr configurar un banco de 16
K, tomando 10MB de espacio del banco de 4K.
Figure 9-9: Desplazamiento de espacio de un banco existente a uno nuevo
Los comandos que desplazan espacio entre los bancos de un cach no requieren
reiniciar SQL Server para entrar en efecto, lo cual permite reconfigurar los bancos para
satisfacer las cargas cambiantes de las aplicaciones, con poco impacto sobre la actividad
del servidor.
Adems de crear bancos en los cachs que usted configura, tambin puede aadir
bancos de memoria para las E/S de hasta 16K al cach predeterminado de datos.
La sintaxis para configurar bancos de memoria es:
sp_poolconfig
cache_name
K" [, " affected_pool K"]

, "

memsize

[P|K|M|G]", "

config_pool

La configuracin de bancos siempre define el config_pool con el tamao especificado


en el comando. Esto siempre afecta a un segundo banco (el affected_pool ), ya que le
quita o da espacio. Si no especifica el affected_pool , el espacio se toma del, o se asigna
al banco de 2K. El tamao mximo de un banco es 512K.
La configuracin de los bancos es dinmica. No es necesario reiniciar SQL Server para
que tenga efecto.
Este ejemplo crea un banco de 7MB con pginas de 16K en el cach de datos
pubs_cache :
sp_poolconfig pubs_cache, "7M", "16K"

Este comando reduce el tamao del banco de memoria de 2K. Para ver la configuracin
actual, ejecute sp_cacheconfig , dando slo el nombre del cach:
sp_cacheconfig pubs_cache
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_cache
Active
Mixed
10.00 Mb
10.00 Mb
------------ -----------Total
10.00 Mb
10.00 Mb
================================================================
Cache: pubs_cache,
Status: Active,
Type: Mixed
Config Size: 10.00 Mb,
Run Size: 10.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
3.00 Mb
16 Kb
1424 Kb
7.00 Mb
7.00 Mb

Tambin puede crear bancos de memoria en el cach predeterminado de datos.


Comenzando con esta configuracin:
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------default data cache Active
Default
25.00 Mb
42.21 Mb
------------ -----------Total
25.00 Mb
42.21 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 25.00 Mb,
Run Size: 42.21 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
42.21 Mb

Este comando crea un banco de 16K:


sp_poolconfig "default data cache", "8M", "16K"

El comando genera esta configuracin y reduce el "Run Size" del banco de 2K:
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------default data cache Active
Default
25.00 Mb
42.21 Mb
------------ -----------Total
25.00 Mb
42.21 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 25.00 Mb,
Run Size: 42.21 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
34.21 Mb
16 Kb
4096 Kb
8.00 Mb
8.00 Mb

No es necesario configurar el tamao del banco de 2K en el cach. Su "Run Size"


representa toda la memoria no configurada explcitamente para otros bancos del cach.

Coincidencia del tamao de E/S del diario para los cachs de diario
Si crea un cach para el diario de transacciones de una base de datos, configure la
mayor parte del espacio de ese cach para que tenga el tamao de E/S del diario. El
tamao predeterminado es 4K, pero SQL Server utiliza E/S de 2K para el diario si no
hay un banco de 4K disponible. El tamao de E/S del diario puede cambiarse con el
procedimiento del sistema sp_logiosize . El tamao de E/S del diario de cada base de
datos se registra en el diario de errores cuando SQL Server se inicia. Tambin se puede
comprobar el tamao de una base de datos usando la base de datos en cuestin y el
comando s p_logiosize sin parmetros.
Este ejemplo configura el cach pubs_log para E/S de 4K:
sp_poolconfig pubs_log, "3M", "4K"

Tambin puede crearse un banco de memoria de 4K en el cach predeterminado de


datos para uso de los diarios de transacciones de las bases de datos que no estn
vinculadas a otro cach:
sp_poolconfig "default data cache", "2.5M", "4K"

Vinculacin de objetos a los cachs


El procedimiento del sistema sp_bindcache asigna una base de datos, tabla, ndice u
objeto de texto/imagen a un cach. Para vincular una entidad a un cach:

Debe existir el cach con nombre y su estado debe ser "Active".


Debe existir la base de datos o el objeto de base de datos.
Para vincular tablas, ndices u objetos, es necesario estar utilizando la base de
datos en que estn almacenados.
Para vincular tablas del sistema, incluida la tabla del diario de transacciones s
yslogs , la base de datos debe estar en modo de usuario nico.
Para vincular una base de datos, es necesario estar utilizando master , que debe
estar en modo de usuario nico.
Para vincular una base de datos, tabla de usuario, ndice, objeto de texto o
imagen a un cach, el tipo del cach debe ser "Mixed". Slo la tabla syslogs
puede vincularse a un cach de tipo "Log Only".
Es necesario poseer el objeto, o ser el propietario de la base de datos o el
administrador del sistema.

Despus de crear los cachs, es necesario reiniciar SQL Server para poder vincularles
objetos. Los vnculos tienen un efecto inmediato y no requieren reiniciar el servidor.
La sintaxis para vincular objetos a los cachs es:
sp_bindcache
cache_name ,
dbname
[,
indexname
| "text only" ] ]

[,[

owner

.]tablename

El nombre del propietario es optativo si la tabla es propiedad del "dbo".


Este comando vincula la tabla titles a pubs_cache :

sp_bindcache

pubs_cache, pubs2, titles

Para vincular un ndice a titles , aada el nombre del ndice como tercer parmetro:
sp_bindcache pubs_cache, pubs2,

titles, titleind

El nombre del propietario no es necesario en los ejemplos anteriores porque la tabla


titles es propiedad del "dbo". Para especificar una tabla poseda por otro usuario, aada
el nombre del propietario. Como el punto en el parmetro es un carcter especial, el
parmetro deber ir entre comillas:
sp_bindcache pubs_cache, pubs2, "fred.sales_east"

Este comando vincula el diario de transacciones syslogs al cach pubs_log :


sp_bindcache pubs_log, pubs2, syslogs

La base de datos debe estar en modo de usuario nico para poder vincular tablas del
sistema, incluido el diario de transacciones, syslogs , a un cach. Utilice el
procedimiento del sistema de master sp_dboption , y un comando use database , y
ejecute checkpoint :
sp_dboption pubs2, single, true
use pubs2
checkpoint

Las columnas text e image de una tabla se almacenan en una estructura de datos aparte
en la base de datos. Para vincular este objeto a un cach, se aade el parmetro "text":
sp_bindcache pubs_cache, pubs2, au_pix,
"text only"

Este comando, ejecutado desde master , vincula la base de datos tempdb a un cach:
sp_bindcache tempdb_cache, tempdb

Es posible volver a vincular objetos sin omitir los vnculos existentes.


Restricciones de vinculacin de cachs
No es posible vincular ni desvincular un objeto de base de datos:

Cuando hay lecturas sucias activas en el objeto


Cuando hay abierto un cursor en el objeto

Adems, SQL Server necesita bloquear el objeto mientras tiene lugar la vinculacin o
desvinculacin, por lo que el comando puede tener un tiempo de respuesta lento.
Consulte "Bloqueo para realizar vinculaciones" para obtener ms informacin.

Informacin sobre vinculacin de cachs

El procedimiento del sistema sp_helpcache muestra informacin sobre un cach y las


entidades que tiene vinculadas, cuando se le proporciona el nombre del cach:
sp_helpcache pubs_cache
Cache Name
Config Size
----------------- ------------pubs_cache
10.00 Mb

Run Size
---------10.00 Mb

Overhead
---------0.53 Mb

-------------- Cache Binding Information: -------------Cache Name


---------pubs_cache
pubs_cache
pubs_cache

Entity Name
----------pubs2.dbo.titles
pubs2.dbo.au_pix
pubs2.dbo.titles

Type
---index
index
table

Index Name
--------titleind
tau_pix

Status
-----V
V
V

Si usa sp_helpcache sin un nombre de cach, se imprimir informacin sobre todos los
cachs configurados en SQL Server y todos los objetos que tienen asociados.
sp_helpcache realiza la comparacin de cadenas por el nombre de cach, usando "%
cachename %". As, por ejemplo, "pubs" coincide con "pubs_cache" y "pubs_log".
La columna "Status" indica si un vnculo de cach es vlido ("V") o invlido ("I"). Si
una base de datos o un objeto estn vinculados a un cach y el cach se elimina, la
informacin del vnculo se retiene en las tablas del sistema pero la vinculacin al cach
se marca como invlida. Todos los objetos con vnculos invlidos usan el cach de datos
predeterminado. Si posteriormente crea otro cach con el mismo nombre, el vnculo
volver a ser vlido cuando se active el cach al reiniciar SQL Server.
Verificacin de sobrecarga del cach
sp_helpcache puede informar la cantidad de sobrecarga necesaria para manejar un
cach de datos con nombre de un tamao dado. Cuando se crea un cach de datos con
nombre, todo el espacio solicitado con sp_cacheconfig se pone a disposicin del cach.
La memoria necesaria para la administracin del cach se toma del cach
predeterminado de datos.
Para establecer la sobrecarga que necesita un cach, introduzca el tamao propuesto.
Puede utilizar las unidades "P" para pginas, "K" para kilobytes, "M" para megabytes o
"G" para gigabytes. Los ejemplos siguientes verifican la sobrecarga para 20.000
pginas:
sp_helpcache "20000P"
2.08Mb of overhead memory will be needed to manage a cache of size
20000P

Observe que no se est "desaprovechando" espacio de cach por haber configurado


cachs de usuario. Aproximadamente, es necesario un 5 por ciento de la memoria para
las estructuras que almacenan y rastrean las pginas en memoria, independientemente
de que se use un solo cach de gran tamao o varios ms pequeos.
Cmo la sobrecarga afecta al espacio total de cach

En la , el ejemplo muestra un cach de datos predeterminado con 59,36MB de espacio


de cach disponible antes de que se creen cachs definidos por el usuario. Cuando se
crea el pubs_cache de 10MB y se reinicia SQL Server, los resultados de
sp_cacheconfig muestran un tamao total de cach de 59,28MB.
El proceso de configurar un cach de datos puede dar la impresin de incrementar o
disminuir el cach total disponible. La explicacin reside en la cantidad de sobrecarga
necesaria para manejar un cach de determinado tamao y en el hecho de que la
sobrecarga no se incluye en los valores mostrados por s p_cacheconfig .
El uso de sp_helpcache para comprobar la sobrecarga del cach predeterminado
original de 59,36MB y del nuevo cach de 10MB muestra que la variacin del espacio
se debe a cambios en el tamao de la sobrecarga. El comando siguiente muestra la
sobrecarga para el cach predeterminado de datos antes de efectuar cambio alguno:
sp_helpcache "59.36M"
3.03Mb of overhead memory will be needed to manage a cache of size
55.96M

Este comando muestra la sobrecarga de pubs_cache :


sp_helpcache "10M"
0.53Mb of overhead memory will be needed to manage a cache of size
10M

Los clculos siguientes suman la sobrecarga requerida para administrar el espacio de


cach original y luego restan el espacio de sobrecarga de pubs_cache .
Tamao total original del cach (sin incluir la sobrecarga) 59,36
Sobrecarga del cach predeterminado de 59,36MB

+3,03

Espacio total de cach, incluida la sobrecarga

62,39

10MB de pubs_cache y 0,53MB de sobrecarga

- 10,53

Espacio restante

51,86

Sobrecarga del cach de 51,86MB

- 2,86

Tamao utilizable del cach predeterminado

49,30

Los tamaos de los cachs se redondean hasta dos decimales cuando los muestra
sp_cacheconfig , y lo mismo sucede cuando sp_helpcache muestra la sobrecarga. Por
lo tanto, notar un pequeo margen de error en la salida debido al redondeo.

Omisin de vnculos de cachs


Dos comandos omiten vnculos de cachs:

sp_unbindcache desvincula una sola entidad de un cach


sp_unbindcache_all desvincula todos los objetos vinculados a un cach

La sintaxis de sp_unbindcache es:

sp_unbindcache
[,
indexname

dbname
[,[ owner
| "text only"] ]

.]tablename

Este comando desvincula la base de datos pubs2 :


sp_unbindcache pubs2

Este comando desvincula la tabla titles :


sp_unbindcache pubs2, titles

Este comando desvincula el ndice titleidind :


sp_unbindcache pubs2, titles, titleidind

Para desvincular todos los objetos vinculados a un cach, utilice sp_unbindcache_all


con el nombre del cach:
sp_unbindcache_all pubs_cache

No es posible utilizar sp_unbindcache_all si el cach tiene vinculados ms de ocho


bases de datos y/o objetos de ocho bases de datos. Para reducir el nmero de bases de
datos implicadas a ocho o menos, debe utilizar sp_unbindcache en las bases de datos u
objetos individuales.
Cuando se omite un vnculo de cach de un objeto, todas las pginas actualmente
existentes en la memoria se borran del cach.

Cambio del rea de lavado para un banco de memoria


SQL Server intenta garantizar que las consultas que precisan pginas limpias en un
cach de datos las encuentren en el extremo LRU (pginas usadas menos recientemente)
de cada banco de memoria. Una parte del banco est configurado como rea de lavado
. Una vez que las pginas sucias (las que han cambiado en el cach) pasan la marca de
lavado y entran en el rea de lavado, SQL Server inicia una E/S asincrnica en la
pgina. Cuando la escritura termina, la pgina se marca como limpia y queda disponible
en el cach hasta que llegue al LRU.
Figure 9-10: Area de lavado de un banco de memorias intermedias
Predeterminadamente, el tamao del rea de lavado de un banco de memoria se
configura para que sea el menor de estos valores:

512K
20 por ciento de las memorias intermedias del banco

El nmero mnimo de memorias intermedias en el rea de lavado es 10. El tamao


mximo del rea de lavado es el 80 por ciento del tamao del banco.
Una memoria intermedia es un bloque de pginas que corresponde al tamao de E/S del
banco. Cada memoria intermedia se trata como una unidad: todas las pginas de la

memoria intermedia se leen en el cach, se escriben en el disco y envejecen en el cach


como una unidad. En un banco de 2K, 256 memorias intermedias son 512K; para un
banco de 16K, 256 memorias intermedias son 4096K.
Por ejemplo, si configura un banco de 16K con 1MB de espacio, el banco tiene 64
memorias intermedias. El 20 por ciento es 12,8. Esto se redondea al entero menor, por
lo que se asignan 12 memorias intermedias (o 192K) al rea de lavado.
Si el cach es muy grande y hay una gran frecuencia de actualizaciones en su sistema,
quiz deba cambiar el tamao del rea de lavado a un 1 2 por ciento del tamao del
banco. La seccin siguiente explica el efecto que el tamao del rea de lavado tiene
sobre el rendimiento.
Efecto de una mala configuracin del lavado sobre el rendimiento
Si se define un tamao del rea de lavado demasiado grande, las pginas llegan a la
"marca de lavado" del cach con ms rapidez, producindose una escritura sobre la
pgina. La pgina queda marcada como "limpia" y permanece en el rea de lavado de la
cadena MRU/LRU hasta que llega al LRU. Si otra consulta cambia la pgina, el
servidor debe realizar E/S adicionales para volver a escribirla en el disco.
Figure 9-11: Efectos de un rea de lavado demasiado grande
Si se define un tamao del rea de lavado demasiado pequeo, las operaciones que
precisan una memoria intermedia limpia probablemente tendrn que esperar a que la
E/S escriba una memoria intermedia sucia en el disco, reduciendo gravemente el
rendimiento de SQL Server.
Figure 9-12: Efectos de un rea de lavado demasiado pequea
Este comando define el rea de lavado del banco de 2K como 720K:
sp_poolconfig pubs_cache, "2K", "wash=720K"

Cambio de tamao de cachs de datos con nombre


Para cambiar el tamao de un cach existente, ejecute sp_cacheconfig , especificando
un nuevo tamao total para el cach. Si especifica un tamao mayor con
sp_cacheconfig , todo el espacio adicional se aade al banco de 2K. Si lo reduce, todo
el espacio se toma del banco de 2K. No es posible disminuir el tamao del banco de 2K
a menos de 512K.
Aumento del tamao de un cach
sp_cacheconfig indica que pubs_cache est configurado actualmente con 10MB de
espacio:
sp_cacheconfig pubs_cache
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_cache
Active
Mixed
10.00 Mb
10.00 Mb

------------ -----------Total
10.00 Mb
10.00 Mb
================================================================
Cache: pubs_cache,
Status: Active,
Type: Mixed
Config Size: 10.00 Mb,
Run Size: 10.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
720 Kb
0.00 Mb
3.00 Mb
4 Kb
1024 Kb
4.00 Mb
4.00 Mb
16 Kb
1424 Kb
3.00 Mb
3.00 Mb

Si desea aumentar el tamao del cach y su banco de 2K, especifique el nuevo tamao
total del cach:
sp_cacheconfig pubs_cache, "20M"

Lo siguiente indica la configuracin antes de reiniciar el servidor:


Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_cache
Active
Mixed
20.00 Mb
20.00 Mb
------------ -----------Total
20.00 Mb
20.00 Mb
================================================================
Cache: pubs_cache,
Status: Active,
Type: Mixed
Config Size: 20.00 Mb,
Run Size: 20.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
13.00 Mb
4 Kb
1024 Kb
4.00 Mb
4.00 Mb
16 Kb
1424 Kb
3.00 Mb
3.00 Mb

Los 10MB adicionales se han configurado y quedarn disponibles para el banco de 2K


la prxima vez que se reinicie el servidor.
Disminucin del tamao de un cach
Tambin es posible reducir el tamao de un cach. Por ejemplo, el siguiente es un
informe sobre el cach pubs_log :
sp_cacheconfig pubs_log
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_log
Active
Log Only
7.00 Mb
7.00 Mb
------------ -----------Total
7.00 Mb
7.00 Mb
================================================================
Cache: pubs_log,
Status: Active,
Type: Log Only
Config Size: 7.00 Mb,
Run Size: 7.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
4.00 Mb
4 Kb
1024 Kb
3.00 Mb
3.00 Mb

El comando siguiente disminuye el tamao del cach pubs_log , reduciendo el tamao


del banco de 2K:
sp_cacheconfig pubs_log, "6M"

Despus de reiniciarse el servidor, sp_cacheconfig muestra:


Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_log
Active
Log Only
6.00 Mb
6.00 Mb
------------ -----------Total
6.00 Mb
7.00 Mb
================================================================
Cache: pubs_log,
Status: Active,
Type: Log Only
Config Size: 6.00 Mb,
Run Size: 7.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
3.00 Mb
4 Kb
1024 Kb
3.00 Mb
3.00 Mb

Al reducirse el tamao de un cach de datos, todo el espacio que se va a eliminar debe


estar disponible en el banco de 2K. Para poder reducirlo, quiz tenga que mover espacio
al banco de 2K desde otros bancos. En el ltimo ejemplo, si desease reducir el tamao
del cach a 3MB, necesitara utilizar sp_poolconfig para desplazar alguna memoria
desde el banco de 4K al de 2K. Para obtener ms informacin, consulte "Cambio de
tamao de bancos de memoria".

Omisin de cachs de datos


Para quitar un cach de datos por completo, redefina su tamao a 0:
sp_cacheconfig pubs_log, "0"

Este comando cambia el estado del cach a "Pend/Del". Para que el cambio tenga
efecto, deber reiniciar SQL Server. Hasta que eso no ocurra, el cach permanecer
activo, y todos los objetos vinculados al cach continuarn usndolo para E/S.
Si elimina un cach de datos y hay objetos vinculados a l, dichos vnculos se marcan
como invlidos la siguiente vez que se reinicie SQL Server. Todos los objetos con
vnculos invlidos utilizan el cach predeterminado de datos. Cuando los vnculos estn
marcados como invlidos, aparecen mensajes de advertencia en el diario de errores. Si
crea el cach de nuevo y reinicia SQL Server, los vnculos vuelven a ser vlidos.
No es posible omitir el cach predeterminado de datos.

Cambio de tamao de bancos de memoria


Para cambiar el tamao de un banco de memoria, utilice sp_poolconfig . Este comando
permite especificar el cach, el nuevo tamao del banco, el tamao de E/S del banco
que desea cambiar, y el tamao de E/S del banco del cual hay que tomar las memorias
intermedias. Si no especifica el ltimo parmetro, todo el espacio se toma del, o se
asigna al banco de 2K.

Desplazamiento de espacio desde el banco de memoria de 2K


Este comando verifica la configuracin actual del cach pubs_log :
sp_cacheconfig pubs_log
Cache Name
Status
Type
Config Value Run Value
------------------- --------- -------- ------------ -----------pubs_log
Active
Log Only
6.00 Mb
6.00 Mb
------------ -----------Total
6.00 Mb
6.00 Mb
================================================================
Cache: pubs_log,
Status: Active,
Type: Log Only
Config Size: 6.00 Mb,
Run Size: 7.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
3.00 Mb
4 Kb
1024 Kb
3.00 Mb
3.00 Mb

Este comando aumenta el tamao del banco de 4K a 5MB, tomando el espacio


requerido del banco de 2K:
sp_poolconfig pubs_log, "5M",
sp_cacheconfig pubs_log
Cache Name
Status
------------------- --------pubs_log
Active

"4K"

Type
Config Value Run Value
-------- ------------ -----------Log Only
6.00 Mb
6.00 Mb
------------ -----------Total
6.00 Mb
6.00 Mb
================================================================
Cache: pubs_log,
Status: Active,
Type: Log Only
Config Size: 6.00 Mb,
Run Size: 7.00 Mb

IO Size Wash Size Config Size Run Size


-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
1.00 Mb
4 Kb
1024 Kb
5.00 Mb
5.00 Mb

Desplazamiento de espacio desde otros bancos de memoria


Para transferir espacio de un banco que no sea el de 2K, especifique un tamao de E/S
"a" y un tamao de E/S "desde". Esta salida muestra la configuracin actual del cach
predeterminado de datos:
Cache Name
Status
Type
Config Value Run Value
-------------------- --------- -------- ------------ -----------default data cache
Active
Default
25.00 Mb
43.21 Mb
------------ -----------Total
25.00 Mb
43.21 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 25.00 Mb,
Run Size: 43.21 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
8336 Kb
0.00 Mb
32.71 Mb
4 Kb
1024 Kb
2.50 Mb
2.50 Mb
16 Kb
4096 Kb
8.00 Mb
8.00 Mb

El comando siguiente aumenta el tamao del banco de 4K, de 2,5MB a 4MB, tomando
el espacio del banco de 16K:
sp_poolconfig "default data cache","4M", "4K","16K"

Este comando produce la configuracin siguiente:


Cache Name
Status
Type
Config Value Run Value
-------------------- --------- -------- ------------ -----------default data cache
Active
Default
25.00 Mb
43.21 Mb
------------ -----------Total
25.00 Mb
43.21 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 25.00 Mb,
Run Size: 43.21 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
8336 Kb
0.00 Mb
32.71 Mb
4 Kb
1024 Kb
4.00 Mb
4.00 Mb
16 Kb
4096 Kb
6.50 Mb
6.50 Mb

Note: No es posible reducir el banco de 2K a un tamao inferior a 512K.


Cuando se ejecuta un comando que desplaza memorias intermedias entre los bancos de
un cach, SQL Server slo puede desplazar las memorias intermedias "libres", pero no
las que estn en uso o las que contengan cambios que no se hayan escrito en el disco.
Cuando SQL Server no puede desplazar tantas memorias intermedias como se solicita,
muestra un mensaje informativo con el tamao solicitado y el tamao resultante del
banco de memoria.

Omisin de un banco de memoria


Para quitar un banco por completo, redefina su tamao a 0. Este comando quita el banco
de 16K, pasando todo el espacio al de 2K:
sp_poolconfig "default data cache", "0", "16K"
sp_cacheconfig "default data cache"
Cache Name
Status
Type
Config Value Run Value
-------------------- --------- -------- ------------ -----------default data cache
Active
Default
25.00 Mb
43.21 Mb
------------ -----------Total
25.00 Mb
43.21 Mb
================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 25.00 Mb,
Run Size: 43.21 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
8336 Kb
0.00 Mb
39.21 Mb
4 Kb
1024 Kb
4.00 Mb
4.00 Mb

Si no especifica el affected_pool , todo el espacio se sita en el banco de 2K. No es


posible eliminar el banco de 2K en ningn cach.

Si el banco que usted intenta eliminar contiene pginas que estn en uso o que se han
ensuciado pero no se han escrito en el disco, SQL Server desplaza tantas pginas al
banco especificado como sea posible, e imprime un mensaje informativo indicando el
tamao del banco restante. Las pginas que no pueden desplazarse estn vinculadas a
transacciones en curso. Cuando se completen estas transacciones y las pginas se
liberen, podr volver a ejecutar el comando.

Efectos de la vinculacin en la memoria y planes de consulta


La vinculacin y desvinculacin de objetos puede tener efectos sobre el rendimiento. Al
vincular o desvincular una tabla o ndice:

Las pginas del objeto se transfieren desde el cach


El objeto debe estar bloqueado para realizarse la vinculacin
Todos los planes de consulta para procedimientos y disparadores deben
recompilarse

Vaciado de pginas en el cach


Cuando se vincula un objeto o base de datos a un cach, todas las pginas del objeto que
ya estn en memoria se quitan del cach de origen. La siguiente vez que las pginas
sean requeridas por una consulta, se leen en el nuevo cach. De forma similar, cuando
se desvinculan objetos, las pginas se quitan del cach configurado por el usuario y se
leen en el cach predeterminado al ser requeridas por una consulta la prxima vez.
Bloqueo para realizar vinculaciones
Para vincular o desvincular tablas de usuario, ndices u objetos de texto o imagen, los
comandos de vinculacin al cach deben obtener un bloqueo exclusivo sobre el objeto.
Si una tabla ya est bloqueada por un usuario, y se ejecuta sp_bindcache ,
sp_unbindcache o sp_unbindcache_all sobre el objeto, el procedimiento del sistema
reposa hasta que pueda conseguir los bloqueos que necesita.
En el caso de bases de datos, tablas del sistema e ndices de tablas del sistema, la base
de datos debe estar en modo de usuario nico, por lo que no puede haber otro usuario
que tenga un bloqueo sobre el objeto.
Efectos de la vinculacin al cach en procedimientos y disparadores
Las vinculaciones al cach y los tamaos de E/S son parte del plan de consulta para
procedimientos almacenados y disparadores. Cuando se cambia la vinculacin al cach
para un objeto, todos los procedimientos almacenados que hacen referencia al objeto se
recompilan la siguiente vez que se ejecuten. Al cambiar la vinculacin al cach para una
base de datos, todos los procedimientos almacenados que hacen referencia a algn
objeto de la base de datos y no estn vinculados explcitamente a un cach, se
recompilan en su siguiente ejecucin.

Configuracin de los cachs de datos con el archivo de configuracin

Es posible aadir u omitir cachs de datos con nombre y reconfigurar los cachs
existentes y sus bancos de memoria mediante la edicin del archivo de configuracin
que se utiliza al iniciar SQL Server.
Note: No es posible reconfigurar cachs y bancos en un servidor mientras se est
ejecutando, mediante la lectura de un archivo de configuracin con sp_configure .
Cualquier intento de leer un archivo de configuracin que contenga configuraciones de
cachs y bancos diferentes a los ya configurados en el servidor, provoca fallos de
lectura y la aparicin de un mensaje de advertencia.
Entradas de cachs y bancos en el archivo de configuracin
Cada cach de datos configurado en el servidor tiene un bloque de informacin en el
archivo de configuracin:
[Named Cache: cache_name ]
cache size = { size
| DEFAULT}
cache status = {mixed cache | log only | default data cache}

La especificacin de size puede incluir "P" para pginas, "K" para kilobytes, "M" para
megabytes o "G" para gigabytes. Si no se indica nada, la unidad predeterminada es "K".
Este ejemplo muestra la entrada en el archivo de configuracin correspondiente al cach
predeterminado de datos:
[Named Cache:default data cache]
cache size = DEFAULT
cache status = default data cache

La entrada del cach predeterminado de datos es la nica absolutamente necesaria para


que SQL Server se inicie. Dicha entrada debe tener el estado y tamao del cach, y su
estado debe ser "default data cache".
Si se configuraron bancos en el cach, adems del banco de 2K, el bloque del ejemplo
anterior va seguido por un bloque para cada banco:
[16K I/O Buffer Pool]
pool size =
size
wash size =
size

El ejemplo siguiente muestra una salida de sp_cacheconfig , seguida por las entradas
del archivo de configuracin correspondientes a esta configuracin de cachs y bancos:
Cache Name
------------------default data cache
pubs_cache
pubs_log

Status
--------Active
Active
Active

Type
Config Value Run Value
-------- ------------ -----------Default
0.00 Mb
33.15 Mb
Mixed
20.00 Mb
20.00 Mb
Mixed
6.00 Mb
6.00 Mb
------------ -----------Total
26.00 Mb
59.15 Mb
=================================================================
Cache: default data cache,
Status: Active,
Type: Default
Config Size: 0.00 Mb,
Run Size: 33.15 Mb

IO Size Wash Size Config Size Run Size


-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
22.15 Mb
4 Kb
1024 Kb
3.00 Mb
3.00 Mb
16 Kb
4096 Kb
8.00 Mb
8.00 Mb
================================================================
Cache: pubs_cache,
Status: Active,
Type: Mixed
Config Size: 20.00 Mb,
Run Size: 20.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
16.00 Mb
4 Kb
204 Kb
1.00 Mb
1.00 Mb
16 Kb
608 Kb
3.00 Mb
3.00 Mb
=================================================================
Cache: pubs_log,
Status: Active,
Type: Mixed
Config Size: 6.00 Mb,
Run Size: 6.00 Mb
IO Size Wash Size Config Size Run Size
-------- --------- ------------ -----------2 Kb
512 Kb
0.00 Mb
1.00 Mb
4 Kb
1024 Kb
5.00 Mb
5.00 Mb

Esta es la informacin correspondiente del archivo de configuracin:


[Named Cache:default data cache]
cache size = DEFAULT
cache status = default data cache
[4K I/O Buffer Pool]
pool size = 3.0000M
wash size = 1024 K
[16K I/O Buffer Pool]
pool size = 8.0000M
wash size = 4096 K
[Named Cache:pubs_cache]
cache size = 20M
cache status = mixed cache
[4K I/O Buffer Pool]
pool size = 1.0000M
wash size = 204 K
[16K I/O Buffer Pool]
pool size = 3.0000M
wash size = 608 K
[Named Cache:pubs_log]
cache size = 6M
cache status = mixed cache
[4K I/O Buffer Pool]
pool size = 5.0000M
wash size = 1024 K

Para obtener ms informacin sobre el archivo de configuracin, consulte el Captulo


11, "Definicin de los parmetros de configuracin".

Warning! Asegrese de verificar el parmetro de configuracin total memory y de


dejar suficiente memoria para otras necesidades de SQL Server. Si intenta asignar
demasiada memoria a los cachs de datos en el archivo de configuracin, SQL Server
no se iniciar. Si esto ocurre, edite el archivo de configuracin para reducir la cantidad
de espacio de los cachs de datos o aumente la memoria total asignada a SQL Server.
Errores del archivo de configuracin
Si edita el archivo de configuracin manualmente, verifique los tamaos de cachs,
bancos y reas de lavado con atencin. Ciertos errores en el archivo de configuracin
pueden provocar la imposibilidad de iniciar el servidor:

El tamao total de todos los cachs no puede ser mayor que el total de memoria,
menos otras necesidades de memoria de SQL Server.
El tamao total de los bancos de un cach no puede ser mayor que el cach.
El tamao del rea de lavado no puede ser demasiado pequeo (menor que el
20% del tamao del banco, con un mnimo de 10 memorias intermedias) ni
mayor que el 80% de las memorias intermedias del banco.
El estado del cach predeterminado de datos debe ser "default data cache", y su
tamao debe especificarse como valor numrico o "DEFAULT".
Es necesario especificar el estado y tamao de todos los cachs.
Es necesario especificar los tamaos de banco y rea de lavado de todos los
bancos mayores de 2K.
El estado de todos los cachs definidos por el usuario debe ser "mixed cache" o
"log only".

En muchos casos, los problemas de entradas ausentes se comunican como errores de


"unknown format" (formato no conocido) en las lneas inmediatamente despus de la
entrada en que se omiti el tamao, estado u otra informacin. Otros errores
proporcionan el nombre del cach en que se produjo el error, y el tipo de error. Por
ejemplo, cuando el tamao del rea de lavado de un banco se especifica
incorrectamente, aparece el siguiente error:
The wash size for the 4k buffer pool in cache pubs_cache has been
incorrectly configured. It must be a minimum of 10 buffers and a
maximum of 80 percent of the number of buffers in the pool.

Pautas para la configuracin de cachs


Para obtener informacin adicional sobre la configuracin y rendimiento de cachs y
conocer las estrategias recomendadas para verificar la utilizacin del cach, consulte el
Chapter 15, "Memory Use and Performance" de la Gua de Mejora de Rendimiento y
Afinacin . Estas son algunas pautas generales para los administradores del sistema:

Cercirese de que el cach predeterminado de datos es suficientemente grande


para toda la actividad de cach de las tablas e ndices no vinculados. Todos los
objetos que no se vinculan explcitamente a un cach emplean el cach
predeterminado. Esto incluye las tablas del sistema no vinculadas en bases de
datos de usuario, las tablas del sistema de master y los dems objetos que no
estn vinculados explcitamente a un cach.

Durante la recuperacin, slo est activo el banco de memoria de 2K del cach


predeterminado. Los diarios de transacciones se leen en el banco de 2K del
cach predeterminado. Todas las transacciones que deban revertirse o
completarse deben leer pginas de datos al cach predeterminado de datos. Si
ste es demasiado pequeo, puede demorar la recuperacin.
No "agote" el banco de 2K en ningn cach. Para muchos tipos de acceso a
datos, no hay necesidad de una E/S de gran tamao. Por ejemplo, un consulta
simple que utilice un ndice para devolver una sola fila al usuario puede emplear
cuatro o cinco E/S de 2K y no beneficiarse en nada con una E/S de 16K.
Ciertos comandos slo pueden realizar E/S de 2K. Esos comandos son: disk init
, ciertos comandos dbcc , y drop table . dbcc checktable puede realizar E/S de
gran tamao, y dbcc checkdb realiza una E/S grande en tablas y una E/S de 2K
en ndices.
En los cachs usados por diarios de transacciones, configure un banco de E/S
que coincida con el tamao predeterminado de E/S del diario. Este tamao se
define para una base de datos con el procedimiento del sistema sp_logiosize . El
tamao predeterminado es 4K.
Tratar de micromanejar cada ndice y objeto, y su uso del cach, puede
desperdiciar espacio del cach. Los cachs o bancos que no son utilizados
ptimamente por las tablas o ndices que tienen vinculados, estn
desaprovechando el espacio y creando E/S adicionales en otros cachs.
Si las aplicaciones utilizan tempdb intensamente, vinclela a su propio cach.
Tenga en cuenta que slo se puede vincular toda la base de datos tempdb , no los
objetos individuales de tempdb .
Para cachs muy grandes con alta frecuencia de actualizacin, verifique que el
tamao del rea de lavado sea suficientemente grande.
En sistemas de varias CPU, distribuya las tablas ms usadas y sus ndices entre
varios cachs para evitar contiendas de los bloqueos de giro.
Considere la posibilidad de reconfigurar los cachs o bancos de memoria de los
cachs para adaptarlos a la variacin en las cargas de trabajo. La reconfiguracin
de los cachs requiere reiniciar el servidor, pero la de los bancos de memoria
no.Por ejemplo, si el sistema realiza principalmente procesamientos OLTP
(procesamiento de transacciones en lnea) durante la mayor parte del mes, y
algunos das tiene gran actividad en el DSS (sistema de apoyo de decisiones),
considere desplazar espacio del banco de 2K al de 16K para la alta actividad del
DSS, y cambiar el tamao de los bancos para procesamientos OLTP cuando
termine el trabajo del DSS.

Chapter 10

Administracin de servidores multiprocesadores


En este captulo se proporcionan pautas para administrar SQL Server en equipos
multiprocesadores. Incluye las secciones siguientes:

Introduccin
Definiciones
Arquitectura de destino
Configuracin de un entorno de SMP

Introduccin
SQL Server implementa la arquitectura Virtual Server Architecture(TM) de Sybase, que
permite aprovechar la funcin de procesamiento paralelo en los sistemas de
multiprocesamiento simtrico (SMP). SQL Server puede ejecutarse como un solo
proceso o como procesos mltiples asociados, dependiendo del nmero de CPUs
disponibles y de las demandas efectuadas en la mquina servidora. En este captulo se
describe:

La arquitectura de destino de la mquina para SQL Server de SMP


La arquitectura de SQL Server para entornos de SMP
La administracin de tareas que realiza SQL Server en el entorno de SMP
La administracin de varios motores

Para obtener informacin sobre el diseo de aplicaciones para sistemas SMP, consulte
el Chapter 17, "Using CPU Resources Effectively," de la Gua de Mejora de
Rendimiento y Afinacin .

Definiciones
Las siguientes definiciones corresponden a varios trminos usados en este captulo:

Proceso : Entorno de ejecucin planificado en CPUs fsicas por el sistema


operativo.
Motor : Proceso que ejecuta un SQL Server y que se comunica con los procesos
de otro SQL Server a travs de memoria compartida. Un motor equivale a la
potencia de procesamiento de una CPU, pero no representa una CPU en
particular. Tambin se denomina "motor servidor".
Tarea : Entorno de ejecucin dentro del SQL Server planificado en base a los
motores por el SQL Server.
Afinidad : Describe un proceso en el cual cierta tarea de SQL Server se ejecuta
slo en cierto motor ( afinidad de tarea ), cierto motor maneja la E/S de red
para cierta tarea ( afinidad de E/S de red ), o cierto motor se ejecuta slo en
cierta CPU ( afinidad de motor ).
Migracin de afinidad de red : Describe el proceso de trasladar la E/S de red
desde un motor a otro. Los sistemas SMP que soportan esta migracin permiten
que SQL Server distribuya la carga de E/S de la red entre todos sus motores.

Arquitectura de destino
El producto de entorno de SMP est destinado a mquinas que tienen las siguientes
caractersticas:

Un sistema operativo de multiprocesamiento simtrico


Memoria compartida por un bus comn
De 1 a 32 procesadores
Ningn procesador master
Capacidad de procesamiento muy alto

SQL Server consta de uno o ms procesos cooperadores (llamados motores ), todos los
cuales ejecutan el mismo programa servidor en paralelo. Consulte la Figura 10-1.
Figure 10-13: Arquitectura del entorno de SMP
Si el sistema de SMP soporta la migracin de afinidad de red , SQL Server migra la
conexin cliente en el momento del login, al motor que est sirviendo actualmente el
menor nmero de conexiones de E/S de red. De lo contrario, slo uno de los motores, el
0, maneja las tareas que implican la administracin de red. En otros aspectos, todos los
motores son iguales, y se comunican a travs de una memoria compartida.
Los motores del servidor realizan todas las funciones de base de datos, incluidas las
actualizaciones y diarios. SQL Server, y no el sistema operativo, programa
dinmicamente las tareas de cliente en los motores disponibles. Cuando un motor queda
disponible, realiza cualquier tarea de cliente ejecutable; no hay afinidad de tarea .
El sistema operativo programa los procesos de los motores en base a los procesadores
fsicos. Cualquier CPU disponible se utiliza para cualquier motor; no hay afinidad de
motor . El proceso se llama simtrico porque la falta de afinidad entre procesos y CPU
crea una carga equilibrada simtricamente.
Administracin de tareas de SQL Server para SMP
La Figura 10-2: Administracin de tareas de SQL Server en el entorno de SMP ilustra
la administracin de tareas de SQL Server. Esta es una breve descripcin del proceso:
1. Una aplicacin cliente emite una solicitud de login. En respuesta, SQL Server
crea una tarea de usuario para manejar el trabajo procedente del cliente.
2. El cliente presenta a SQL Server el trabajo que debe hacer, es decir, una serie de
comandos de Transact-SQL.
3. SQL Server aade la tarea de usuario del cliente a la cola de tareas a ejecutar.
Los motores del servidor compiten por la tarea de usuario situada al principio de
la cola de tareas.
4. El motor del servidor que se hace cargo de la tarea de usuario de la cola
convierte los comandos de Transact-SQL en pasos de bajo nivel, como E/S del
disco.
5. El motor ejecuta cada paso hasta que se completa o bloquea la tarea, mientras
espera la E/S o el bloqueo. Si la tarea se bloquea, cede el motor del servidor para
que ejecute otras tareas de usuario. Una vez resuelta la situacin de bloqueo (es
decir, se completa la E/S o se obtiene un bloqueo), la tarea del usuario se aade
de nuevo a la cola de tareas a ejecutar.
6. Despus de que la tarea se bloquea por ltima vez, contina ejecutndose hasta
que termina. En ese momento, la tarea de usuario cede el motor del servidor y
pasa a la cola de tareas en reposo, hasta que el cliente presente ms trabajo al
servidor.
Figure 10-14: Administracin de tareas de SQL Server en el entorno de
SMP

El SQL Server de SMP est diseado de tal forma que las aplicaciones y los usuarios
ven un solo servicio de base de datos, cualquiera sea el nmero de motores y
procesadores que haya.

Configuracin de un entorno de SMP


La configuracin del entorno de SMP es muy parecida a la de un entorno de un solo
procesador, aunque las mquinas de SMP suelen ser ms potentes y manejan muchos
ms usuarios. El entorno de SMP proporciona la capacidad adicional de controlar el
nmero de motores.
Administracin de motores
Para lograr un rendimiento ptimo en un sistema de SMP, hay que mantener el nmero
correcto de motores.
Un motor representa cierta cantidad de potencia de CPU. Es un recurso configurable
como la memoria. Un motor no representa una CPU en particular.
Redefinicin del nmero de motores
Cuando se crea un nuevo dispositivo master (especficamente, cuando se ejecuta
buildmaster ) o cuando se inicia por primera vez un servidor de SMP en una base de
datos actualizada con una versin mejorada, el sistema se configura para un solo motor.
Para emplear varios motores, hay que redefinir el nmero de motores la primera vez que
inicia el servidor. Es posible que tambin desee redefinir el nmero de motores en otras
situaciones.
Por ejemplo:

Si el rendimiento actual no es adecuado para una aplicacin y hay suficientes


CPUs en la mquina, conviene aumentar el nmero de motores.
Si un fallo de hardware inhabilita alguna CPU de la mquina, conviene
disminuir el nmero de motores.

Sin embargo, el aumento o disminucin de motores no es una configuracin dinmica, y


la redefinicin del nmero de motores exige reiniciar el servidor.
El parmetro de configuracin max online engines controla el nmero de motores que
SQL Server utiliza. Redefina este parmetro con el procedimiento del sistema
sp_configure . Por ejemplo, para definir el nmero de motores a 3:
1. Ejecute el siguiente comando:
sp_configure "max online engines", 3

2. Detenga y reinicie el servidor.


Repita estos pasos siempre que necesite cambiar el nmero de motores. Los motores
diferentes a 0 vuelven a ponerse en lnea despus de concluida la recuperacin.

Consulte tambin el parmetro de configuracin min online engines , que se describe


en "min online engines".
Eleccin del nmero adecuado de motores
Es importante elegir el nmero adecuado de motores para SQL Server. Estas son
algunas pautas para elegir cuntos motores usar:

Nunca tenga ms motores que CPUs. Hacerlo puede disminuir el rendimiento.


Si una CPU queda fuera de lnea, utilice sp_configure para reducir el parmetro
de configuracin max online engines a uno menos y reinicie SQL Server.
Tenga slo tantos motores como CPUs utilizables . Si hay mucho
procesamiento por parte del cliente u otros procesos que no sean de SQL Server,
un motor por CPU puede ser excesivo. Recuerde tambin que el sistema
operativo puede hacerse cargo de parte de una de las CPUs.
Tenga suficientes motores. Es aconsejable comenzar con pocos motores y
aadir otros cuando las CPUs existentes estn utilizadas casi por completo. Si
hay muy pocos motores, la capacidad de los motores existentes ser sobrepasada
y podrn producirse atascamientos.

Seguimiento del uso de CPUs


Para mantener el nmero correcto de motores, vigile el uso de las CPUs con una
utilidad del sistema operativo. Consulte la utilidad adecuada a su sistema operativo en la
gua de instalacin y configuracin de SQL Server.
Administracin de las conexiones de usuario
Si el sistema de SMP soporta la migracin de afinidad de red, cada motor maneja la E/S
de red para sus conexiones. Durante el login, SQL Server migra la tarea de conexin del
cliente desde el motor 0 al motor que actualmente sirva el menor nmero de conexiones.
Las tareas del cliente ejecutan la E/S de red en ese motor ( afinidad de red ) hasta que
termine la conexin. Para determinar si su sistema de SMP soporta esta migracin,
consulte la gua de instalacin y configuracin de SQL Server.
Distribuyendo las E/S de red entre los motores, SQL Server puede manejar ms
conexiones de usuarios. El lmite por proceso en el nmero mximo de descriptores de
archivos abiertos ya no limita el nmero de conexiones. El agregado de ms motores en
lnea incrementa el nmero mximo de descriptores de archivos, segn se almacene en
la variable global @@max_connections .
Al incrementar el nmero de motores, SQL Server imprime el valor aumentado de @
@max_connections en la salida estndar y en el diario de errores despus de reiniciar el
servidor. Siempre se puede consultar el valor con este comando:
select @@max_connections

El nmero representa el nmero mximo de descriptores de archivos permitidos por el


sistema operativo para el proceso, menos los siguientes descriptores de archivos
utilizados por SQL Server:

Uno por cada oyente master de red en el motor 0 (uno por cada lnea "master" de
la entrada del archivo de interfaces correspondiente a ese SQL Server).
Uno por salida estndar de cada motor.
Uno por archivo del diario de errores de cada motor.
Dos por canal de migracin de afinidad de red de cada motor.
Uno por motor para configuracin.
Uno por motor para el archivo de interfaces.
Uno por motor para uso interno.

Por ejemplo, si SQL Server est configurado para un solo motor y el valor de
@@max_connections es igual a 1019, la adicin de un segundo motor aumenta el valor
de @@max_connections a 2039 (suponiendo slo un oyente master de red).
Se puede configurar number of user connections para aprovechar un lmite mayor de
@@max_connections . Sin embargo, cada vez que reduzca el nmero de motores
usando max online engines , tambin debe ajustar el valor de number of user
connections como corresponda. La reconfiguracin de max online engines o number
of user connections no es dinmica, y debe reiniciarse el servidor para que los cambios
de esos valores de configuracin entren en vigor. Para obtener informacin sobre la
configuracin de number of user connections , consulte el Captulo 11, "Definicin de
los parmetros de configuracin".
Administracin de memoria
El parmetro de configuracin total memory puede requerir atencin especial en sitios
de SMP.
No todas las plataformas requieren un parmetro de configuracin de memoria mayor
que antes. Si su plataforma lo requiere, el valor instalado del parmetro de
configuracin total memory refleja esto, por lo que quiz nunca precise ajustarlo. Si el
mensaje de error 701:
There is insufficient memory to run this query

aparece en el diario de errores y en el terminal del cliente, conviene aumentar la


cantidad de cach de procedimientos disponible.

Chapter 11

Definicin de los parmetros de configuracin


Parmetros de configuracin de SQL Server
La tabla siguiente enumera todos los parmetros de configuracin de SQL Server.
Algunos de sus nombres se han cambiado en la versin 11.0; por esta razn, la tabla
est ordenada alfabticamente segn los nombres antiguos. Adems hay una cantidad de
parmetros nuevos, que se incluyen al final de la tabla.
Nombre en versin anterior

Nombre nuevo

T1204 (indicador de rastreos) print deadlock information


T1603 (indicador de rastreos) allow sql server async i/o
T1610 (indicador de rastreos) tcp no delay
T1611 (indicador de rastreos) lock shared memory
additional network memory

additional network memory

allow updates

allow updates to system tables

audit queue size

audit queue size

calignment

memory alignment boundary

cclkrate

sql server clock tick length

cfgcprot

permission cache entries

cguardsz

stack guard size

cindextrips

number of index trips

cmaxnetworks

max number network listeners

cmaxscheds

i/o polling process count

cnalarm

number of alarms

cnblkio

disk i/o structures

cnlanginfo

number of languages in cache

cnmaxaio_engine

max async i/os per engine

cnmaxaio_server

max async i/os per server

cnmbox

number of mailboxes

cnmsg

number of messages

coamtrips

number of oam trips

cpreallocext

number of pre-allocated extents

cpu flush

cpu accounting flush interval

cschedspins

runnable process search count

csortbufsize

number of sort buffers

csortpgcount

sort page count

ctimemax

cpu grace time

database size

default database size

default character set id

default character set id

default language

default language id

default network packet size

default network packet size

default sortorder id

default sortorder id

devices

number of devices

extent i/o buffers

number of extent i/o buffers

fillfactor

default fill factor percent

identity burning set factor

identity burning set factor

i/o flush

i/o accounting flush interval

language in cache

number of languages in cache

locks

number of locks

max online engines

max online engines

maximum network packet size max network packet size


memory

total memory

min online engines

min online engines

mrstart

shared memory starting address

nested trigger

allow nested triggers

open databases

number of open databases

open objects

number of open objects

password expiration interval

systemwide password expiration

pre-read packets

remote server pre-read packets

procedure cache

procedure cache percent

recovery flags

print recovery information

recovery interval

recovery interval in minutes

remote access

allow remote access

remote connections

number of remote connections

remote logins

number of remote logins

remote sites

number of remote sites

sql server code size

executable code size

stack size

stack size

tape retention

tape retention in days

time slice

time slice

upgrade version

upgrade version

user connections

number of user connections

Parmetros nuevos
N/A

address lock spinlock ratio

N/A

configuration file

N/A

deadlock checking period

N/A

deadlock retries

N/A

event buffers per engine

N/A

freelock transfer block size

N/A

housekeeper free write percent

N/A

identity grab size

N/A

lock promotion HWM

N/A

lock promotion LWM

N/A

lock promotion PCT

N/A

max engine freelocks

N/A

o/s async i/o enabled

N/A

o/s file descriptors

N/A

page lock spinlock ratio

N/A

page utilization percent

N/A

partition groups

N/A

partition spinlock ratio

N/A

size of auto identity column

N/A

table lock spinlock ratio

N/A

total data cache size

N/A

user log cache size

N/A

user log cache spinlock ratio

Qu son los parmetros de configuracin?


Los parmetros de configuracin son valores definibles por el usuario que controlan
diversos aspectos del comportamiento de SQL Server. SQL Server suministra valores
predeterminados para todos los parmetros de configuracin; estos valores son
razonables, dados los supuestos siguientes:

Al menos 15MB de memoria RAM estn dedicados a SQL Server.


SQL Server est sometido a un gran volumen de actividad de actualizacin.
Se utiliza un pequeo nmero de procedimientos almacenados con frecuencia.

Si su aplicacin vara significativamente con estos supuestos, lea este captulo


atentamente para determinar qu valores de configuracin debera redefinir, para
optimizar el rendimiento del servidor. Adems, consulte la Gua de Mejora de
Rendimiento y Afinacin para obtener ms informacin sobre el uso de sp_configure ,
para afinar SQL Server.
Cmo modificar los parmetros de configuracin
Los parmetros se definen o cambian de una de estas dos formas:

Ejecutando el procedimiento del sistema sp_configure con los parmetros y


valores adecuados.
Editando manualmente el archivo de configuracin y ejecutando luego
sp_configure con la opcin configuration file .

Los parmetros de configuracin son dinmicos o estticos . Los dinmicos tienen


efecto tan pronto como se ejecuta sp_configure . Los estticos requieren que SQL
Server reasigne memoria, y slo tienen efecto despus de reiniciar SQL Server. La
descripcin de cada parmetro indica si es esttico o dinmico.
Quin puede modificar los parmetros de configuracin

Los roles requeridos para utilizar sp_configure son:

Cualquier usuario puede ejecutar sp_configure para mostrar informacin sobre


los parmetros y sus valores actuales.
Slo los administradores del sistema y los oficiales de seguridad del sistema
pueden ejecutar sp_configure para modificar parmetros de configuracin.
Slo los oficiales de seguridad del sistema pueden ejecutar sp_configure para
modificar el valor de los parmetros systemwide password expiration , audit
queue size , allow updates y remote access .

Uso de sp_configure
El procedimiento del sistema sp_configure muestra y redefine parmetros de
configuracin. El nmero de parmetros que muestra sp_configure puede limitarse
utilizando sp_displaylevel para definir el nivel de visualizacin con uno de estos tres
valores:

Basic (bsico)
Intermediate (intermedio)
Comprehensive (completo)

Para obtener informacin sobre los niveles de visualizacin, consulte "Subconjuntos


definidos por el usuario en la jerarqua de parmetros: niveles de visualizacin". Para
obtener informacin sobre sp_displaylevel , consulte sp_displaylevel en el Manual de
Referencia de SQL Server .
Cada parmetro pertenece a un grupo en funcin del rea de comportamiento del
servidor a que afecta. Consulte "Jerarqua de los parmetros" para ms informacin.
La tabla siguiente describe la sintaxis de sp_configure . La informacin de la columna
"Efecto" supone que su nivel de visualizacin est definido como "comprehensive".
Tabla 11-1: Sintaxis de sp_configure
Comando

Efecto

sp_configure

Muestra todos los parmetros de configuracin por grupos,


sus valores actuales y predeterminados, el valor con que se
han definido ms recientemente y la cantidad de memoria
que utiliza ese valor en particular.

sp_configure "
parameter"

Muestra los valores actual, predeterminado y el cambiado


ms recientemente, y la cantidad de memoria usada por el
valor, para todos los parmetros que coincidan con par
ameter .

sp_configure "
parameter" , value

Redefine parameter con val ue .

sp_configure "
parameter" , 0, "default"

Redefine parameter a su valor predeterminado.

sp_configure "

Muestra todos los parmetros de configuracin de

group_name"

sp_configure "
configuration file ", 0 , "
sub_command ", "
file_name "

group_name , sus valores actuales y predeterminados, el


valor con que se han definido ms recientemente y la
cantidad de memoria que utiliza ese valor.
Consulte "Uso de sp_configure con un archivo de
configuracin" para ver descripciones de los subcomandos
y sus efectos.

Elementos de sintaxis
En la Tabla 11-1, se utilizan los siguientes elementos:

parameter es cualquier parmetro, o subcadena de parmetro, de configuracin


de SQL Server que sea vlido.
value es cualquier entero dentro del intervalo vlido para ese parmetro
(consulte la descripcin de cada parmetro para obtener la informacin de los
intervalos vlidos). Los parmetros que actan como conmutadores slo tienen
dos valores vlidos: 1 (activado) y 0 (desactivado).
group_name es el nombre de cualquier grupo de la jerarqua de parmetros.

Anlisis de parmetros
sp_configure analiza los parmetros (y los fragmentos de nombre de parmetro) como
"%parameter%". Una cadena que no identifique unvocamente un parmetro en
particular devolver valores para todos los parmetros que coincidan con la cadena. Por
ejemplo:
sp_configure "lock"

devuelve los valores de lock shared memory into physical memory , number of
locks for all users , lock promotion HWM , lock promotion LWM , lock promotion
PCT , print deadlock information y deadlock retries .
Note: Si intenta definir el valor de un parmetro con un nombre de fragmento no nico,
sp_configure devuelve el valor actual de todos los parmetros que coincidan con el
fragmento y pide un nombre de parmetro nico.
Uso de sp_configure con un archivo de configuracin
La configuracin de SQL Server puede realizarse interactivamente, usando
sp_configure como se describi antes, o no interactivamente, invocando sp_configure
con un archivo de configuracin. Los archivos de configuracin pueden usarse por
varias razones:

Es posible replicar una configuracin especfica en varios servidores usando el


mismo archivo de configuracin.
Es posible utilizar un archivo de configuracin como base para probar los
valores de configuracin en el servidor.

Es posible utilizar un archivo de configuracin para realizar una verificacin de


validacin de los parmetros antes de definir sus valores realmente.
Es posible crear varios archivos de configuracin y cambiar de uno a otro
cuando cambien las necesidades de los recursos.

Cada vez que se modifica un parmetro con sp_configure , se crea un nuevo archivo de
configuracin, con nombres que siguen esta convencin: server_name.001 ,
server_name.002 , server_name.003 ... server_name. 999 .
Si cambia el nombre de un archivo de configuracin y mantiene la parte server_name
del nombre del archivo, asegrese de incluir al menos un carcter alfabtico en la
extensin. Alternativamente, puede cambiar la parte server_name del nombre de
archivo, lo cual evitar confusiones con los archivos de configuracin que SQL Server
genera automticamente cuando se modifica un parmetro.
La sintaxis para usar la opcin configuration file con sp_configure es:
sp_configure "
file_name "

configuration file

", 0, "

subcommand"

, "

donde:

" configuration file " (incluya las comillas) especifica el parmetro de archivo de
configuracin.
0 debe incluirse como segundo parmetro de sp_configure para mantener la
compatibilidad hacia atrs.
file_name especifica el archivo de configuracin que desea utilizar junto con
cualquier subcommand .

Subcomandos opcionales
Los cuatro subcomandos descritos a continuacin pueden utilizarse con los archivos de
configuracin.write
write crea file_name a partir de la configuracin actual. Si no especifica un directorio
en file_name , el archivo se crea en $SYBASE . Si file_name ya existe, se escribe un
mensaje en el diario de errores; el nombre del archivo existente se cambia segn la
convencin file_name. 001 , file_name. 002 , y as sucesivamente. Si ha cambiado un
parmetro esttico pero no ha reiniciado el servidor, write da el valor actual en
ejecucin de ese parmetro.read
read realiza verificaciones de validacin sobre los valores contenidos en file_name y lee
en el servidor los valores que pasan la validacin. Si faltan parmetros en file_name , se
utilizan los valores actuales de los parmetros ausentes.
Si el valor de un parmetro esttico en file_name es diferente de su valor actual de
ejecucin, read falla y se imprime un mensaje. No obstante, la validacin se realiza
sobre los valores de file_name .verify

verify realiza verificaciones de validacin sobre los valores contenidos en file_name .


Esto es til, ya que impide que se intente configurar el servidor con valores
invlidos.restore
restore crea file_name con los valores de sysconfigures . Esto es til si se han perdido
todas las copias del archivo de configuracin y necesita generar una copia nueva. Si no
especifica un directorio en file_name , el archivo se crea en $SYBASE .Ejemplos
sp_configure " configuration file",
"$SYBASE/srv.config"

0, "read",

El ejemplo anterior realiza verificaciones de validacin sobre los valores del archivo
$SYBASE/srv.config y lee en el servidor los parmetros que pasan la validacin. En
lugar de los que no pasan la validacin, se emplean los valores actuales en ejecucin.
sp_configure " configuration file
"$SYBASE/my_server.config"

", 0, "write",

El ejemplo anterior crea el archivo $SYBASE/ my_server. config y escribe los valores de
configuracin que est usando el servidor en ese archivo.
sp_configure " configuration file
"$SYBASE/generic.config"

", 0, "verify",

El ejemplo anterior realiza verificaciones de validacin sobre los valores del archivo
$sybase/generic.config .
Edicin manual del archivo de configuracin
El archivo de configuracin es un archivo ASCII del sistema operativo que puede
modificarse con cualquier editor de texto capaz de guardar archivos en formato ASCII.
La sintaxis de cada parmetro es:
parameter_name

={

value

| default}

donde parameter_name es el parmetro que se desea especificar; value es el valor


numrico con que se desea definir parameter_name ; "default" especifica que se desea
utilizar el valor predeterminado de parameter_name . Si se utiliza "default", no debe
incluirse value .Ejemplos:
number of extent io buffers=100

define el parmetro number of extent i/o buffers como 100.


cpu accounting flush interval=default

especifica que debe usarse el valor predeterminado del parmetro cpu accounting flush
interval . Observe que, por haberse especificado "default", no se proporcion ningn
valor.
Note: No es posible editar el archivo de configuracin utilizado por un SQL Server en
ejecucin. Sin embargo, se puede crear una copia del mismo mediante la opcin write

de sp_configure o con el comando de copia de archivos del sistema operativo.


Entonces, se podr editar la copia.
Cuando edite manualmente un archivo de configuracin, tenga en cuenta que las
modificaciones no se validarn a menos que lo verifique con la opcin verify o reinicie
SQL Server con ese archivo de configuracin.
Si se pierden o corrompen todos los archivos de configuracin, puede volver a crear uno
en un servidor en ejecucin utilizando el subcomando restore y especificando un
nombre para el nuevo archivo. Los parmetros del archivo nuevo se definen con los
valores con que se ejecuta el servidor en ese momento.Permisos de los archivos de
configuracin
Los archivos de configuracin son archivos de texto ASCII no codificados. De forma
predeterminada, se crean con permisos de lectura y escritura para su propietario, y de
lectura para los dems usuarios. (Si ha creado el archivo de configuracin a nivel del
sistema operativo, usted ser el propietario del archivo; si lo ha creado desde SQL
Server usando el subcomando write o restore , el propietario es el usuario que arranc
SQL Server. Normalmente, este es el usuario "sybase".) Para limitar el acceso a los
archivos de configuracin, use el comando de permisos de archivo de su sistema
operativo y defina los permisos para leer, escribir y ejecutar como desee.
Note: Del mismo modo, es necesario definir los permisos para cada archivo de
configuracin creado.
Copias de seguridad de los archivos de configuracin
Los archivos de configuracin no se incluyen de forma automtica en las copias de
seguridad que se realicen de la base de datos master. Son archivos del sistema operativo,
y sus copias de seguridad deben hacerse del mismo modo empleado para efectuar las
copias de seguridad de archivos del sistema operativo.
Inicio de SQL Server con un archivo de configuracin
SQL Server puede invocarse con un archivo de configuracin mediante el comando
siguiente:
dataserver -c

configuration_file

donde configuration_file es el nombre y ruta del archivo que desea usar. Si el archivo
que especifica no existe, SQL Server no arranca.
Si el comando tiene xito, se crea el archivo $SYBASE/$DSLISTEN.bak con los valores
de configuracin almacenados en sysconfigures antes de que se actualizara
sysconfigures con los valores ledos del archivo especificado. Ese archivo se sustituye
cada vez que se arranca el servidor.
Jerarqua de los parmetros

Los parmetros de configuracin se agrupan segn el rea de comportamiento de SQL


Server que afectan. Esto facilita la identificacin de todos los parmetros que podra
necesitarse afinar para mejorar un rea del rendimiento de SQL Server en particular.
Los grupos son:

Backup/Recovery (copia de seguridad/recuperacin)


Cache Manager (administrador de cach)
Disk I/O (E/S de disco)
General Information (informacin general)
Languages (idiomas)
Lock Manager (administrador de bloqueos)
Memory Use (uso de memoria)
Network Communications (comunicaciones de red)
Operating System Resources (recursos del sistema operativo)
Physical Memory (memoria fsica)
Processors (procesadores)
SQL Server Administration (administracin de SQL Server)
User Environment (entorno de usuario)

Aunque cada parmetro pertenece a un grupo primario, muchos tambin pertenecen a


grupos secundarios. Por ejemplo, el parmetro number of remote connections
corresponde principalmente al grupo de comunicaciones de red, pero secundariamente
tambin a los grupos de administracin de SQL Server y de uso de memoria. Esto
refleja el hecho de que algunos parmetros tienen implicaciones en diversas reas del
comportamiento de SQL Server. sp_configure muestra los parmetros en todos los
grupos a que pertenecen.
La sintaxis para mostrar todos los grupos y sus parmetros asociados (y sus valores
actuales) es:
sp_configure

Note: La cantidad de parmetros que sp_configure devuelve depende del valor con que
est definido el nivel de visualizacin. Si dicho nivel es bsico, sp_configure no
devolver parmetros designados como intermedios o completos. Si est definido como
intermedio, sp_configure devuelve los parmetros designados como bsicos e
intermedios, pero no los completos. Consulte "Subconjuntos definidos por el usuario en
la jerarqua de parmetros: niveles de visualizacin" para obtener ms informacin
sobre los niveles de visualizacin.
La sintaxis para mostrar un grupo en particular y sus parmetros asociados es:
sp_configure

"

group_name"

donde group_name es el nombre del grupo en que est interesado. Por ejemplo, para
mostrar el grupo de E/S de disco, escriba:
sp_configure "Disk I/O"
Group: Disk I/O
Parameter Name
--------------

Default Memory Used Config Value Run Value


------- ----------- ------------ --------

allow sql server async i/o


disk i/o structures
number of devices
page utilization percent

1
256
10
95

0
0
0
0

1
256
10
95

1
256
10
95

Subconjuntos definidos por el usuario en la jerarqua de parmetros: niveles de


visualizacin
Dependiendo del uso que d a SQL Server, quiz deba ajustar algunos parmetros con
ms frecuencia que otros. En ese caso, le resultar ms sencillo trabajar con un
subconjunto de parmetros que tener que ver todo el grupo. El nivel de visualizacin
puede definirse con uno de tres valores, para que presente el subconjunto de parmetros
que mejor se adapte a su estilo de trabajo.
El nivel de visualizacin predeterminado es "comprehensive". Si se define otro nivel,
persiste durante mltiples sesiones. Sin embargo, puede cambiarse en cualquier
momento para ver ms o menos parmetros de configuracin.

El nivel bsico ("basic") muestra slo los parmetros ms bsicos y es adecuado


para una afinacin muy general del servidor.
El nivel intermedio ("intermediate") muestra parmetros algo ms complejos, as
como todos los bsicos. Este nivel es adecuado para una afinacin algo ms
compleja del servidor.
El nivel completo ("comprehensive") muestra todos los parmetros, incluidos los
ms complejos. Este nivel es adecuado para realizar una afinacin muy detallada
del servidor.

La sintaxis para mostrar el nivel de visualizacin actual es:


sp_displaylevel

La sintaxis para definir el nivel de visualizacin es:


sp_displaylevel "
"comprehensive"]

user_name

" [,"basic" | "intermediate" |

donde user_name es su nombre de login en SQL Server.


Efecto del nivel de visualizacin en la salida de sp_configure
Si su nivel de visualizacin est definido como "basic" o "intermediate", sp_configure
devuelve slo un subconjunto de los parmetros que devolvera de haber sido definido
como "comprehensive". Por ejemplo, si su nivel de visualizacin est definido como
"intermediate" y desea ver los parmetros del grupo de E/S de disco, escriba:
sp_configure "Disk I/O"

La salida ser similar a la siguiente:


Group: Disk I/O

Parameter Name
Default Memory Used Config Value Run Value
-------------------- ----------- ------------ -------allow sql server async i/o
1
0
1
1
disk i/o structures
256
0
256
256
number of devices
10
0
10
10
page utilization percent
95
0
95
95

Sin embargo, esto es slo un subconjunto de los parmetros del grupo Disk I/O, porque
un parmetro de ese grupo ( default sortorder id ) est definido como de nivel
Comprehensive.
Comando reconfigure
Versiones anteriores de SQL Server requeran la ejecucin de reconfigure despus de s
p_configure . Eso ya no es necesario. El comando reconfigure an existe, pero ya no
tiene ningn efecto. Fue incluido en esta versin slo para que los guiones anteriores a
la versin 11.0 se ejecuten sin necesidad de modificaciones.
Note: Si tiene guiones que incluyen reconfigure , es conveniente modificarlos. Aunque
reconfigure se incluy en esta versin, quiz no se soporte en versiones posteriores.

Salida de sp_configure
La salida de muestra siguiente ilustra el tipo de informacin que sp_configure imprime
si su nivel de visualizacin est definido como "comprehensive" y lo ejecuta sin
parmetros. Los valores impresos variarn, dependiendo de la plataforma y de los
valores que hayan sido cambiados.
1>

sp_configure

Group: General Information


Parameter Name
Default Memory Used Config Value Run Value
-------------------- ----------- ------------ --------configuration file
0
0
0 /remote/pub
Group: Backup/Recovery
Parameter Name
Default Memory Used Config Value Run Value
-------------------- ----------- ------------ --------recovery interval in minutes
5
0
5
5
tape retention in days
0
0
0
0
recovery flags
0
0
0
0
...

Note: Los restantes grupos y parmetros de configuracin aparecern en la salida (si su


nivel de visualizacin est definido como "comprehensive").
La columna "Default" muestra el valor con que se distribuye SQL Server. Si no se
reconfigura explcitamente un parmetro, retiene su valor predeterminado.
La columna "Memory Used" muestra la cantidad de memoria usada (en kilobytes) por
el parmetro con su valor actual. Algunos parmetros relacionados toman memoria del
mismo banco. Por ejemplo, la memoria usada para stack size y stack guard size ya se
tiene en cuenta en la memoria usada por number of user connections . Si sumara la
memoria utilizada por cada uno de estos parmetros separadamente, resultara un total

mayor que la memoria usada en realidad. En esta columna, los parmetros que
"comparten" memoria con otros parmetros se indican con la marca "#".
La columna "Config Value" muestra el valor del parmetro de configuracin ms
reciente definido con sp_configure . Cuando se ejecuta sp_configure para modificar un
parmetro dinmico:

Los valores de configuracin y ejecucin se actualizan.


El archivo de configuracin se actualiza.
El cambio tiene efecto de inmediato.

Cuando se modifica un parmetro esttico:

El valor de configuracin se actualiza.


El archivo de configuracin se actualiza.
El cambio tiene efecto slo al reiniciarse SQL Server.

La columna " Run Value " muestra el valor que actualmente est usando SQL Server.
Cambia cuando se modifica el valor de un parmetro dinmico con sp_configure y, en
el caso de parmetros estticos, despus de reiniciarse SQL Server.

Cmo utiliza la memoria SQL Server


Muchos parmetros de configuracin consumen memoria; esta memoria se asigna de la
cantidad que usted configura para SQL Server. En general, es conveniente configurar
tanta memoria para SQL Server como haya disponible fsicamente. Si ha especificado
ms memoria de la disponible, es posible que SQL Server no arranque, o si lo hace, la
proporcin de fallos de pginas del sistema operativo puede aumentar
significativamente. Por otra parte, si se especifica demasiado poca memoria, es posible
que SQL Server no arranque; si arranca, puede funcionar muy lentamente por frecuentes
E/S de disco.
Para aprender ms sobre cmo utiliza la memoria SQL Server y cmo determinar la
memoria disponible en el sistema, consulte el Captulo 8, "Configuracin de la
memoria". Consulte tambin la descripcin de los parmetros en este captulo para
comprender las formas en que cada parmetro consume memoria.

Detalle de los parmetros de configuracin


Las secciones siguientes dan informacin tanto resumida como detallada sobre cada uno
de los parmetros de configuracin. Los parmetros se enumeran por grupo y, dentro de
cada grupo, por orden alfabtico.
print recovery information define un alternador que determina qu informacin
muestra SQL Server en la consola durante una recuperacin. (Las recuperaciones se
realizan en cada base de datos al iniciarse SQL Server, y cuando se carga el volcado de
una base de datos.) El valor predeterminado es 0, que implica que SQL Server muestra
slo el nombre de la base de datos y un mensaje indicando que la recuperacin est en
curso. El otro valor vlido es 1, que significa que SQL Server muestra informacin

sobre cada transaccin individual procesada durante la recuperacin, incluyendo si


fueron abortadas o consignadas.
recovery interval in minutes
Informacin sumaria
Nombre en la versin anterior recovery interval
Valor predeterminado

Margen de valores

1-32767

Estado

Dinmico

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro recovery interval in minutes define el nmero mximo de minutos que


SQL Server debe usar por base de datos para terminar sus procedimientos de
recuperacin en caso de un fallo del sistema. El procedimiento de recuperacin revierte
o completa las transacciones comenzando con la transaccin que el proceso de punto de
verificacin indica como transaccin activa ms antigua. El proceso de recuperacin
tiene ms o menos trabajo que hacer dependiendo del valor de recovery interval in
minutes .
SQL Server estima que 6000 filas del diario de transacciones requieren 1 minuto de
tiempo de recuperacin. Sin embargo, los distintos tipos de registros de diario pueden
precisar ms o menos tiempo para su recuperacin. Si define recovery interval in
minutes como 3, el proceso de punto de verificacin escribe las pginas cambiadas en
el disco slo cuando syslogs contiene ms de 18.000 filas.
Note: El intervalo de recuperacin no tiene efecto sobre las transacciones prolongadas y
mnimamente registradas (como create index ) que estuvieran activas cuando SQL
Server fall. Revertir estas transacciones puede requerir tanto tiempo como llev
ejecutarlas. Para evitar largas demoras, vuelque cada base de datos inmediatamente
despus de crear un ndice en una de sus tablas.
SQL Server usa este recovery interval in minutes y la cantidad de actividad de cada
base de datos para decidir cundo realizar un punto de verificacin de cada una. Cuando
SQL Server verifica as una base de datos, escribe en disco todas las pginas sucias (las
pginas de datos modificadas en el cach). El punto de verificacin tambin realiza
algunas tareas de mantenimiento, incluyendo el truncado del diario de transacciones de
cada base de datos para la cual se haya definido la opcin truncate log on chkpt .
Aproximadamente una vez por minuto, el proceso de punto de verificacin en reposo se
"reactiva", verifica el valor de truncate log on chkpt y comprueba el intervalo de
recuperacin, para determinar si es necesario un punto de verificacin. La ilustracin
siguiente muestra la lgica utilizada por SQL Server durante este proceso.
Figure 11-15: Proceso del punto de verificacin
Probablemente, convenga cambiar el intervalo de recuperacin si la aplicacin y su uso
cambian. Por ejemplo, puede convenir acortar el intervalo de recuperacin cuando haya

un aumento en la actividad de actualizacin en SQL Server. La reduccin del intervalo


provoca puntos de verificacin ms frecuentes, lo cual produce altibajos en el sistema o
lo demora muy ligeramente. Por otra parte, si se define el intervalo de recuperacin con
un valor demasiado alto, el tiempo de recuperacin podra ser inaceptablemente
prolongado. (Los altibajos provocados por el proceso de punto de verificacin pueden
reducirse reconfigurando el parmetro housekeeper free write percent . Consulte
"housekeeper free write percent" para obtener ms informacin.) Para obtener ms
informacin sobre las implicaciones de recovery interval in minutes sobre el
rendimiento, consulte "Speed of Recovery" de la Gua de Mejora de Rendimiento y
Afinacin .
tape retention in days
Informacin sumaria
Nombre en la versin anterior tape retention
Valor predeterminado
0
Margen de valores

0-365

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro tape retention in days especifica el nmero de das que usted tiene
previsto retener cada cinta despus de haberla usado para un volcado de bases de datos
o de diarios de transacciones. Est diseado para evitar que escriba accidentalmente
sobre una cinta.
Por ejemplo, si defini t ape retention in days como 7 das e intenta utilizar la cinta
antes de que hayan transcurrido siete das desde la ltima vez que realiz un volcado en
esa cinta, Backup Server emite un mensaje de advertencia al operador de la cinta.
La advertencia puede anularse usando la opcin with init cuando se ejecuta el comando
de volcado. Tenga en cuenta que hacer esto provocar la prdida de todos los datos que
contenga la cinta.
Los comandos dump database y dump transaction disponen de la opcin retaindays ,
que anula el valor de tape retention in days para un volcado en particular. Consulte
"Proteccin de archivos de volcado contra sobrescritura" para obtener ms informacin.
Administrador de cach
Los parmetros de este grupo configuran los cachs de datos y de procedimientos.
memory alignment boundary
Informacin sumaria
Nombre en la versin anterior calignment

Valor predeterminado

2048

Margen de valores

2048-16384

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro memory alignment boundary determina en qu lmite se alinean los


cachs de datos.
Algunas mquinas realizan E/S con ms eficacia cuando las estructuras se alinean en un
lmite especfico de direcciones de memoria. Para preservar esta alineacin, los valores
de memory alignment boundary deben ser siempre mltiplos de 2K.
Note: El parmetro memory alignment boundary se incluye para soportar ciertas
plataformas de hardware. No lo modifique a menos que as se lo indique el Servicio de
Asistencia Tcnica de Sybase.
number of index trips
Informacin sumaria
Nombre en la versin anterior cindextrips
Valor predeterminado

Margen de valores

0-65535

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of index trips especifica el nmero de veces que una pgina de
ndice envejecida atraviesa la cadena MRU/LRU (usada ms recientemente/usada
menos recientemente) antes de que se piense en vaciarla. Cuanto mayor sea el valor de
number of index trips , ms tiempo permanecen las pginas de ndice antiguas en el
cach.
Un cach de datos se implementa como una cadena MRU/LRU. Cuando los procesos de
usuario tienen acceso a las pginas de datos e ndice, stas se sitan en el extremo de
pginas usadas ms recientemente (MRU) de la cadena MRU/LRU del cach. En
algunos entornos de muchas transacciones (y en algunos sistemas de evaluacin de
rendimiento), es deseable mantener las pginas de ndice en el cach, ya que
probablemente se las volver a necesitar muy pronto. Si define number of index trips
con un valor ms alto, las pginas de ndice se mantendrn ms tiempo en el cach; si lo
define ms bajo, se eliminarn antes del cach.
Note: Si el cach utilizado por un ndice es relativamente pequeo (en especial, si
comparte espacio con otros objetos) y hay un alto volumen de transacciones, cudese de
no definir number of index trips con un valor demasiado alto. El cach rebosar de
pginas que no envejecen, y los procesos de los usuarios comenzarn a vencer.

number of oam trips


Informacin sumaria
Nombre en la versin anterior coamtrips
Valor predeterminado

Margen de valores

0- 65535

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of oam trips especifica el nmero de veces que una pgina OAM
envejecida atraviesa la cadena MRU/LRU antes de que se piense en vaciarla. Cuanto
mayor sea el valor de number of oam trips , ms tiempo permanecen las pginas OAM
envejecidas en el cach.
Cada tabla, y cada ndice de una tabla, tiene una pgina OAM (mapa de asignacin de
objetos) . La pgina OAM contiene informacin sobre las pginas asignadas a la tabla o
ndice, y se verifica cuando se requiere una pgina nueva para el ndice o tabla (consulte
"page utilization percent" para obtener ms informacin). Una sola pgina OAM puede
contener correlaciones de asignaciones de entre 2000 y 63.750 pginas de datos o de
ndice.
Las pginas OAM apuntan a la pgina de asignacin de cada unidad de asignacin en
que el objeto utiliza espacio. Las pginas de asignacin, a su vez, siguen la informacin
sobre el uso de sector y pgina dentro de la unidad de asignacin.
En algunos entornos y en sistemas de evaluacin de rendimiento que implican
significativas asignaciones de espacio (es decir, operaciones de copia masiva), mantener
las pginas OAM en el cach ms tiempo mejora el rendimiento. La definicin de
number of oam trips con un valor ms alto mantiene las pginas OAM en el cach.
Note: Si el cach es relativamente pequeo y lo utilizan muchos objetos, no se debe
definir number of oam trips con un valor demasiado alto, ya que el cach rebosara de
pginas OAM que no envejecen y los procesos de usuario comenzaran a generar
errores de tiempo vencido.
procedure cache percent
Informacin sumaria
Nombre en la versin anterior procedure cache
Valor predeterminado
20
Margen de valores

1-99

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro procedure cache percent especifica la cantidad de memoria asignada al


cach de procedimientos despus de satisfechas las necesidades de memoria de SQL
Server. Dichas necesidades son la suma de memoria necesaria para bloqueos,
conexiones de usuario, el cdigo en s (que vara ligeramente de una versin a otra) y
otros recursos. La memoria restante se divide entre el cach de procedimientos y el de
datos segn el valor de procedure cache percent .
SQL Server guarda los procedimientos almacenados compilados en el rea de memoria
llamada cach de procedimientos. Si el servidor encuentra un procedimiento o una
compilacin que ya estn en este cach, no necesita leerlos del disco. SQL Server
tambin usa espacio del cach de procedimientos para compilar consultas mientras crea
procedimientos almacenados.
SQL Server carga las pginas de datos y de ndice en el rea de memoria llamada cach
de datos. Si SQL Server encuentra una pgina de datos o de ndice en el cach que un
usuario ha solicitado, no es necesario que la lea del disco. El cach de datos contiene
pginas de datos y de ndice usadas recientemente; las ms antiguas se vacan al disco
conforme se necesita espacio para las nuevas.
Ambos cachs se administran en forma de cadena MRU/LRU (usada ms
recientemente/usada menos recientemente).
Dado que el valor ptimo de procedure cache percent vara de una aplicacin a otra,
cambiarlo puede mejorar el rendimiento de SQL Server. Por ejemplo, si se ejecutan
muchos procedimientos diferentes o consultas ad-hoc, su aplicacin har un uso
intensivo del cach de procedimientos, por lo que convendr aumentar este valor.
Muchas aplicaciones caen dentro de esta categora durante el desarrollo. As, durante el
ciclo de desarrollo, convendr definir este parmetro en 50 y cambiarlo a 20 cuando la
aplicacin sea estable. Para obtener ms informacin sobre la configuracin de cachs
de procedimientos, consulte "The Procedure Cache" de la Gua de Mejora de
Rendimiento y Afinacin .
total data cache size
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

N/A

Margen de valores

N/A

Estado

Calculado

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro total data cache size representa la cantidad de memoria disponible para
pginas de datos, ndice y diario. Es un valor calculado que el usuario no puede
configurar directamente.

La cantidad de memoria disponible para el cach de datos puede verse afectada por
diversos factores, entre los que se incluyen:

La cantidad de memoria fsica disponible en la mquina.


Los valores de definicin de los parmetros siguientes:
o total memory
o number of user connections
o total procedure cache percent
o number of open databases
o number of devices
o number of open database objects

Otros parmetros tambin afectan la cantidad de memoria disponible, pero en menor


grado.
Para obtener informacin sobre los cachs de datos y sobre la forma en que SQL Server
asigna la memoria, consulte "Cmo utiliza la memoria SQL Server".
E/S de disco
Los parmetros de este grupo configuran la E/S de disco de SQL Server.
allow sql server async i/o
Informacin sumaria
Nombre en la versin anterior T1603 (indicador de rastreos)
Valor predeterminado

1 (activado)

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro allow sql server async i/o acta como alternador que habilita a SQL
Server para ejecutarse con E/S asincrnica de disco. Para utilizar este tipo de E/S, debe
habilitarla tanto en SQL Server como en su sistema operativo. (Consulte "o/s async i/o
enabled" para obtener informacin sobre cmo determinar si la E/S asincrnica de disco
est habilitada actualmente o no a nivel del sistema operativo. Consulte la
documentacin de su sistema operativo para obtener informacin sobre la habilitacin
de E/S asincrnica a ese nivel.)
Bajo prcticamente cualquier circunstancia, la E/S de disco funciona con mayor rapidez
de forma asincrnica que sincrnica. Esto se debe a que, cuando SQL Server realiza una
E/S asincrnica, no tiene que esperar una respuesta antes de realizar ms E/S.
Si SQL Server est configurado para utilizar E/S de bloque y el dispositivo master est
en un archivo del sistema operativo, la E/S asincrnica puede ser ligeramente ms lenta
que la sincrnica. Sin embargo, esto no es recomendable, porque SQL Server no puede

garantizar la recuperacin total de los datos en caso de un fallo del sistema si el


dispositivo master est en un archivo del sistema operativo.
disk i/o structures
Informacin sumaria
Nombre en la versin anterior cnblkio
Valor predeterminado

256

Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro disk i/o structures especifica el nmero inicial de bloques de control de


E/S de disco que SQL Server asigna al arrancar.
Los procesos de usuario requieren un bloque de control de E/S de disco antes de que
SQL Server pueda iniciar una solicitud de E/S para el proceso. La memoria se asigna
preliminarmente para dichos bloques cuando SQL Server arranca. Configure d isk i/o
structures con el valor ms alto permitido por su sistema operativo, para minimizar la
posibilidad de agotar las estructuras de E/S del disco. Por ejemplo, si su sistema
operativo permite un nmero N de E/S simultneas de disco, configurar disk i/o
structures como N requerira:
N

* bytes/estructuras = cantidad de memoria

Consulte la documentacin de su sistema operativo para obtener informacin sobre E/S


simultneas de disco.
number of devices
Informacin sumaria
Nombre en la versin anterior devices
Valor predeterminado

10

Margen de valores

1-256

Estado

Esttico

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro number of devices controla el nmero de dispositivos de base de datos


que SQL Server puede utilizar, sin incluir los usados para volcados de base de datos o
de diario de transacciones. Cada dispositivo usa menos de 512 bytes de memoria.
Cada nmero de dispositivo debe ser exclusivo entre los nmeros de dispositivo
utilizados por SQL Server. El nmero 0 se reserva para el master. Los nmeros vlidos

son del 4 al 256, inclusive. Sin embargo, el nmero ms alto debe ser uno menos que el
nmero de dispositivos de base de datos configurados para SQL Server. Por ejemplo, si
se configura el servidor para 10 dispositivos, el margen vlido de nmeros de
dispositivo es de 1 a 9, inclusive.
Para determinar qu nmeros estn actualmente en uso, ejecute sp_helpdevice y lea la
columna device_number de la salida.
Si omite un dispositivo con sp_dropdevice , no es posible volver a utilizar su vdevno
hasta reiniciar SQL Server.
Si desea reducir el valor de number of devices despus de haber aadido dispositivos
de base de datos, primero deber verificar qu nmeros ya estn en uso por dispositivos
de base de datos. El comando siguiente imprime el valor ms alto que hay en uso:
select max(low/power(2,24))+1
from master..sysdevices

Warning! Si define number of devices con un valor demasiado bajo, SQL Server no
podr recuperar bases de datos que utilicen un mayor nmero de dispositivos.
page utilization percent
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

95

Margen de valores

1-100

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro page utilization percent se utiliza durante las asignaciones de pgina para
controlar si SQL Server realiza un barrido del OAM ( mapa de asignacin de objetos )
de una tabla en busca de pginas sin usar, o simplemente asigna un nuevo sector a la
tabla (consulte "number of oam trips" para obtener ms informacin sobre el OAM).
Si page utilization percent es 100, SQL Server siempre barre todas las pginas de
OAM para encontrar pginas sin usar asignadas al objeto antes de asignar un nuevo
sector. Si el valor de este parmetro es inferior a 100, SQL Server lo compara con la
proporcin de pginas usadas y no usadas asignadas a la tabla, como sigue:
100 * pg. usadas/(pg. usadas + pg. sin usar)

Si el valor de page utilization percent es mayor que la proporcin, SQL Server asigna
un nuevo sector, en lugar de buscar pginas sin usar.
Por ejemplo, cuando se insertan datos en una tabla de 10GB que tiene 120 pginas de
OAM y slo una pgina de datos sin usar:

Un page utilization percent de 100 indica a SQL Server que busque en las 120
pginas de OAM para localizar la pgina de datos sin usar.
Un page utilization percent de 95 permite que SQL Server asigne simplemente
un nuevo sector al objeto, porque 95 es menor que la proporcin de pginas
usadas respecto de las sin usar.

Un valor de page utilization percent bajo produce ms pginas sin usar. Un valor alto,
hace ms lentas las asignaciones de pgina en tablas grandes, ya que SQL Server realiza
un barrido de OAM para localizar cada pgina sin usar antes de asignar un sector nuevo.
Si las asignaciones de pgina (especialmente en el caso de grandes inserciones) parecen
lentas, se puede reducir el valor de page utilization percent , pero vuelva a definirlo
con el valor anterior despus de insertar todos los datos, ya que un valor ms bajo
produce pginas sin usar en todas las tablas.
La copia masiva no tiene en cuenta el valor de page utilization percent y asigna
siempre sectores nuevos hasta que no haya ms sectores disponibles en la base de datos.
Informacin general
Los parmetros de este grupo no estn relacionados con un rea en particular del
comportamiento de SQL Server.
configuration file
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

Margen de valores

N/A

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro configuration file especifica la ubicacin del archivo de configuracin


actualmente en uso. Consulte "Uso de sp_configure con un archivo de configuracin"
para obtener una descripcin completa de los archivos de configuracin.
Tenga en cuenta que, en la salida de sp_configure , la columna "Run Value " muestra
slo diez caracteres. Por ello, es posible que la salida no muestre toda la ruta y nombre
del archivo de configuracin.
Idiomas
Los parmetros de este grupo configuran idiomas, criterios de ordenacin y juegos de
caracteres.
default character set id

Informacin sumaria
Nombre en la versin anterior default character set id
Valor predeterminado
1
Margen de valores

0-255

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro default character set id es el nmero del juego de caracteres


predeterminado utilizado por el servidor, que se define durante la instalacin y puede
cambiarse mediante sybinit . Consulte el Captulo 12, "Juegos de caracteres, ordenacin
e idioma de los mensajes", para obtener una explicacin de cmo se cambian los juegos
de caracteres y los criterios de ordenacin.
default language id
Informacin sumaria
Nombre en la versin anterior default language
Valor predeterminado
0
Margen de valores

0-32767

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro default language id es el nmero del idioma que se utiliza para mostrar
los mensajes del sistema, salvo que un usuario haya elegido otro idioma entre los
disponibles en el servidor. us_english siempre tiene una ID de 0. A los idiomas
adicionales se les asignan nmeros exclusivos conforme sean aadidos.
default sortorder id
Informacin sumaria
Nombre en la versin anterior default sortorder id
Valor predeterminado

50

Margen de valores

0-255

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro default sortorder id es el nmero del criterio de ordenacin actualmente


instalado como predeterminado en el servidor. Si desea cambiar el criterio de

ordenacin predeterminado, consulte el Captulo 12, "Juegos de caracteres, ordenacin e


idioma de los mensajes", para obtener ms informacin.
number of languages in cache
Informacin sumaria
Nombre en la versin anterior language in cache
Valor predeterminado

Margen de valores

3-100

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro number of languages in cache indica el nmero mximo de idiomas que


puede haber simultneamente en el cach de idiomas. El nmero predeterminado es 3
Administrador de bloqueos
Los parmetros de este grupo configuran los bloqueos.
address lock spinlock ratio
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

100

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

Para los SQL Server que se ejecutan con varios motores, se puede definir la relacin de
spinlocks (bloqueos de giro) que protegen la tabla de desmenuzamiento de bloqueos de
direccin mediante el parmetro address lock spinlock ratio . Un SQL Server
configurado con un solo motor (definido por el parmetro max online engines ) tiene
un solo bloqueo de giro, independientemente del valor especificado para address lock
spinlock ratio , ya que slo ese motor tendr acceso a la tabla de desmenuzamiento.
Los sistemas SQL Server SMP que tienen dos o ms motores pueden tener un mximo
de 1031 bloqueos de giro protegiendo la tabla.
SQL Server gestiona la adquisicin y liberacin de bloqueos de direcciones usando una
tabla interna de desmenuzamiento con 1031 filas (llamadas cubos de
desmenuzamiento). Esta tabla puede usar uno o ms bloqueos de giro para serializar el
acceso entre procesos que se ejecutan en motores diferentes. Un bloqueo de giro es un
simple mecanismo interno de bloqueo que el acceso de un proceso al recurso que otro

proceso est usando actualmente. Los procesos que intentan el acceso al recurso deben
esperar (o "girar") hasta que se libere el bloqueo.
La Figura 11-2 ilustra la relacin entre los bloqueos de giro y la tabla interna de
desmenuzamiento de bloqueos de direccin. De forma predeterminada, los sistemas
SQL Server SMP con ms de un motor se configuran con 11 bloqueos de giro para la
tabla. Los 10 primeros protegen 100 filas cada uno, y el undcimo protege las 31
restantes.
Figure 11-16: Relacin entre los bloqueos de giro y la tabla de desmenuzamiento
de bloqueos de direccin
El parmetro address lock spinlock ratio especifica el nmero de filas de la tabla de
desmenuzamiento de bloqueos de direccin protegidas por un bloqueo de giro (filas por
bloqueo de giro), no el total de bloqueos de giro. As, el total de bloqueos de giro que
protegen la tabla se expresa por esta frmula:
(1031/valor de address lock spinlock ratio ) + 1 para cualquier resto
Por ejemplo, si especifica una relacin de 50 filas por bloqueo de giro, el nmero total
de bloqueos de giro es igual a 21 (1031/50 ms 1); 20 bloqueos de giro protegen 50 filas
cada uno, mientras que el vigesimoprimero protege las 31 filas restantes. Dicha relacin
puede definirse como sigue:
sp_configure "address lock spinlock ratio", 50

El valor predeterminado de SQL Server para address lock spinlock ratio es 100, que
define 11 bloqueos de giro para la tabla de desmenuzamiento de bloqueos de direccin.
Si especifica un valor de 1031 o mayor, SQL Server utiliza un solo bloqueo de giro para
toda la tabla. address lock spinlock ratio n o es un parmetro de configuracin
dinmico. Para que cualquier cambio tenga efecto, hay que cerrar y reiniciar SQL
Server.
En teora, proteger una fila con un bloqueo de giro (definiendo address lock spinlock
ratio como 1 para un total de 1031 bloqueos de giro) proporcionara la menor contienda
por un bloqueo de giro y el mayor nmero posible de operaciones simultneas de
bloqueo de direcciones. Sin embargo, evaluaciones efectuadas indican que la contienda
por bloqueos de giro suele ser inferior al 3 por ciento si se usa el valor predeterminado
de SQL Server de 11 bloqueos de giro (un address lock spinlock ratio de 100).
Note: Reducir el valor del parmetro address lock spinlock ratio debera tener poco
efecto sobre el rendimiento de SQL Server. El valor predeterminado de este parmetro
es correcto para la mayora de servidores.
Cada bloqueo de giro adicional usa hasta 256 bytes de memoria. Este requisito reduce la
memoria disponible para los cachs de datos y de procedimientos, lo cual puede afectar
otros aspectos del rendimiento del servidor. Por lo tanto, tenga cuidado al realizar
cambios en este parmetro.
deadlock checking period

Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

500

Margen de valores

0- 2147483647

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro deadlock checking period especifica el periodo mnimo de tiempo (en


milisegundos) que transcurre antes de que SQL Server inicie una verificacin de
bloqueo insoluble para un proceso que espera a que se libere un bloqueo. Esa
verificacin es una sobrecarga que consume tiempo de las aplicaciones que esperan sin
estar bloqueadas, y la sobrecarga crece conforme aumenta el porcentaje de solicitudes
de bloqueo que deben esperar para lograr un bloqueo.
Si se define este parmetro con un valor n distinto de cero, SQL Server inicia una
verificacin de bloqueo insoluble despus de que un proceso espere al menos n
milisegundos. Por ejemplo, para hacer que los procesos esperen un bloqueo al menos
700 ms. antes de cada verificacin de bloqueo insoluble, escriba lo siguiente:
sp_configure "deadlock checking period", 700

Si define este parmetro como 0, SQL Server inicia la verificacin de bloqueo insoluble
en el momento en que cada proceso comienza a esperar un bloqueo. Es un valor de
configuracin dinmico, por lo que cualquier cambio tiene un efecto inmediato. El valor
predeterminado de SQL Server para deadlock checking period es 500 ms.
Configurar deadlock checking period con un valor mayor genera demoras ms largas
antes de detectar bloqueos insolubles. Sin embargo, dado que SQL Server concede la
mayora de las solicitudes de bloqueo antes de que transcurra ese tiempo, se evita la
sobrecarga de verificacin de bloqueo insoluble se evita para esas solicitudes. Por lo
tanto, si se espera que las aplicaciones vayan a bloquearse insolublemente con mucha
frecuencia, se puede definir deadlock checking period con un valor ms alto y evitarse
as la sobrecarga de esa verificacin para la mayora de los procesos. De lo contrario,
debera bastar el valor predeterminado de 500 ms. Para obtener ms informacin sobre
la verificacin de bloqueos insolubles, consulte la Gua de Mejora de Rendimiento y
Afinacin .
deadlock retries
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

Margen de valores

0-2147483647

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro deadlock retries especifica el nmero de veces que una transaccin


intenta lograr un bloqueo despus de haber sido vctima de un bloqueo insoluble. Por
ejemplo, en la Figura 11-3, la transaccin A necesita adquirir un bloqueo sobre la tabla
X, para la cual la transaccin B ya tiene un bloqueo exclusivo de tabla. Sin embargo,
para que la transaccin B pueda liberar su bloqueo exclusivo sobre la tabla X, debe
adquirir un bloqueo sobre la tabla Y, para la cual la transaccin A tiene un bloqueo
exclusivo.
Figure 11-17: Dos transacciones en un bloqueo insoluble
Ninguna de las transacciones puede continuar hasta que la otra libere su bloqueo
exclusivo. La transaccin A ha acumulado menos tiempo de CPU que la B, y as se
convierte en vctima del bloqueo insoluble. La transaccin A contina intentando
adquirir un bloqueo sobre la tabla X el nmero de veces indicado por el valor de
deadlock retries . Si no logra el bloqueo despus de esos reintentos, la transaccin
termina.
freelock transfer block size
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

30

Margen de valores

1- 2147483647

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

Cuando un proceso que se ejecuta en un SQL Server multimotor solicita un bloqueo,


busca uno en la lista de bloqueos libres de su motor. Si dicha lista ha agotado los
bloqueos, SQL Server mueve cierto nmero de bloqueos de su lista global de bloqueos
libres a la lista de bloqueos libres del motor. Despus que se complete un proceso, los
bloqueos liberados se acumulan en la lista de bloqueos libres del motor. Cuando el
nmero de bloqueos de la lista del motor alcanza su mximo (definido por el parmetro
max engine freelocks ), SQL Server desplaza algunos bloqueos de la lista del motor a
la lista de bloqueos libres global. Esto reabastece el nmero de bloqueos disponibles
para otros motores en la lista global.
El parmetro de configuracin freelock transfer block size especifica el nmero de
bloqueos que se desplazan entre las listas de bloqueos libres de los motores y la global.
El valor predeterminado de SQL Server para freelock transfer block size es 30, y el
mnimo permitido es 1. Por ejemplo, para definir el tamao de transferencia como 50,
escriba lo siguiente:
sp_configure "freelock transfer block size", 50

Cuando se define con un valor mayor, se reduce la frecuencia de las transferencias entre
las listas de bloqueos libres de los motores y la global, lo cual disminuye la contienda en
el acceso a la lista global. Sin embargo, un valor mayor puede provocar el acceso a
muchas ms estructuras de bloqueo de las que un proceso necesita. El valor mximo
permitido por SQL Server para freelock transfer block size no puede ser superior a la
mitad del nmero mximo de bloqueos disponibles para la lista de bloqueos libres de un
motor, como lo define la frmula siguiente:
((valor porcentual de max engine freelocks * valor de number of locks )/
valor de max online engines ) / 2
Por ejemplo, si max engine freelocks es 10 por ciento y el valor de number of locks es
igual a 5000, el valor mximo permitido para freelock transfer block size es 50 en un
SQL Server que funcione con cinco motores.
Si intenta definirlo por encima de su valor mximo, SQL Server devuelve un mensaje
de error y no efecta cambios en f reelock transfer block size . Tambin devuelve un
error si el valor actual de freelock transfer block size va a superar el mximo cuando
se intente aumentar max online engines , o disminuir max engine freelocks o number
of locks . SQL Server define ese mximo para no agotar las listas de bloqueos libres de
los motores con demasiados bloqueos, lo cual puede forzar la obtencin inmediata de
ms bloqueos de la lista global.
max engine freelocks
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

10

Margen de valores

1-50

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

Cuando un proceso que se ejecuta en un SQL Server multimotor solicita un bloqueo,


busca uno en la lista de bloqueos libres de su motor. Si no quedan bloqueos en esa lista,
SQL Server desplaza un nmero de bloqueos (definido por el parmetro freelock
transfer block size ) de su lista global de bloqueos libres a la del motor. El nmero
total de bloqueos de la lista global se define mediante el parmetro de configuracin
number of locks . En el caso de un SQL Server de un solo motor, toda la lista global de
bloqueos libres se desplaza a la lista del motor en el momento de iniciarse el servidor,
cualquiera sea el valor de este parmetro.
Cuando un motor completa un proceso, se liberan todos los bloqueos retenidos por ese
proceso y vuelven a la lista de bloqueos libres de ese motor. Esto reduce la contienda de
cada motor con acceso a la lista global. Sin embargo, si el nmero de bloqueos liberados
para el motor supera el mximo de bloqueos permitidos en la lista del motor, SQL
Server desplaza un nmero de bloqueos (definido por freelock transfer block size ) a la

lista global. Esto reabastece el nmero de bloqueos disponibles para otros motores en la
lista global.
Es posible especificar el nmero mximo de bloqueos disponibles para las listas de
bloqueos libres de los motores como un porcentaje del total de number of locks
disponibles para el servidor, con el parmetro max engine freelocks . Se puede
especificar cualquier valor entre el 1 y el 50 por ciento. Este es un valor de
configuracin dinmico, por lo que cualquier cambio tiene efecto inmediato. Por
ejemplo, para que el 20 por ciento del nmero total de bloqueos sea el nmero mximo
de bloqueos disponibles para las listas de los motores, escriba lo siguiente:
sp_configure "max engine freelocks", 20

Si el servidor tiene 5000 bloqueos configurados para el parmetro number of locks , el


20 por ciento (o 1000) representa el nmero mximo de bloqueos disponibles para las
listas de bloqueos libres de todos los motores. El mximo real para la lista de cada
motor depende del nmero de motores configurados en SQL Server (parmetro max
online engines ). Si el servidor tiene cinco motores, el mximo para la lista de cada
motor es 1000 dividido por 5, o sea 200 bloqueos. Por lo tanto, un cambio en los
parmetros number of locks o max online engines puede afectar al valor mximo de la
lista de bloqueos libres de cada motor, aunque el valor de max engine freelocks
permanezca igual.
Si define max engine freelocks con un valor demasiado alto en algunos servidores, la
mayora de los bloqueos disponibles pueden acabar en las listas de bloqueos libres de
cada motor, dejando muy pocos bloqueos en la lista global de SQL Server. Si la lista de
un motor queda vaca, tambin es probable que est vaca la lista de bloqueos libres
global, lo cual produce el mensaje de error 1279 de SQL Server, aunque otros motores
tengan bloqueos en sus listas de bloqueos libres:
SQL Server se qued sin bloqueos en la mquina %1!. Ejecute el
comando cuando haya menos usuarios activos, o solicite al
administrador del sistema (SA) que reconfigure el mximo de bloqueos
libres o cantidad de bloqueos.

Para evitar la aparicin frecuente del mensaje 1279, hay que disminuir el valor
configurado de max engine freelocks o aumentar el de number of locks . Este mensaje
es distinto del 1204, que indica que SQL Server no tiene ms bloqueos en la lista global
de bloqueos libres ni en las listas de todos los motores.
number of locks
Informacin sumaria
Nombre en la versin anterior locks
Valor predeterminado
5000
Margen de valores

1000-2147483647

Estado

Esttico

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro number of locks define el nmero total de bloqueos disponibles para


todos los usuarios de SQL Server. Los bloqueos no se comparten como las bases de
datos abiertas y sus objetos.
El nmero de bloqueos en uso en cada momento vara significativamente segn la
cantidad y tipo de actividad en SQL Server. Para comprobar cuntos bloqueos estn en
uso en un momento dado, use el procedimiento almacenado sp_lock .
Comience con el valor predeterminado, 5000. Si no alcanzara, aumente number of
locks en otros 1000. Contine haciendo esto hasta no quedarse sin bloqueos. (Este
sistema es preferible a comenzar incrementando number of locks a un valor
arbitrariamente alto. Cada bloqueo requiere 72 bytes de memoria. Aunque es una
cantidad relativamente pequea, se va acumulando. Tenga en cuenta que cada 1000
bloqueos consumen 72K de memoria.)
Si define number of locks con un valor demasiado bajo y se queda sin bloqueos, SQL
Server muestra dos mensajes, uno a nivel del motor y otro a nivel del servidor.
page lock spinlock ratio
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

100

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

Para los SQL Server que se ejecutan con varios motores, se puede definir la relacin de
bloqueos de giro que protegen la tabla interna de desmenuzamiento de bloqueos de
pgina mediante el parmetro page lock spinlock ratio . Un SQL Server configurado
con un solo motor (definido por max online engines ) tiene un solo bloqueo de giro,
cualquiera sea el valor especificado para page lock spinlock ratio , puesto que slo ese
motor puede tener acceso a la tabla de desmenuzamiento. Los sistemas SQL Server
SMP con dos o ms motores pueden tener un mximo de 1031 bloqueos de giro
protegiendo la tabla.
SQL Server administra la adquisicin y liberacin de bloqueos de pgina usando una
tabla interna de desmenuzamiento con 1031 filas (llamadas cubos de
desmenuzamiento). Esta tabla puede usar uno o ms bloqueos de giro para serializar el
acceso entre procesos que se ejecutan en motores diferentes. Un bloqueo de giro es un
sencillo mecanismo interno de bloqueo que impide el acceso de un proceso al recurso
utilizado actualmente por otro proceso. Todos los procesos que intentan el acceso al
recurso deben esperar (o "girar") hasta que se libere el bloqueo.

La Figura 11-4 ilustra la relacin entre los bloqueos de giro y la tabla interna de
desmenuzamiento de bloqueos de pgina. De forma predeterminada, los sistemas SQL
Server SMP con ms de un motor estn configurados con 11 bloqueos de giro para la
tabla. Los 10 primeros bloqueos de giro protegen 100 filas cada uno; el undcimo
protege a las 31 restantes.
Figure 11-18: Relacin entre los bloqueos de giro y la tabla de desmenuzamiento
de bloqueos de pginas
El parmetro page lock spinlock ratio especifica el nmero de filas de la tabla de
desmenuzamiento de bloqueos de pgina protegidas por un bloqueo de giro (filas por
bloqueo de giro), no el nmero total de bloqueos de giro. Cuanto mayor sea el valor que
se especifique para page lock spinlock ratio , menor ser el nmero de bloqueos de
giro que protegen la tabla. As, el nmero total de bloqueos de giro que protegen la tabla
se expresa mediante esta frmula:
(1031/valor de page lock spinlock ratio ) + 1 para cualquier resto
Por ejemplo, si especifica una relacin de 50 filas por bloqueo de giro, el nmero total
de bloqueos de giro es igual a 21 (1031 dividido por 50 ms 1); 20 bloqueos de giro
protegen 50 filas cada uno, mientras que el vigesimoprimero protege las 31 filas
restantes. Dicha relacin puede definirse como sigue:
sp_configure "page lock spinlock ratio", 50

El valor predeterminado de SQL Server para page lock spinlock ratio es 100, que
define 11 bloqueos de giro para la tabla de desmenuzamiento de bloqueos de pgina. Si
especifica un valor de 1031 o mayor para page lock spinlock ratio , SQL Server utiliza
un solo bloqueo de giro para toda la tabla. page lock spinlock ratio n o es un parmetro
de configuracin dinmico. Para que cualquier cambio tenga efecto, hay que cerrar y
reiniciar SQL Server.
En teora, la proteccin de una fila con un bloqueo de giro (definiendo page lock
spinlock ratio como 1 para un total de 1031 bloqueos de giro) aportara una contienda
menor por bloqueo de giro y el mayor nmero posible de operaciones simultneas de
bloqueo de pgina. Sin embargo, evaluaciones efectuadas indican que la contienda por
bloqueos de giro suele ser inferior al 3 por ciento si se usa el valor predeterminado de
SQL Server de 11 bloqueos de giro (un page lock spinlock ratio de 100).
Note: Reducir el valor del parmetro page lock spinlock ratio debera tener poco
efecto sobre el rendimiento de SQL Server. El valor predeterminado de este parmetro
es correcto en la mayora de los servidores.
Cada bloqueo de giro adicional usa hasta 256 bytes de memoria. Este requisito de
memoria adicional reduce la memoria disponible para los cachs de datos y de
procedimientos, lo cual puede afectar a otros aspectos del rendimiento del servidor. Por
lo tanto, tenga cuidado al realizar cambios en este parmetro.
table lock spinlock ratio

Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

20

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

Para los SQL Server que se ejecutan con varios motores, se puede definir la relacin de
spinlocks (bloqueos de giro) que protegen la tabla interna de desmenuzamiento de
bloqueos de tabla usando el parmetro de configuracin table lock spinlock ratio . Un
SQL Server configurado con un solo motor (definido por el parmetro max online
engines ) tiene un solo bloqueo de giro, cualquiera sea el valor especificado para table
lock spinlock ratio , puesto que slo ese motor puede tener acceso a la tabla de
desmenuzamiento. Los sistemas SQL Server SMP con dos o ms motores pueden tener
un mximo de 101 bloqueos de giro protegiendo la tabla.
SQL Server administra la adquisicin y liberacin de los bloqueos de tabla mediante
una tabla interna de desmenuzamiento con 101 filas (llamadas cubos de
desmenuzamiento). Esta tabla puede usar uno o ms bloqueos de giro para serializar el
acceso entre procesos que se ejecutan en motores diferentes. Un bloqueo de giro es un
sencillo mecanismo interno de bloqueo que impide el acceso de un proceso al recurso
utilizado actualmente por otro proceso. Todos los procesos que intentan el acceso al
recurso deben esperar (o "girar") hasta que se libere el bloqueo.
La Figura 11-5 ilustra la relacin entre los bloqueos de giro y la tabla interna de
desmenuzamiento de bloqueos de tabla. De forma predeterminada, los sistemas SQL
Server SMP con ms de un motor estn configurados con 6 bloqueos de giro para la
tabla. Los 5 primeros bloqueos de giro protegen 20 filas cada uno; el sexto protege la
ltima fila.
Figure 11-19: Relacin entre los bloqueos de giro y la tabla de desmenuzamiento
de bloqueos de tabla
El parmetro table lock spinlock ratio especifica el nmero de filas de la tabla de
desmenuzamiento de bloqueos de tabla protegidas por un bloqueo de giro (filas por
bloqueo de giro), no el nmero total de bloqueos de giro. Cuanto mayor sea el valor que
especifique para table lock spinlock ratio , menor ser el nmero de bloqueos de giro
que protegen la tabla. As, el nmero total de bloqueos de giro que protegen la tabla se
expresa mediante esta frmula:
(101/valor de table lock spinlock ratio ) + 1 para cualquier resto
Por ejemplo, si especifica una relacin de 8 filas por bloqueo de giro, el total de
bloqueos de giro es 13 (101 dividido por 8 ms 1); 12 bloqueos de giro protegen 8 filas
cada uno, mientras que el decimotercero protege las 6 restantes. Dicha relacin puede
definirse como sigue:

sp_configure "table lock spinlock ratio", 8

El valor predeterminado de SQL Server para table lock spinlock ratio es 20, que define
6 bloqueos de giro para la tabla de desmenuzamiento de bloqueos de tabla. Si especifica
un valor de 101 o mayor para table lock spinlock ratio , SQL Server utiliza un solo
bloqueo de giro para toda la tabla. table lock spinlock ratio n o es un parmetro de
configuracin dinmico. Para que cualquier cambio tenga efecto, hay que cerrar y
reiniciar SQL Server.
En teora, la proteccin de una fila con un bloqueo de giro (definiendo table lock
spinlock ratio como 1 para un total de 101 bloqueos de giro) proporcionara una menor
contienda por bloqueo de giro y el mayor nmero posible de operaciones simultneas de
bloqueo de pgina. Sin embargo, evaluaciones efectuadas muestran que la contienda por
bloqueos de giro suele ser inferior al 3 por ciento si se usa el valor predeterminado de
SQL Server de 6 bloqueos de giro (un table lock spinlock ratio de 20).
Note: Reducir el valor del parmetro table lock spinlock ratio debera tener poco
efecto sobre el rendimiento de SQL Server. El valor predeterminado de este parmetro
es correcto para la mayora de servidores.
Cada bloqueo de giro adicional usa hasta 256 bytes de memoria. Este requisito de
memoria adicional reduce la memoria disponible para los cachs de datos y de
procedimientos, lo cual puede afectar otros aspectos del rendimiento del servidor. Por lo
tanto, tenga cuidado al realizar cambios en este parmetro.
Comunicaciones de red
Los parmetros de este grupo configuran la comunicacin entre SQL Server y los
servidores remotos, as como con los programas cliente.
allow remote access
Informacin sumaria
Nombre en la versin anterior remote access
Valor predeterminado

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Oficial de seguridad del sistema

El parmetro allow remote access acta como una alternador que controla los logins
desde SQL Server remotos. El valor predeterminado es 1, para que SQL Server pueda
comunicarse con Backup Server. Slo un oficial de seguridad del sistema puede definir
allow remote access .
La definicin del parmetro como 0 inhabilita las llamadas de procedimientos remotos
de servidor a servidor. Puesto que SQL Server se comunica con Backup Server a travs
de llamadas de procedimientos remotos, la definicin de este parmetro como 0

imposibilita realizar la copia de seguridad de una base de datos. Dado que otras
acciones de administracin del sistema son necesarias para permitir que otros
servidores, aparte de Backup Server, ejecuten llamadas de procedimientos remotos,
dejar esta opcin definida como 1 no entraa un riesgo de seguridad.
Los parmetros number of remote logins , number of remote sites , number of
remote connections y remote server pre-read packets toman automticamente sus
valores predeterminados cuando se habilita allow remote access .
default network packet size
Informacin sumaria
Nombre en la versin anterior default network packet size
Valor predeterminado
512
Margen de valores

512-524288

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro default network packet size configura el tamao de paquete


predeterminado para todos los usuarios de SQL Server. El valor predeterminado es 512
bytes. default network packet size puede definirse con cualquier mltiplo de 512 bytes
hasta un mximo de 524.288 bytes. Los valores que no sean mltiplos exactos de 512 se
redondean hacia abajo.
La memoria para todos los usuarios que hacen el login con el tamao predeterminado de
paquete se asigna del banco de memoria de SQL Server, definido con el parmetro de
configuracin total memory . Esta memoria se asigna para los paquetes de red cuando
arranca SQL Server.
Cada conexin de usuario de SQL Server utiliza:

Una memoria intermedia de lectura


Una memoria intermedia de desbordamiento de lectura
Una memoria intermedia de escritura

Cada una de estas memorias intermedias requiere default network packet size bytes.
La cantidad total de memoria asignada para los paquetes de red es:
number of user connections * 3 * default network packet size
Cuando se proporciona un nuevo valor para este parmetro, SQL Server requiere esa
cantidad de memoria para cada una de las tres memorias intermedias, por cada conexin
de usuario. Por ejemplo, si se define default network packet size como 1024 bytes y
hay 50 conexiones de usuario, la cantidad de memoria de red necesaria es:
50 * 3 * 1024 = 153600 bytes

Si aumenta default network packet size , verifique los parmetros total memory y
number of user connections para asegurarse de que deja espacio suficiente para otras
necesidades de memoria de SQL Server. Al reiniciar SQL Server despus de cambiar
default network packet size , verifique en el diario de errores los mensajes que indican
la asignacin de memorias intermedias, para comprobar que hay suficiente memoria
restante.
Si aumenta default network packet size , debe incrementar tambin max network
packet size al menos al mismo tamao. Ejecute ambos comandos sp_configure , y
luego reinicie el servidor.
Si el valor de max network packet size es mayor que el de default network packet
size , necesitar aumentar el valor de additional network memory . Consulte
"additional network memory" para obtener ms informacin.
max network packet size
Informacin sumaria
Nombre en la versin anterior maximum network packet size
Valor predeterminado

512

Margen de valores

512-524288

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro max network packet size especifica el tamao mximo de paquete de red
que pueden solicitar los clientes comunicados con SQL Server.
Si algunas de sus aplicaciones envan o reciben grandes cantidades de datos por la red,
esas aplicaciones pueden mejorar significativamente el rendimiento usando tamaos
ms grandes de paquete. Dos ejemplos son las operaciones de copia masiva y las
aplicaciones que leen o escriben valores text o image grandes. En general, conviene
mantener pequeo el valor de default network packet size para los usuarios que
realizan consultas breves. Para permitir que los usuarios que envan o reciben grandes
volmenes de datos soliciten tamaos mayores, se define el parmetro max network
packet size .
Note: Aunque definir max network packet size con un valor mayor que default
network packet size permite que los procesos cliente utilicen tamaos de paquete
mayores, estos clientes deben solicitar explcitamente un tamao de paquete mayor
desde dentro de sus aplicaciones.
El valor predeterminado de max network packet size es 512 bytes. Siempre debe ser
tan grande como, o ms grande que default network packet size . Los valores que sean
mltiplos exactos de 512 se redondean hacia abajo. El valor mximo es 524.288 bytes.
SQL Server garantiza que toda conexin de usuario haga el login con el tamao
predeterminado de paquete. Si se aumenta max network packet size y se deja

additional network memory definido como 0, los clientes no pueden usar tamaos de
paquete mayores que el tamao predeterminado: toda la memoria de red asignada para
los usuarios se reservar con el tamao predeterminado. En esta situacin, los usuarios
que soliciten un tamao de paquete mayor al hacer el login, recibirn un mensaje de
advertencia indicndoles que su aplicacin utilizar el tamao predeterminado.
Para determinar el valor de additional network memory si las aplicaciones utilizan
tamaos mayores de paquete:

Estime el nmero de usuarios simultneos que solicitarn tamaos grandes, y los


tamaos que sus aplicaciones solicitarn.
Multiplique esa suma por 3, puesto que cada conexin requiere tres memorias
intermedias.
Sume un 2 por ciento para la sobrecarga.
Redondee el valor al siguiente mltiplo de 2048.

Por ejemplo, si se estiman estas necesidades simultneas de tamaos ms grandes de


paquete:
Aplicacin
bcp

Tamao de paquete Sobrecarga


8192

Client-Library

8192

Client-Library

4096

Client-Library

4096

Total

24576

Multiplique por 3 memorias intermedias/usuario

*3
73728

Calcule 2% de sobrecarga

* 0,02=1474

Sume la sobrecarga

+ 1474

Memoria de red adicional

75202

Redondee al siguiente mltiplo de 2048

75776

Se debe definir additional network memory en 75.776 bytes.


Consulte isql y bcp en el manual de los programas de utilidad de SQL Server
correspondiente a su plataforma para obtener informacin sobre el uso de tamaos
mayores de paquete desde estos programas. La documentacin de Open Client ClientLibrary(TM) incluye informacin sobre el uso de tamaos variables de
paquete.Eleccin de los tamaos de paquete
Los parmetros default network packet size y max network packet size deben ser
mltiplos de 512. Adems, para un mejor rendimiento, hay que elegir un tamao de
paquete de servidor que funcione eficazmente con el tamao subyacente de paquete en
la red. Los dos criterios son:

Reducir el nmero de lecturas y escrituras del servidor a la red.


Reducir el espacio no usado en los paquetes de red (aumentando la capacidad de
la red).

Por ejemplo, si el tamao del paquete de red lleva 1500 bytes de datos, la definicin del
tamao de paquete de SQL Server como 1024 (512*2) producir probablemente un
mejor rendimiento que si se define como 1536 (512*3).
La Figura 11-6 muestra tamaos de paquete de muestra.
Figure 11-20: Factores para determinar el tamao de paquete
Despus de determinar el espacio de datos disponible de los paquetes subyacentes en la
red, efecte sus propias pruebas de evaluacin para determinar el tamao ptimo para su
configuracin.
max number network listeners
Informacin sumaria
Nombre en la versin anterior cmaxnetworks
Valor predeterminado
15
Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro max number network listeners especifica el nmero mximo de oyentes


de red permitidos por SQL Server en un momento dado.
Cada puerto master tiene un solo oyente de red. En general, no hay necesidad de tener
varios puertos master, a menos que SQL Server deba comunicarse con ms de un tipo
de red. (Algunas plataformas soportan las interfaces de red de receptculo y de TLI
(Transport Layer Interface Interfaz de capa de transporte). Consulte la gua de
instalacin y configuracin de Sybase para obtener informacin sobre los tipos de red
soportados por su plataforma.) Si su SQL Server no necesita usar varios tipos de red,
configure max number network listeners para acomodar el nmero de tipos de red
necesarios.
number of remote connections
Informacin sumaria
Nombre en la versin anterior remote connections
Valor predeterminado

20

Margen de valores

0-32767

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro number of remote connections especifica el nmero de conexiones


lgicas que puede haber abiertas en y desde un solo SQL Server en un momento dado.
number of remote logins
Informacin sumaria
Nombre en la versin anterior remote logins
Valor predeterminado

20

Margen de valores

0-32767

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro number of remote logins controla el nmero de conexiones de usuario


activas desde SQL Server con servidores remotos. Este parmetro debe definirse con el
mismo valor (o menor) que number of remote connections .
number of remote sites
Informacin sumaria
Nombre en la versin anterior remote sites
Valor predeterminado

10

Margen de valores

0-32767

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

number of remote sites determina el nmero mximo de lugares remotos que pueden
tener acceso simultneo a SQL Server. Internamente, number of remote sites
determina el nmero de manipuladores de sitio que puede haber activos en un momento
dado; todos los accesos al servidor desde un solo sitio se administran con un solo
manipulador.
remote server pre-read packets
Informacin sumaria
Nombre en la versin anterior pre-read packets
Valor predeterminado
3
Margen de valores

0-32767

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro remote server pre-read packets determina el nmero de paquetes que un


manipulador de sitio "leer preliminarmente" durante conexiones con servidores
remotos.
Toda comunicacin entre dos servidores se administra mediante un solo manipulador de
sitio, para reducir el nmero requerido de conexiones. El manipulador de sitio puede
efectuar lecturas preliminares y controlar los paquetes de datos para cada proceso de
usuario, antes de que el proceso receptor est preparado para aceptarlos.
El valor predeterminado de remote server pre-read packets es 3, que resulta adecuado
en casi todos los casos. Un valor ms alto utiliza ms memoria; uno menor puede
demorar el trfico de red entre los servidores.
tcp no delay
Informacin sumaria
Nombre en la versin anterior T1610 (indicador de rastreos)
Valor predeterminado

0 (desactivado)

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro tcp no delay alterna el procesamiento por lotes de paquetes TCP


(protocolo de control de transmisin). El valor predeterminado es 0, que significa que
los paquetes TCP se procesan por lotes.
TCP procesa normalmente por lotes los paquetes lgicos pequeos y los convierte en
paquetes fsicos mayores (demorando brevemente los paquetes) para as llenar las
estructuras fsicas de la red con tantos datos como sea posible. El sentido de esto es
mejorar la capacidad de la red en entornos de emulacin de terminal donde
principalmente se envan pulsaciones de teclas a travs de la red.
Sin embargo, las aplicaciones que usan paquetes TDS pequeos (flujo de datos
tabulares) pueden beneficiarse inhabilitando el envo por lotes de paquetes TCP. Para
ello, defina tcp no delay como 1.
Note: Inhabilitar el procesamiento por lotes de paquetes TCP implica que los paquetes
se envan cualquiera sea el tamao, aumentando el volumen de trfico en la red.
Recursos del sistema operativo

Los parmetros de este grupo estn relacionados con el uso de los recursos del sistema
operativo por parte de SQL Server.
max async i/os per engine
Informacin sumaria
Nombre en la versin anterior cnmaxaio_engine
Valor predeterminado

2147483647

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro max async i/os per engine especifica el nmero mximo de solicitudes de
E/S asincrnicas de disco que puede haber pendientes para un solo motor en un
momento dado.
La mayora de los sistemas operativos limitan el nmero de E/S asincrnicas de disco
que pueden procesarse en cualquier instante; algunos limitan el nmero de E/S
asincrnicas por proceso del sistema operativo, otros limitan el nmero de E/S
asincrnicas por sistema, y algunos limitan ambos. Si una aplicacin supera estos
lmites, el sistema operativo devuelve un mensaje de error. Dado que las llamadas del
sistema operativo son relativamente costosas, no es eficaz que SQL Server intente
realizar E/S asincrnicas que el sistema operativo rechazar.
Para evitar esto, SQL Server mantiene un recuento de E/S asincrnicas pendientes por
motor y por servidor; si un motor emite una E/S asincrnica que superara max async
i/os per engine o max async i/os per server , SQL Server demora la E/S hasta que se
hayan completado suficientes E/S pendientes para situarse por debajo de cualquier
lmite superado.
En general, max async i/os per engine debera definirse con el lmite permitido por el
sistema operativo para E/S asincrnicas de disco. Sin embargo, si ejecuta otras
aplicaciones que utilizan E/S asincrnicas en la misma mquina, convendr afinar max
async i/os per engine con un valor inferior, para que SQL Server no monopolice las
E/S asincrnicas. (Consulte la documentacin del sistema operativo para obtener ms
informacin sobre E/S asincrnicas. En algunos sistemas operativos, esos lmites
pueden afinarse; en otros, son fijos.)
Dado que todas las E/S (asincrnicas y sincrnicas) requieren una estructura de E/S de
disco, la cantidad total de E/S de disco est limitada por el valor de disk i/o structures .
Asegrese de configurar max async i/os per engine con un valor menor que disk i/o
structures . Es ms eficaz que SQL Server demore una E/S que tener el bloque de E/S
porque no puede obtener una estructura de E/S de disco.
Si los lmites de E/S asincrnicas pueden afinarse en su sistema operativo, asegrese de
que estn definidos con un valor suficientemente alto para SQL Server. No hay ninguna

penalizacin por definirlos con el mximo valor posible. Como mnimo, deben definirse
en 50; en el caso de un SQL Server muy cargado, 500 sera un mnimo ms apropiado.
max async i/os per server
Informacin sumaria
Nombre en la versin anterior cnmaxaio_server
Valor predeterminado

2147483647

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro max async i/os per server especifica el nmero mximo de solicitudes de
E/S asincrnicas de disco que puede haber pendientes para SQL Server en un momento
dado. Este lmite no se ve afectado por el nmero de motores en lnea por SQL Server;
max async i/os per server limita el nmero total de E/S asincrnicas que un servidor
puede emitir de una vez, cualquiera sea el nmero de sus motores en lnea.
La mayora de los sistemas operativos limitan el nmero de E/S asincrnicas de disco
que pueden procesarse en cualquier instante; algunos limitan el nmero de E/S
asincrnicas por cada proceso del sistema operativo, otros limitan el nmero de E/S
asincrnicas por sistema, y algunos limitan ambos. Si una aplicacin supera estos
lmites, el sistema operativo devuelve un mensaje de error. Dado que las llamadas del
sistema operativo son relativamente costosas, no es eficaz que SQL Server intente
realizar E/S asincrnicas que el sistema operativo rechazar.
Para evitar esto, SQL Server mantiene un recuento de E/S asincrnicas pendientes por
motor y por servidor; si un motor emite una E/S asincrnica que superara max async
i/os per engine o max async i/os per server , SQL Server demora la E/S hasta que se
hayan completado suficientes E/S pendientes para situarse por debajo de cualquier
lmite superado.
Por ejemplo, suponga un sistema operativo con un lmite de 200 E/S asincrnicas por
sistema y 75 por proceso; suponga adems un SQL Server con tres motores en lnea.
Motor

N de E/S
pendientes

Resultado

60

El motor 0 demorar las E/S asincrnicas en exceso hasta que el


total por servidor est por debajo del lmite por sistema del
sistema operativo, y luego continuar emitiendo E/S
asincrnicas.

75

El motor 1 demorar las E/S asincrnicas en exceso hasta que el


total por motor est por debajo del lmite por proceso del
sistema operativo, y luego continuar emitiendo E/S
asincrnicas.

65

El motor 2 demorar las E/S asincrnicas en exceso hasta que el


total del servidor est por debajo del lmite por sistema del
sistema operativo, y luego continuar emitiendo E/S
asincrnicas.

Si el motor 0 2 termina una E/S asincrnica, uno de los dos podr emitir entonces ms
E/S asincrnicas, porque, al haber terminado una E/S pendiente, el total de todo el
servidor se ha situado por debajo del lmite por sistema del sistema operativo. Sin
embargo, aunque los motores 0 y 2 completen las E/S asincrnicas pendientes, el motor
1 no podr emitir ms E/S asincrnicas hasta que caiga por debajo del lmite de 75 por
proceso del sistema operativo.
En general, max async i/os per server debe definirse con el lmite permitido por el
sistema operativo para E/S asincrnicas de disco. Sin embargo, si ejecuta otras
aplicaciones que utilizan E/S asincrnicas en la misma mquina, convendr afinar max
async i/os per server con un valor inferior para que SQL Server no monopolice las E/S
asincrnicas. (Consulte la documentacin del sistema operativo para obtener ms
informacin sobre la E/S asincrnica. En algunos sistemas operativos, esos lmites
pueden afinarse; en otros, son fijos.)
Dado que todas las E/S (asincrnicas y sincrnicas) requieren una estructura de E/S de
disco, la cantidad total de E/S de disco est limitada por el valor de disk i/o structures .
Asegrese de configurar max async i/os per server con un valor menor que disk i/o
structures : es ms eficaz que SQL Server demore una E/S que tener el bloque de E/S
porque no puede obtener una estructura de E/S de disco.
Si los lmites de E/S asincrnicas pueden afinarse en su sistema operativo, deben
definirse con un valor suficientemente alto para SQL Server. No hay ninguna
penalizacin por definirlos con el mximo valor posible. Como mnimo, deben definirse
en 50; en el caso de un SQL Server muy cargado, 500 sera un mnimo ms apropiado.
o/s async i/o enabled
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Slo lectura

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro o/s async i/o enabled indica si se ha habilitado o no la E/S asincrnica de


disco a nivel del sistema operativo. Este parmetro es de slo lectura y no puede
configurarse.

Para que SQL Server utilice E/S asincrnicas de disco, debe habilitarse a nivel del
sistema operativo y en SQL Server. Consulte "allow sql server async i/o" para obtener
informacin sobre la habilitacin de E/S asincrnicas de disco en SQL Server.
Consulte la documentacin del sistema operativo para obtener informacin sobre la
habilitacin de E/S asincrnicas de disco a nivel del sistema operativo.
o/s file descriptors
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

Margen de valores

Depende del sitio

Estado

Slo lectura

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro o/s file descriptors indica el nmero mximo de descriptores de archivo


configurados por proceso en el sistema operativo. Este parmetro es de slo lectura y no
puede configurarse en SQL Server.
Muchos sistemas operativos permiten configurar la cantidad de descriptores de archivo
disponibles para cada proceso. Consulte la documentacin del sistema operativo al
respecto.
shared memory starting address
Informacin sumaria
Nombre en la versin anterior mrstart
Valor predeterminado

Margen de valores

Depende de la plataforma

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro shared memory starting address determina la direccin virtual en que


SQL Server inicia su zona de memoria compartida.
Es improbable que exista la necesidad de reconfigurar shared memory starting
address . Esto slo debe hacerse tras consultar al Servicio de Asistencia Tcnica de
Sybase.
Memoria fsica
Los parmetros de este grupo configuran los recursos de memoria fsica de su mquina.

additional network memory


Informacin sumaria
Nombre en la versin anterior additional network memory
Valor predeterminado

Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro additional network memory define el tamao mximo de memoria


adicional que puede usarse para los paquetes de red cuyo tamao es mayor que el
predeterminado en SQL Server. El valor de este parmetro debe ser mltiplo de 2048
bytes. El predeterminado es 0, es decir, no se asigna espacio adicional para los paquetes
grandes.
Cuando se inicia SQL Server, se asigna un banco de memoria privado de la zona de
memoria de SQL Server y se lo reserva para las asignaciones de paquetes de red. La
memoria de todos los paquetes de red, cualquiera sea su tamao, se toma de este banco.
Si una conexin solicita un tamao mayor que default network packet size , SQL
Server intenta asignar las memorias intermedias necesarias (lectura, escritura y
desbordamiento). Si lo logra, intercambia las memorias intermedias de red con la
conexin y desasigna las memorias intermedias predeterminadas con que se inici la
conexin. Si no puede asignar memorias intermedias del tamao solicitado, SQL Server
intenta encontrar un grupo de memorias intermedias ms pequeas, cuyo tamao sea
ms cercano a la cantidad solicitada.
SQL Server garantiza que cada conexin de usuario pueda hacer el login con el tamao
predeterminado de paquete. Si se aumenta max network packet size pero no se
incrementa additional network memory , los clientes no podrn usar tamaos de
paquete mayores que el predeterminado: toda la memoria de red asignada para los
usuarios se reservar con el tamao predeterminado. En esta situacin, los usuarios que
soliciten un tamao de paquete mayor al hacer el login, recibirn un mensaje indicando
que su aplicacin utilizar el tamao de paquete predeterminado.
El aumento de additional network memory puede mejorar el rendimiento de las
aplicaciones que transfieren grandes cantidades de datos. Para determinar el valor de
additional network memory si las aplicaciones usan tamaos de paquete ms grandes:

Estime el nmero de usuarios simultneos que solicitarn tamaos grandes de


paquete, y los tamaos que sus aplicaciones solicitarn.
Multiplique esta suma por 3, ya que cada conexin necesita tres memorias
intermedias.
Sume un 2 por ciento para la sobrecarga.
Redondee el valor al siguiente mltiplo de 2048.

La memoria asignada con additional network memory se aade a la asignada por total
memory , y no afecta a otros usos de memoria por parte de SQL Server.
lock shared memory
Informacin sumaria
Nombre en la versin anterior T1611 (indicador de rastreos)
Valor predeterminado

0 (desactivado)

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro lock shared memory impide el intercambio de pginas de SQL Server al


disco, y permite que el kernel del sistema operativo evite el cdigo interno de bloqueo
de pginas del servidor. Esto puede mejorar el rendimiento al reducir las lecturas en el
disco, que son costosas.
No todas las plataformas soportan el bloqueo de memoria compartida. Aunque su
plataforma s lo soporte, el uso de lock shared memory puede fallar debido a permisos
incorrectamente definidos, memoria fsica insuficiente, u otras razones.
total memory
Informacin sumaria
Nombre en la versin anterior memory
Valor predeterminado

Depende de la plataforma

Margen de valores

3850-2147483647

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro total memory define la cantidad de memoria, en unidades de 2K, que


SQL Server asigna desde el sistema operativo. El valor predeterminado de total
memory vara de una plataforma a otra. Consulte la gua de instalacin y configuracin
de SQL Server para obtener el valor correspondiente a su sistema operativo.
Utilice la hoja de trabajo siguiente para determinar cunta memoria necesitar para su
configuracin
Categora de uso de memoria
executable code size +
Sobrecarga esttica (1MB) +

Valor para s u
servidor

Cantidad por conexin de usuario


stack size (segn la plataforma) * number of user
connections
stack guard size @ 4.096 bytes * number of user
connections
( default network packet size * 3) * number of user
connections +

___________________
___________________
___________________

number of open databases * 644 bytes +


number of locks * 32 bytes +
number of devices * 45.056 bytes +
size of procedure cache +
total data cache size +
number of extent i/o buffers * 16K
= total memory
Cuanto ms memoria haya disponible, ms recursos tendr SQL Server para los cachs
y memorias intermedias internas, reduciendo as el nmero de veces que el servidor
tendr que leer informacin esttica o planes de procedimientos compilados del disco.
No hay ninguna penalizacin del rendimiento por configurar SQL Server para que use
toda la memoria disponible en la computadora. Sin embargo, debe asegurarse de evaluar
otras necesidades de memoria del sistema; de lo contrario, es posible que SQL Server
no pueda adquirir suficiente memoria para arrancar. Consulte el Captulo 8,
"Configuracin de la memoria", para obtener instrucciones sobre cmo maximizar total
memory para SQL Server en su sistema.
Modifique el valor del parmetro de configuracin total memory :

Cuando cambie la cantidad de memoria RAM en la mquina.


Cuando cambie el tipo de uso de la mquina.
Si asigna memoria para memorias intermedias de E/S de sector o memoria de
red adicional para SQL Server.

Tambin se puede aumentar el valor para mejorar el rendimiento de SQL Server cuando
las aplicaciones necesitan utilizar mucha memoria (por ejemplo, cuando se emplean
ndices grandes).Si SQL Server no arranca
Cuando SQL Server se arranca, adquiere tanto de la memoria especificada como el
sistema le permite. Si esa cantidad de memoria no est disponible, SQL Server adquiere
tanta como puede. (Si el sistema operativo soporta la asignacin dinmica de memoria
durante todo el transcurso de un proceso, puede asignar memoria adicional a SQL
Server despus de haberse iniciado.) Si el tamao configurado es extremadamente
grande respecto a la memoria disponible, SQL Server no puede arrancar porque no
puede asignar la cantidad solicitada de memoria.
Procesadores

Los parmetros de este grupo configuran los procesadores en un entorno SMP.


max online engines
Informacin sumaria
Nombre en la versin anterior max online engines
Valor predeterminado

Margen de valores

1-32

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro max engines online especifica el nmero mximo de motores de SQL


Server que puede haber en lnea en un momento dado, en un entorno de multiproceso
simtrico (SMP). Consulte el Captulo 10, "Administracin de servidores
multiprocesadores", para obtener una explicacin detallada de cmo definir este
parmetro para su entorno SMP.
Al iniciarse, SQL Server arranca con un solo motor y completa toda su inicializacin,
incluyendo la recuperacin de todas las bases de datos. Su tarea final es cargar los
motores servidores adicionales. Cada motor tiene acceso a estructuras de datos comunes
en la memoria compartida. Cuando un motor termina o sale de una tarea, verifica si hay
otras tareas a ejecutar en la cola. Normalmente, realiza una tarea del sistema por cada
impulso del reloj.
Al afinar el parmetro max engines online :

Nunca tenga ms motores en lnea que CPUs.


Dependiendo de la carga global del sistema (incluidas las aplicaciones que no
son de SQL Server), puede lograr una capacidad de procesamiento ptima
dejando algunas CPUs libres para ejecutar procesos que no son propios de SQL
Server.
Puede lograrse mejor capacidad de procesamiento ejecutando menos motores
con alto uso de CPUs, en lugar de ejecutar ms motores con bajo uso de CPUs.
La escalabilidad depende de las aplicaciones. Realice una evaluacin exhaustiva
del rendimiento de la aplicacin para determinar la mejor configuracin de
motores en lnea.

min online engines


Informacin sumaria
Nombre en la versin anterior min online engines
Valor predeterminado
1
Margen de valores

1-32

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro min online engines especifica el nmero mnimo de motores de SQL


Server que debera haber en lnea. Se aplica slo a entornos de multiprocesador.
Administracin de SQL Server
Los parmetros de este grupo estn relacionados con la administracin general de SQL
Server.
allow nested triggers
Informacin sumaria
Nombre en la versin anterior nested trigger
Valor predeterminado

1 (activado)

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro allow nested triggers es un alternador que controla el uso de disparadores


anidados. Cuando est definido como 1, las modificaciones de datos realizadas por
disparadores pueden activar otros disparadores. Una opcin de set , self_recursion ,
controla si los disparadores vuelven a dispararse al modificarse los datos. Defina allow
nested triggers como 0 para inhabilitar los disparadores anidados. El valor
predeterminado es 1
allow updates to system tables
Informacin sumaria
Nombre en la versin anterior allow updates
Valor predeterminado

0 (desactivado)

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Oficial de seguridad del sistema

El parmetro allow updates to system tables permite que los usuarios con el rol de
oficial de seguridad del sistema realicen cambios en las tablas del sistema y creen
procedimientos almacenados que puedan modificarlas.
Las tablas del sistema incluyen:

Todas las suministradas con Sybase en la base de datos master .


Todas las tablas de las bases de datos de usuario que comienzan con " sys " y
cuyo valor de ID en la tabla sysobjects es igual o inferior a 100.
Warning! La alteracin incorrecta de una tabla del sistema puede provocar la
corrupcin de la base de datos y la prdida de datos. Cuando modifique una
tabla del sistema, utilice siempre begin transaction para prevenir la aparicin
de errores que podran corromper las bases de datos. Inmediatamente despus de
efectuar los cambios, inhabilite allow updates to system tables ; mientras est
habilitado, cualquier usuario con el rol de administrador del sistema puede
modificar las tablas del sistema o crear procedimientos almacenados que pueden
modificarlas.

Los procedimientos almacenados y disparadores creados mientras el parmetro allow


updates to system tables est activado, siempre pueden actualizar las tablas del
sistema, aunque se haya vuelto a desactivar el parmetro. Cuando se activa allow
updates to system tables , se crea una "ventana de vulnerabilidad", un periodo de
tiempo durante el cual los usuarios de SQL Server pueden alterar las tablas del sistema
o crear un procedimiento almacenado que puede alterarlas en el futuro.
Dado que las tablas del sistema son tan cruciales, es aconsejable activar este parmetro
slo en situaciones muy controladas. Si desea garantizar que ningn otro usuario tenga
acceso a SQL Server y que las tablas del sistema puedan actualizarse directamente,
puede reiniciar SQL Server en modo de usuario nico. Para obtener detalles, consulte
startserver y dataserver en el manual de los programas de utilidad de SQL Server
correspondiente a su sistema operativo.
audit queue size
Informacin sumaria
Nombre en la versin anterior audit queue size
Valor predeterminado

100

Margen de valores

1-65535

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Oficial de seguridad del sistema

La cola de auditora en memoria contiene registros de auditora generados por procesos


de usuario hasta que dichos registros puedan procesarse o escribirse en la lista de
auditora. El oficial de seguridad del sistema puede cambiar el tamao de la cola de
auditora con el parmetro de configuracin audit queue size . Al configurar el tamao
de la cola, debe procurarse el equilibrio entre rendimiento y riesgo. Si la cola es
demasiado grande, los registros pueden permanecer en ella bastante tiempo. Mientras
estn en la cola, si el sistema falla, los registros corren el riesgo de perderse. Sin
embargo, si la cola es demasiado pequea, puede llenarse con demasiada frecuencia, lo
cual afecta al rendimiento general del sistema: si la cola est llena, los procesos de
usuario que generan registros de auditora quedan en reposo.

Las siguientes pautas permiten determinar el tamao de la cola de auditora. Tambin es


necesario tener en cuenta la cantidad de auditoras que van a realizarse en su sitio.

Un solo registro de auditora requiere 424 bytes de memoria.


El nmero mximo de registros de auditora que pueden perderse en caso del
colapso del sistema es el tamao de la cola de auditora (en registros), ms 20.
Despus de que los registros salen de la cola de auditora, permanecen en una
pgina de la memoria intermedia hasta que son escritos en sysaudits , en el
disco. Las pginas de sysaudits se vacan al disco cada 20 registros como
mximo (o menos, si el proceso de auditora no est constantemente ocupado).
Aunque un registro de auditora requiere 424 bytes de memoria, puede tener slo
22 bytes cuando se escribe en una pgina de datos.
En sysaudits , el campo extrainfo y los campos que contienen nombres son de
longitud variable, por lo que los registros de auditora que contienen
informacin completa de nombres suelen ser ms grandes.

As, el nmero de registros de auditora que caben en una pgina vara


considerablemente de 4 a 80 o ms. El requisito de memoria para el tamao
predeterminado de cola de auditora de 100 es aproximadamente 42K.
cpu accounting flush interval
Informacin sumaria
Nombre en la versin anterior cpu flush
Valor predeterminado

200

Margen de valores

1-2147483647

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro cpu accounting flush interval especifica la cantidad de tiempo, en


impulsos del reloj de la mquina, que SQL Server espera antes de vaciar las estadsticas
de uso de la CPU de cada usuario desde sysprocesses a syslogins . (Observe que se mide
en impulsos del reloj de la mquina , no del reloj de SQL Server.) Esto se utiliza para
la contabilidad de cargos.
Cuando un usuario se conecta a SQL Server, el servidor comienza a acumular cifras del
uso de la CPU por los procesos de ese usuario en sysprocesses . Cuando el usuario se
desconecta de SQL Server o se supera el valor de cpu accounting flush interval , las
estadsticas de uso acumuladas de la CPU se vacan de sysprocesses a syslogins . Estas
estadsticas continan acumulndose en syslogins hasta que se borren los totales con
sp_clearstats . Los totales actuales de syslogins se muestran mediante sp_reportstats .
El valor con que defina cpu accounting flush interval depender del tipo de informes
que prevea generar. Si prev ejecutar informes una vez al mes, es adecuado definir cpu
accounting flush interval con un valor relativamente alto, porque con informes poco
frecuentes es menos crucial que los datos de syslogins se actualicen tan a menudo.

Por otra parte, si prev realizar selecciones ad-hoc peridicas en la columna totcpu de
syslogins , para determinar el uso de la CPU por proceso, es aconsejable definir c pu
accounting flush interval con un valor menor. Eso incrementa la probabilidad de que
los datos de syslogins estn actualizados cuando ejecute las selecciones.
Definir cpu accounting flush interval con valores bajos puede provocar que el
administrador de bloqueos identifique errneamente a los procesos como vctimas
potenciales de bloqueos insolubles. Cuando el administrador de bloqueos detecta un
bloqueo insoluble, verifica la cantidad de tiempo de CPU acumulado por cada uno de
los procesos competidores. El proceso con menos tiempo se elige como vctima del
bloqueo insoluble, y el administrador de bloqueos lo termina. Cuando cpu accounting
flush interval se define con valores bajos, los manipuladores de tareas que guardan
informacin del uso de la CPU por parte de los procesos, se inicializan ms
frecuentemente como si hubieran sumado menos tiempo de CPU del que en realidad
han acumulado. Por ello, el administrador de bloqueos puede seleccionar un proceso
para que sea vctima de un bloqueo insoluble cuando, de hecho, ha acumulado ms
tiempo de CPU que el proceso competidor.
Si no tiene previsto generar informes sobre el uso de la CPU, defina c pu accounting
flush interval con su valor mximo, lo cual reduce el nmero de veces que se actualiza
syslogins y el nmero de veces que sus pginas deben escribirse en el disco.
cpu grace time
Informacin sumaria
Nombre en la versin anterior ctimemax
Valor predeterminado

500

Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro cpu grace time especifica la cantidad mxima de tiempo (en


milisegundos) que puede ejecutarse un proceso de usuario sin ceder la CPU, antes de
que SQL Server se apropie del proceso y lo termine con un error de fraccin de tiempo
vencida.
Cuando un proceso supera cpu grace time , SQL Server lo "infecta" quitndolo de las
colas internas. Esto impide que los procesos descontrolados monopolicen la CPU. Si
alguno de los procesos de usuario se infecta, quiz pueda solucionarse el problema
temporalmente aumentando el valor de cpu grace time . Sin embargo, debe asegurarse
de que el problema sea realmente un proceso que tarda ms en completarse que el valor
actual de cpu grace time , y no un proceso descontrolado. Esto debe considerarse como
un "parche", y no como una solucin permanente, y puede provocar otras
complicaciones. Consulte en "time slice" para obtener una explicacin ms detallada de
la planificacin de procesos.
default database size

Informacin sumaria
Nombre en la versin anterior database size
Valor predeterminado
2
Margen de valores

2-10000

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro default database size define el nmero predeterminado de megabytes


asignados a una nueva base de datos de usuario si la instruccin create database se
emite sin parmetros de tamao. Un tamao de base de datos dado en una instruccin
create database prevalece sobre el valor definido por este parmetro.
El valor predeterminado es 2MB. Si la mayora de las bases de datos nuevas en su SQL
Server requiere ms de 2MB, convendr aumentar este valor.
Note: Aumente el valor de database size si el tamao de la base de datos model es
mayor de 2MB, ya que la instruccin create database copia model para crear una nueva
base de datos de usuario.
default fill factor percent
Informacin sumaria
Nombre en la versin anterior fillfactor
Valor predeterminado

Margen de valores

0-100

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro default fill factor percent determina cunto llena SQL Server cada
pgina de ndice al crear un ndice nuevo sobre datos existentes, a menos que el usuario
especifique algn otro valor en la instruccin create index . El valor de default fill
factor percent afecta al rendimiento, porque SQL Server debe dedicar tiempo a dividir
pginas cuando se llenan. Raramente hay razones para cambiar el parmetro default fill
factor percent , en especial porque puede anularse en el comando create index .
d efault fill factor percent slo se utiliza al crearse el ndice y pierde importancia
conforme se realizan ms cambios en los datos. Las pginas no se mantienen llenas a
ningn nivel en particular.
El valor de ejecucin de default fill factor percent es 0, y se utiliza cuando no se
incluye with fillfactor en la instruccin create index (a menos que se haya cambiado
con sp_configure ). Los valores vlidos para especificar default fill factor percent son
de 0 a 100.

Si default fill factor percent se define como 100, SQL Server crea ndices agrupados y
no agrupados con cada pgina llena al 100 por ciento. Un default fill factor percentage
de 100 tiene sentido nicamente en tablas de slo lectura (a las que nunca se aadirn
ms datos).
Un default fill factor percent de 0 crea ndices agrupados con pginas de datos
completamente llenas, e ndices no agrupados con pginas de hoja completamente
llenas. Es distinto de un valor de 100 en que SQL Server deja una amplia cantidad de
espacio dentro del rbol B de ndices en ambos casos.
Otros valores de default fill factor percent hacen que SQL Server cree ndices nuevos
con pginas que no estn llenas por completo. Por ejemplo, un default fill factor
percent de 10 podra ser una eleccin razonable si se crea el ndice para una tabla que
contiene apenas una pequea parte de los datos que con el tiempo llegar a tener. Los
valores ms pequeos de default fill factor percent hacen que cada ndice ocupe ms
espacio de almacenamiento.
event buffers per engine
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

100

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro event buffers per engine especifica el nmero de eventos por motor de
SQL Server que pueden controlarse simultneamente. Los eventos se utilizan junto con
Monitor Server y una herramienta cliente para observar el rendimiento de SQL Server.
Para efectuar el seguimiento de los eventos, debe utilizar Monitor Server y habilitar la
generacin de eventos.
El valor con que debe definirse event buffers per engine depende del nmero de
motores de su configuracin, del nivel de actividad de su SQL Server y de los tipos de
aplicaciones que se ejecuten.
Definir event buffers per engine con valores bajos puede provocar la prdida de
informacin de los eventos. Es probable que 100, el valor predeterminado, sea
demasiado bajo en muchos sitios. Los valores de 200 y superiores pueden ser ms
razonables para la supervisin general. Sin embargo, es necesario experimentar para
hallar el valor adecuado para su sitio.
En general, la definicin de event buffers per engine con valores ms altos puede
reducir la degradacin del rendimiento que SQL Monitor Server ocasiona a SQL Server.
Si no tiene previsto realizar el seguimiento de eventos, defina e vent buffers per engine
en 1.

Cada memoria intermedia de evento utiliza 100 bytes de memoria. Para determinar la
cantidad total de memoria usada por un valor en particular de event buffers per engine
, multiplquelo por el nmero de motores que haya en la configuracin de SQL Server.
Aunque 100 bytes no es una cantidad considerable de memoria, la cantidad total usada
cuando se define event buffers per engine con valores altos, puede ser sustancial. Para
una configuracin de ocho motores, definir event buffers per engine como 20.000
consumira 1,56MB de memoria.
housekeeper free write percent
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

Margen de valores

0-100

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro housekeeper free write percent especifica el porcentaje mximo en que


la tarea de limpieza puede aumentar las escrituras en las bases de datos. Los valores
vlidos van de 0 a 100.
Por ejemplo, para detener el funcionamiento de la tarea de limpieza cuando la
frecuencia de escrituras en las bases de datos supera el 25 por ciento sobre lo normal,
defina housekeeper free write percent como 25:
sp_configure "housekeeper free write percent", 25

Cuando SQL Server no tiene tareas de usuario que procesar, la tarea de limpieza
comienza automticamente a escribir las pginas modificadas del cach al disco. Estas
escrituras permiten mejorar la utilizacin de la CPU y reducir la necesidad de lavar las
memorias intermedias durante el procesamiento de transacciones.
En aplicaciones que actualizan repetidamente la misma pgina de una base de datos, la
tarea de limpieza puede iniciar escrituras innecesarias. Aunque stas se producen slo
durante los ciclos de inactividad del servidor, pueden ser inaceptables en sistemas con
discos sobrecargados.
De forma predeterminada, el parmetro housekeeper free write percent est definido
como 1. As la tarea de limpieza puede aumentar la E/S de disco en un mximo de un 1
por ciento. Esto mejora el rendimiento y la velocidad de recuperacin en la mayora de
los sistemas.
Para inhabilitar la tarea de limpieza, defina el valor de housekeeper free write percent
como 0:
sp_configure "housekeeper free write percent", 0

Para permitir que la tarea de limpieza funcione de forma continua, cualquiera sea el
porcentaje de escrituras adicionales en las bases de datos, defina housekeeper free
write percent como 100:
sp_configure "housekeeper free write percent", 100

identity burning set factor


Informacin sumaria
Nombre en la versin anterior identity burning set factor
Valor predeterminado

5000

Margen de valores

1 - 9999999

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

Las columnas IDENTITY son del tipo num e ric y escala cero cuyo valor genera SQL
Server. Sus valores pueden ir de un mnimo de 1 a un mximo determinado por la
precisin de las columnas.
Para cada tabla con una columna IDENTITY, SQL Server divide el conjunto de valores
posibles de la columna en bloques de nmeros consecutivos, y hace que un bloque por
vez est disponible en la memoria. Siempre que se inserta una fila en una tabla, SQL
Server asigna automticamente el siguiente valor disponible en el bloque a la columna
IDENTITY. Cuando se han utilizado todos los nmeros de un bloque, el siguiente
queda disponible.
Este mtodo de elegir valores para la columna IDENTITY mejora el rendimiento del
servidor. Cuando SQL Server asigna un nuevo valor a una columna, lee el valor
mximo actual de la memoria y suma 1. El acceso al disco slo se hace necesario
despus de que se hayan utilizado todos los valores del bloque. Dado que los nmeros
restantes de un bloque se desechan en caso de que falle el servidor (o de que se ejecute
shutdown with nowait ), este mtodo puede provocar saltos en los valores de la
columna IDENTITY.
Utilice identity burning set factor para cambiar el porcentaje de valores potenciales de
columna que se hace disponible en cada bloque. Este nmero debera ser
suficientemente grande para lograr un buen rendimiento, pero no tanto como para que
los saltos en los valores de la columna sean inaceptablemente grandes. El valor
predeterminado, 5000, libera el 0,05 por ciento de los valores potenciales de la columna
IDENTITY para su uso en un momento.
Para obtener el valor correcto de sp_configure , exprese el porcentaje en forma decimal
y multiplquelo por 10 7 (10.000.000). Por ejemplo, para liberar el 15 por ciento (0,15)
de los valores potenciales de la columna IDENTITY en un momento, especifique un
valor de 0,15 multiplicado por 107 (es decir, 1.500.000) en sp_configure :
sp_configure "identity burning set factor", 1500000

identity grab size


Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

Margen de valores

1-2147483647

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro identity grab size permite que cada proceso de SQL Server reserve un
bloque de los valores de la columna IDENTITY para inserciones en las tablas que
tienen una columna IDENTITY.
Esto es til si realiza inserciones y desea que todos los datos insertados tengan nmeros
consecutivos en IDENTITY. Por ejemplo, si introduce datos de nminas de pago y
desea que todos los registros de un departamento estn situados en el mismo bloque de
filas, defina identity grab size con el nmero de registros de ese departamento.
El valor definido para identity grab size se aplica en todo el servidor, es decir, a todos
los usuarios de SQL Server. Por esta razn, no suele ser conveniente definir identity
grab size con valores muy grandes, ya que provocar grandes saltos en la columna
IDENTITY cuando muchos usuarios inserten datos en tablas con una columna
IDENTITY.
En general, i dentity grab size debera definirse con un valor suficientemente grande
como para albergar el mayor grupo de registros que deseen insertarse en filas contiguas.
i/o accounting flush interval
Informacin sumaria
Nombre en la versin anterior i/o flush
Valor predeterminado

1000

Margen de valores

1-2147483647

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro i/o accounting flush interval especifica la cantidad de tiempo, en


impulsos del reloj de la mquina, que SQL Server espera antes de vaciar las estadsticas
de E/S de cada usuario desde sysprocesses a syslogins . (Observe que se mide en
impulsos del reloj de la mquina , no del reloj de SQL Server.) Esto se utiliza para la
contabilidad de cargos.

Cuando un usuario se conecta a SQL Server, el servidor comienza a acumular


estadsticas de E/S para los procesos de ese usuario en sysprocesses . Siempre que se
supera el valor de i/o accounting statistics interval o que el usuario se desconecta de
SQL Server, sus estadsticas acumuladas de E/S se vacan de sysprocesses a syslogins .
Estas estadsticas continan acumulndose en syslogins hasta que se borren los totales
mediante sp_clearstats . Los totales actuales de syslogins se muestran utilizando
sp_reportstats .
El valor con que defina i/o accounting flush interval depender del tipo de informes
que tenga previsto generar. Si prev ejecutar informes una vez al mes, es adecuado
definir i/o accounting flush interval con un valor relativamente alto, porque con
informes poco frecuentes es menos crucial que los datos de syslogins se actualicen tan a
menudo.
Si prev realizar selecciones ad-hoc peridicas en la columna totio de syslogins , para
determinar el volumen de E/S por proceso, es aconsejable definir i/o accounting flush
interval con un valor menor. Eso incrementa la probabilidad de que los datos de
syslogins estn actualizados cuando ejecute las selecciones.
Si no tiene previsto generar informes sobre las estadsticas de E/S, defina i /o
accounting flush interval con su valor mximo, lo cual reduce el nmero de veces que
se actualiza syslogins y el nmero de veces que sus pginas deben escribirse en el disco.

i/o polling process count


Informacin sumaria
Nombre en la versin anterior cmaxscheds
Valor predeterminado

10

Margen de valores

1-2147483647

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro i/o polling process count especifica el nmero mximo de procesos de


SQL Server ejecutados por SQL Server antes de que el programador verifique la
terminacin de E/S de disco y/o red. La afinacin de i/o polling process count afecta
tanto al tiempo de respuesta como a la capacidad de procesamiento de SQL Server.
SQL Server verifica la terminacin de E/S de disco o red:

Si el nmero de tareas ejecutadas desde la ltima vez que SQL Server verific la
terminacin de E/S es igual al valor de i/o polling process count , y
En cada impulso de reloj de SQL Server.

Por regla general, aumentar el valor de i/o polling process count puede incrementar la
capacidad de procesamiento de las aplicaciones que generan muchas E/S de disco y red.
A la inversa, reducirlo puede mejorar el tiempo de respuesta de esas aplicaciones,
posiblemente a riesgo de disminuir la capacidad de procesamiento.
Si las aplicaciones crean tareas vinculadas con E/S y tareas vinculadas con la CPU, la
afinacin de i/o polling process count con valores bajos (1 2) garantiza que las tareas
vinculadas con E/S obtengan acceso a los ciclos de la CPU.
En aplicaciones OLTP (o cualquier aplicacin vinculada con E/S, con muchas
conexiones de usuario y transacciones breves), afinar i/o polling process count con
valores de 20 a 30 puede incrementar la capacidad de procesamiento, aunque tambin
los tiempos de respuesta.
Al afinar i/o polling process count , tenga en cuenta otros tres parmetros:

sql server clock tick length (consulte "sql server clock tick length"), que
especifica la duracin del impulso del reloj de SQL Server en milisegundos y
por lo tanto afecta la cantidad de tiempo que el servidor esperar antes de
verificar las E/S pendientes.
time slice (consulte "time slice") que especifica el nmero de milisegundos
que el programador de SQL Server asigna para la ejecucin de un proceso de
usuario es significativo para determinar durante cunto tiempo se ejecutan las
tareas vinculadas con la CPU antes de ceder la CPU.
cpu grace time (consulte "cpu grace time"), que especifica la cantidad mxima
de tiempo (en milisegundos) durante el cual puede ejecutarse un proceso de
usuario sin ceder la CPU, antes de que SQL Server se apropie del proceso y lo
termine con un error de fraccin de tiempo vencida.

lock promotion HWM


Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

200

Margen de valores

2-2147483647

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro lock promotion HWM ( high water mark , marca de marea alta), junto
con lock promotion LWM y lock promotion PCT , especifica el nmero de bloqueos
de pgina permitidos durante un solo barrido de tabla o ndice antes de que SQL Server
intente ascender los bloqueos de pgina a bloqueos de tabla. Este valor es efectivo en
todo el servidor.
Para obtener ms informacin sobre la promocin de bloqueos, consulte "Setting the
Lock Promotion Thresholds" de la Gua de Mejora de Rendimiento y Afinacin de SQL
Server .

El valor con que se defina lock promotion HWM es efectivo en todo el servidor; se
aplica a todas las tablas de usuario del servidor . Sin embargo, la promocin de
bloqueos se produce tabla por tabla y usuario por usuario. Por ejemplo, si lock
promotion HWM est definido como 250, un usuario tendr que adquirir 250 bloqueos
de pgina en una tabla en particular antes de que pueda adquirir un bloqueo de tabla
sobre esa tabla.
El valor predeterminado de lock promotion HWM (200) probablemente sea adecuado
para la mayora de las aplicaciones. Si tiene muchas tablas pequeas con ndices
agrupados, donde hay contiendas por las pginas de datos, quiz pueda aumentar la
simultaneidad para esas tablas afinando lock promotion HWM al 80 por ciento de
number of locks .
Dado que lock promotion HWM tiene efecto en todo el servidor, definirlo con valores
muy bajos no es aconsejable en la mayora de los casos, ya que aumenta la posibilidad
de que un usuario en particular logre un bloqueo de tabla, e impida que otros usuarios
tengan acceso a esa tabla mientras dure el bloqueo.
La promocin de bloqueos tambin puede configurarse objeto por objeto mediante el
procedimiento del sistema sp_setpglockpromote . Si algunas tablas especficas
requieren una afinacin muy peculiar de la promocin de bloqueos, hgalo con
sp_setpglockpromote , no a nivel de todo el servidor con lock promotion HWM .
Consulte sp_setpglockpromote en el Manual de Referencia de SQL Server .
Note: Cuando configure lock promotion HWM , asegrese de no darle un valor mayor
que el de number of locks . Si es necesario, se puede aumentar el valor de number of
locks para permitir un valor alto de lock promotion HWM . Cada bloqueo requiere 72
bytes de memoria; si incrementa significativamente number of locks, probablemente
tambin tendr que aumentar total memory .
lock promotion LWM
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

200

Margen de valores

2-valor de lock promotion HWM

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro lock promotion LWM ( low water mark , marca de marea baja), junto
con lock promotion HWM y lock promotion PCT , define el nmero de bloqueos de
pgina permitido por un comando de Transact-SQL debajo del cual SQL Server nunca
intenta aplicar un bloqueo de tabla sobre el objeto.
Consulte "Setting the Lock Promotion Thresholds" de la Gua de Mejora de
Rendimiento y Afinacin de SQL Server para obtener ms informacin sobre la
promocin de bloqueos.

El valor con que se defina lock promotion LWM es para todo el servidor; se aplica a
todas las tablas de usuario del servidor . Dado que lock promotion LWM tiene
efecto en todo el servidor, definirlo con valores muy altos disminuye la posibilidad de
que una sesin de barrido en particular logre un bloqueo de tabla (que utiliza ms
bloqueos de pgina mientras dura la transaccin) y que agote potencialmente todos los
bloqueos disponibles en SQL Server. Si esta situacin se repite, quiz deba aumentar
number of locks.
El valor predeterminado de lock promotion LWM (200) probablemente sea adecuado
para la mayora de las aplicaciones.
La promocin de bloqueos tambin puede configurarse objeto por objeto mediante el
procedimiento del sistema sp_setpglockpromote . Si tiene tablas que requieren una
afinacin muy peculiar de la promocin de bloqueos, hgalo con sp_setpglockpromote
y no a nivel de todo el servidor con lock promotion LWM . Consulte
sp_setpglockpromote en el Manual de Referencia de SQL Server .
lock promotion PCT
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

100

Margen de valores

1-100

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro lock promotion PCT , junto con lock promotion HWM y lock
promotion LWM , define el porcentaje de bloqueos de pgina permitido por un
comando de Transact-SQL antes de que SQL Server intente aplicar un bloqueo de tabla
sobre la tabla, si el nmero de bloqueos est entre lock promotion LWM y lock
promotion HWM .
Consulte "Setting the Lock Promotion Thresholds" de la Gua de Mejora de
Rendimiento y Afinacin para obtener ms informacin sobre la promocin de bloqueos.
El valor con que se defina lock promotion PCT es para todo el servidor; se aplica a
todas las tablas de usuario del servidor . Dado que lock promotion PCT tiene efecto
en todo el servidor, definirlo con valores muy bajos aumenta la posibilidad de que una
transaccin de usuario en particular adquiera un bloqueo de tabla. Si esta situacin se
repite, quiz deba aumentar number of locks .
El valor predeterminado de lock promotion PCT (100) probablemente sea adecuado
para la mayora de las aplicaciones.
La promocin de bloqueos tambin puede configurarse objeto por objeto mediante el
procedimiento del sistema sp_setpglockpromote . Si tiene tablas que requieren una
afinacin muy peculiar de la promocin de bloqueos, hgalo con sp_setpglockpromote

y no a nivel de todo el servidor con lock promotion PCT . Consulte


sp_setpglockpromote en el Manual de Referencia de SQL Server .
number of alarms
Informacin sumaria
Nombre en la versin anterior cnalarm
Valor predeterminado

40

Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of alarms especifica el nmero de estructuras de alarma


asignadas por SQL Server.
El comando waitfor de Transact-SQL define un momento, intervalo de tiempo o evento
especficos para la ejecucin de un bloque de instrucciones, procedimiento almacenado
o transaccin. SQL Server utiliza alarmas para ejecutar correctamente los comandos
waitfor .
El nmero de alarmas necesarias se determina por las necesidades de sus aplicaciones y
el nmero de copias simultneas de cada aplicacin utilizada por w aitfor . Cuando
SQL Server precisa ms alarmas que las asignadas actualmente, se escribe este mensaje
en el diario de errores:
uasetalarm: no more alarms available

Cada estructura de alarma utiliza 20 bytes de memoria. Si se aumenta


significativamente number of alarms , debera ajustarse tambin total memory
correspondientemente.
number of extent i/o buffers
Informacin sumaria
Nombre en la versin anterior extent i/o buffers
Valor predeterminado

Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of extent i/o buffers especifica el nmero de sectores (ocho


pginas de datos) que se van a asignar como memorias intermedias de trabajo para uso
del comando create index . El valor predeterminado es 0, que indica que SQL Server

lee y escribe pginas individuales de resultados intermedios de ordenacin y pginas de


ndice en el disco, una pgina por vez. La asignacin de memorias intermedias de E/S
de sector acelera la creacin de los ndices mediante la agilizacin de las lecturas y
escrituras en disco.
Todas las memorias intermedias se asignan al primer usuario que cree un ndice. Si
varios usuarios crean ndices simultneamente, el primer proceso utiliza E/S de sector;
los dems usan E/S normales de pgina. Procure planificar la creacin de grandes
ndices en horas donde hay pocos usuarios conectados al sistema.
Por cada memoria intermedia de E/S de sector configurada, el servidor asigna 8 pginas
de datos de la memoria asignada al servidor con el parmetro de configuracin total
memory . Un valor razonable para un servidor con 15MB de memoria y un cach de
procedimientos del 20 por ciento es 10, que requiere 160K de memoria (10 memorias
intermedias * 8 pginas por memoria intermedia * 2048 bytes por pgina).
No defina number of extent i/o buffers con un valor superior a 100.
number of mailboxes
Informacin sumaria
Nombre en la versin anterior cnmbox
Valor predeterminado

30

Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of mailboxes indica el nmero de estructuras de buzn asignadas


por SQL Server. Los buzones, junto con los mensajes, son utilizados internamente por
SQL Server para la comunicacin y sincronizacin entre los procesos de servicio del
kernel. Los procesos de usuario no utilizan buzones. No modifique este parmetro salvo
que as se lo indique el Servicio de Asistencia Tcnica de Sybase.
number of messages
Informacin sumaria
Nombre en la versin anterior cnmsg
Valor predeterminado
64
Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of messages especifica el nmero de estructuras de mensaje


asignadas por SQL Server. Los mensajes, junto con los buzones, son utilizados
internamente por SQL Server para la comunicacin y sincronizacin entre los procesos
de servicio del kernel. Los procesos de usuario no utilizan mensajes. No modifique este
parmetro salvo que as se lo indique el Servicio de Asistencia Tcnica de Sybase.
number of open databases
Informacin sumaria
Nombre en la versin anterior open databases
Valor predeterminado

12

Margen de valores

5-2147483647

Estado

Esttico

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro number of open databases especifica el nmero mximo de bases de


datos que puede haber abiertas simultneamente en SQL Server.
Las bases de datos del sistema master , model , sybsystemprocs y tempdb se incluyen en
el nmero que cubre este parmetro. Si se ha instalado la funcin de auditora, tambin
se cuenta la base de datos sybsecurity . La base de datos de muestra pubs2 y la de
sintaxis sybsyntax son opcionales, pero tambin debe contarlas si estn instaladas.
El valor predeterminado de number of open databases es 12. Si SQL Server muestra
un mensaje indicando que se ha superado el nmero permisible de bases de datos
abiertas, aumente ese valor. Cada base de datos abierta requiere unos 17K de memoria.
Aunque no es una gran cantidad, puede llegar a ser importante si se incrementa mucho
number of open databases . Por ejemplo, definirlo como 100 consume 1,7MB de
memoria. El aumento de este parmetro debe ser suficiente para que no se supere el
nmero permisible, pero no tan grande como para que se agote la memoria. La memoria
de number of open databases se toma del mismo banco que el cach de datos. Si
aumenta number of open databases sin aumentar total memory en una cantidad
proporcional, dispondr de menos memoria para el cach de datos.
number of open objects
Informacin sumaria
Nombre en la versin anterior open objects
Valor predeterminado

500

Margen de valores

100-2147483647

Estado

Esttico

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro number of open objects define el nmero mximo de objetos de base de


datos que puede haber abiertos simultneamente en SQL Server.
El valor predeterminado es 500. Si este nmero es insuficiente, SQL Server muestra un
mensaje.
Definir number of open objects con un valor mayor no tiene un impacto significativo
sobre los requisitos de almacenamiento o el rendimiento. Por lo tanto, no dude en
aumentar este valor si SQL Server muestra un mensaje indicando que se ha superado el
nmero permisible de objetos abiertos.
number of pre-allocated extents
Informacin sumaria
Nombre en la versin anterior cpreallocext
Valor predeterminado

Margen de valores

0-31

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of pre-allocated extents especifica el nmero de sectores (ocho


pginas) asignados en un solo viaje al administrador de pginas. Actualmente este
parmetro slo es usado por bcp para mejorar el rendimiento, cuando copia grandes
cantidades de datos. De forma predeterminada, bcp asigna un sector cada vez, y escribe
un registro de asignacin en el diario cada vez. Definir number of pre-allocated
extents con un valor ms alto implica que bcp asignar el nmero especificado de
sectores cada vez que necesite ms espacio, y escribir un solo registro en el diario para
el evento.
Dado que un objeto puede asignar ms pginas de las que necesita en realidad, si se usa
bcp para lotes pequeos, debe mantenerse un valor bajo en number of pre-allocated
extents ; si se usa bcp para lotes grandes, deber aumentarse el valor de number of
pre-allocated extents .
number of sort buffers
Informacin sumaria
Nombre en la versin anterior csortbufsize
Valor predeterminado

Margen de valores

0-32767

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro number of sort buffers especifica el nmero de memorias intermedias


que se utilizan para contener pginas ledas de las tablas de entrada.
SQL Server no permite que los procesos reserven ms de la mitad de sus memorias
intermedias; esto determina el valor mximo de number of sort buffers . Si se afina
number of sort buffers junto con number of extent i/o buffers , debe definirse
number of sort buffers con ocho veces el valor dado a n umber of extent i/o buffers .
Para determinar el valor ptimo de number of sort buffers para sus aplicaciones, debe
realizarse una exhaustiva evaluacin del rendimiento con un servidor de prueba. Tenga
en cuenta que pueden producirse puntos de rendimiento decrecientes al aumentar el
valor.
print deadlock information
Informacin sumaria
Nombre en la versin anterior T1204 (indicador de rastreos)
Valor predeterminado

0 (desactivado)

Valores vlidos

0 (desactivado), 1 (activado)

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro print deadlock information habilita la impresin de la informacin de


bloqueos insolubles en el diario de errores.
Si se producen repetidos bloqueos insolubles, la activacin de print deadlock
information proporciona informacin til para rastrear la causa de dichos bloqueos.
Note: La activacin de print deadlock information puede degradar seriamente el
rendimiento de SQL Server. Por esta razn, debe usarse slo cuando se intenta
determinar la causa de bloqueos insolubles.
runnable process search count
Informacin sumaria
Nombre en la versin anterior cschedspins
Valor predeterminado

2000

Margen de valores

0-2147483647

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro runnable process search count especifica el nmero de veces que un


motor repite un bucle cuando est buscando una tarea ejecutable, antes de liberar la
CPU.
Los motores mltiples de SQL Server siempre buscan tareas a ejecutar. En ocasiones no
habr ninguna, y un motor puede liberar la CPU o continuar buscando tareas que
ejecutar. Definir runnable process search count con un valor ms alto hace que el
motor retenga la CPU durante ms tiempo mientras busca una tarea que ejecutar. Si se
lo define con un valor inferior, el motor libera la CPU antes.
Si su mquina tiene un solo procesador y el servidor tiene una gran carga de trabajo, es
posible obtener cierta mejora de rendimiento definiendo runnable process search
count como 1. Para aplicaciones que hacen un uso intensivo de la CPU, se puede
mejorar el rendimiento aumentando runnable process search count a 5.
En un SQL Server que se ejecuta en mquinas multiprocesadores, aumentar runnable
process search count a 500 puede mejorar el rendimiento. En aplicaciones que hacen
uso intensivo de las E/S, los valores entre 50 y 200 pueden ser ms adecuados. En las
que hacen uso intensivo de la CPU, los valores entre 750 y 1250 pueden mejorar el
rendimiento.
Tanto en mquinas de un solo procesador como de varios, los valores anteriores pueden
combinarse ptimamente con el parmetro sql server clock tick length definido en
50.000.
partition groups
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

1024

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro partition groups especifica cuntos grupos de particiones hay que


asignar para SQL Server. Los grupos de particiones son estructuras internas que SQL
Server utiliza para controlar el acceso a las particiones individuales de una tabla.
Un grupo de particiones se compone de 16 cachs de particin, cada uno de los cuales
almacena informacin sobre una sola particin. Todos los cachs de un grupo de
particiones sirven para contener informacin sobre la misma tabla con particiones. Si
una tabla tiene menos de 16 particiones, se desaprovechan los cachs de particin no
usados. Si tiene ms de 16, requiere varios grupos de particiones.
El valor predeterminado del parmetro partition groups es 64, que permite que haya un
mximo de 64 tablas con particiones abiertas y 1024 (64 por 16) particiones abiertas. Si

cambia el valor del parmetro partition groups , deber ejecutar shutdown y reiniciar
SQL Server para que el nuevo valor tenga efecto.
SQL Server asigna grupos de particiones a una tabla cuando se hacen particiones en la
tabla, o se tiene acceso a ella por primera vez despus de reiniciarse SQL Server. Si no
hay suficientes grupos de particiones para la tabla, no se podr tener acceso a la tabla ni
realizar particiones en ella.
partition spinlock ratio
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

10

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro partition spinlock ratio especifica la relacin de bloqueos de giro


respecto a los cachs internos de particin.
SQL Server administra el acceso a las particiones de una tabla por medio de grupos de
particiones internos, que contienen cada uno 16 cachs de particin. Cada uno de estos
cachs almacena informacin sobre una particin (por ejemplo, la ltima pgina de la
particin) que los procesos deben usar al tener acceso a esa particin. Un bloqueo de
giro de particin es un simple mecanismo interno de bloqueo que impide que un
proceso tenga acceso a un cach de particin cuando est siendo usado por otro proceso.
Todos los procesos deben esperar (o "girar") hasta que se libere el bloqueo.
El parmetro partition spinlock ratio especifica el nmero de cachs de particin que
cada bloqueo de giro protege, no el nmero total de bloqueos de giro. Cuanto mayor sea
el valor especificado para partition spinlock ratio , menor es el nmero de bloqueos de
giro que protegen los cachs de particin. De forma predeterminada, los sistemas SQL
Server estn configurados con partition spinlock ratio definido como 32, lo cual indica
que hay 1 bloqueo de giro por cada 32 cachs de particin.
En teora, proteger una particin con un bloqueo de giro ( partition spinlock ratio igual
a 1) proporciona la menor contienda por un bloqueo de giro y el mayor nmero posible
de operaciones simultneas de particin. El nmero recomendado de bloqueos de giro
disponibles es el 10 por ciento del nmero total de particiones en uso en cualquier
momento dado.
Por ejemplo, si se configura el parmetro partition groups como 80, el nmero
mximo de particiones abiertas es 1280. El nmero recomendado de spinlocks de
particin en este caso es 128, por lo que habra que definir p artition spinlock ratio
como 10:
sp_configure "partition spinlock ratio", 10

Para que un cambio tenga efecto, hay que cerrar y reiniciar SQL Server.
Note: Disminuir el valor del parmetro partition spinlock ratio puede tener poco
efecto sobre el rendimiento de SQL Server. El valor predeterminado es correcto en la
mayora de servidores.
Aumentar el nmero de bloqueos de giro de particin por encima del valor
predeterminado de SQL Server puede reducir mnimamente las contiendas (y puede que
no produzca ninguna mejora apreciable en el rendimiento). Adems, cada bloqueo de
giro de particin adicional usa unos 256 bytes de memoria, lo cual puede afectar otros
aspectos del rendimiento del servidor.
size of auto identity column
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

10

Margen de valores

1-38

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro size of auto identity column define la precisin de las columnas


IDENTITY creadas automticamente con la opcin sp_dboption "auto identity" .
El valor mximo que puede insertarse en una columna IDENTITY es de 10 precisiOn -1.
Cuando una columna IDENTITY llega a su valor mximo, las siguientes instrucciones
insert devuelven un error que aborta la transaccin actual.
Si se llega al valor mximo de una columna IDENTITY, use el comando create table
para crear una tabla idntica a la antigua, pero con una precisin mayor para dicha
columna. Entonces, utilice bcp o el comando insert para copiar datos de la tabla antigua
a la nueva.
sort page count
Informacin sumaria
Nombre en la versin anterior csortpgcount
Valor predeterminado

Margen de valores

0-32767

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro sort page count especifica la cantidad mxima de memoria que puede
utilizar una operacin de ordenacin (las ordenaciones requieren unos 50 bytes por fila
mientras procesan la tabla de entrada). sort page count "toma prestadas" pginas del
cach de datos predeterminado para cada operacin de ordenacin. Un valor ptimo
para sort page count puede derivarse de la frmula siguiente:
( number of sort buffers x filas por pgina de datos) / 50
Sin embargo, para determinar el valor ptimo, debern evaluarse las aplicaciones.
Tenga en cuenta que puede encontrar puntos de rendimiento decrecientes al aumentar
sort page count .
Note: Los volcados de base de datos pueden ser incompatibles en mquinas que tengan
configurados valores diferentes para los parmetros sort page count y number of sort
buffers . Si se incluye un comando create index en el volcado de un diario de
transacciones, SQL Server utiliza esos parmetros con los mismos valores que tenan en
la ordenacin original.
Para reducir este riesgo, ejecute siempre el comando dump database despus de crear
ndices en mquinas que tengan configurados valores grandes para sort page count y
number of sort buffers .
sql server clock tick length
Informacin sumaria
Nombre en la versin anterior cclkrate
Valor predeterminado
Depende de la plataforma
Margen de valores

Mnimo especfico de la plataforma-1000000

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro sql server clock tick length especifica la duracin del impulso del reloj
del servidor, en microsegundos. Tanto el valor predeterminado como el mnimo
dependen de la plataforma. Consulte la gua de instalacin y configuracin de Sybase
para obtener los valores correspondientes a su plataforma.
En aplicaciones de uso mixto con muchas tareas vinculadas a la CPU, reducir el valor
de sql server clock tick length ayudar a dichas tareas. Un valor de 20.000 es
razonable en ese caso. La reduccin de la duracin del impulso implica que las tareas
vinculadas a la CPU cambiarn de contexto con ms frecuencia por unidad de tiempo, y
concede a otras tareas un mayor acceso a la CPU. Esto tambin puede incrementar
marginalmente los tiempos de respuesta, porque SQL Server ejecuta una tarea de
servicio por cada impulso del reloj, y disminuir la duracin del impulso implica que
esas tareas de servicio se ejecutarn con ms frecuencia por unidad de tiempo.
Aumentar sql server clock tick length favorece las tareas vinculadas a la CPU, porque
pueden ejecutarse ms tiempo entre cambios de contexto. El lmite superior til para
ello es un valor de alrededor de 1.000.000. Si sus aplicaciones estn vinculadas

principalmente a la CPU, esa puede ser una eleccin razonable. Como resultado, sin
embargo, sufrirn las tareas vinculadas a E/S. Esto puede mitigarse en parte afinando
time slice (consulte "time slice") y cpu grace time (consulte "cpu grace time").
Note: Cambiar el valor de sql server clock tick length puede tener efectos indeseados
sobre el rendimiento de SQL Server. Consulte al Servicio de Asistencia Tcnica de
Sybase antes de redefinir este valor.
time slice
Informacin sumaria
Nombre en la versin anterior time slice
Valor predeterminado
100
Margen de valores

50-1000

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro time slice define el nmero de milisegundos que otorga el programador de


SQL Server para la ejecucin de un proceso de usuario. Si time slice se define
demasiado bajo, SQL Server puede perder mucho tiempo intercambiando procesos.
Esto no es deseable porque el cambio de contexto es relativamente costoso. Si se define
demasiado alto, los procesos que hacen un uso intensivo de la CPU pueden
monopolizarla, y los usuarios pueden sufrir tiempos de respuesta ms largos.
Las figuras 11-7 a 11-9 ilustran tres situaciones: un proceso con buen comportamiento
compite con otros procesos de usuario por los ciclos de la CPU; un proceso con buen
comportamiento se ejecuta sin otros procesos que compitan por la CPU; y un proceso
con mal comportamiento termina con un error de divisin de tiempo. En este contexto,
"buen comportamiento" hace referencia a procesos con puntos de cesin fijos que los
hacen liberar voluntariamente la CPU al final del intervalo definido por time slice .
"Mal comportamiento" indica procesos que no ceden la CPU voluntariamente.
Figure 11-21: Proceso con buen comportamiento compitiendo con otros por la
CPU
La Figura 11-7 muestra un proceso de usuario en ejecucin mientras otros esperan que
la CPU les conceda tiempo. El proceso comienza entre dos impulsos del reloj de SQL
Server, por lo que el tiempo entre el inicio del proceso y el primer impulso est "libre",
es decir, no cuenta contra el proceso. En el primer impulso del reloj de SQL Server,
comienza t ime slice (en este ejemplo est definido con el valor predeterminado de 100
ms). Cada vez que el proceso llega a un punto de cesin fijo, verifica si se ha superado
time slice . Si no es as, el proceso contina ejecutndose. En caso afirmativo, el
proceso cede voluntariamente la CPU, y el siguiente proceso de la cola de tareas a
ejecutar comienza a ejecutarse.
Figure 11-22: Proceso con buen comportamiento sin otros procesos que compitan
por la CPU

La Figura 11-8 muestra el mismo proceso de usuario en ejecucin cuando no hay otros
procesos de usuario que compitan por los ciclos de la CPU. Cuando el proceso llega a
un punto de cesin fijo y se ha superado time slice , cede la CPU. Sin embargo, en este
ejemplo, al no haber otros procesos que compitan por los ciclos de la CPU, retoma la
CPU y contina ejecutndose. Tan pronto como el proceso retoma la CPU, el intervalo
time slice comienza de nuevo.
Figure 11-23: Proceso con mal comportamiento que no cede la CPU
La Figura 11-9 muestra un proceso de usuario que no cede la CPU al final del intervalo
time slice . Como en los dos ejemplos anteriores, el proceso comienza a ejecutarse y
time slice se inicia en el primer impulso de reloj de SQL Server. Sin embargo, cuando
time slice finaliza, el proceso no cede la CPU y contina ejecutndose, aunque haya
otros procesos esperando la CPU. Una vez superada time slice , cpu grace time entra
en efecto. (En este ejemplo, cpu grace time est definido con 200 ms. Consulte "cpu
grace time" para obtener ms detalles.) Si el proceso an est ejecutndose al final de
cpu grace time , termina con un error de fraccin de tiempo.
El valor predeterminado de time slice es 100 ms., y raramente hay razones para
cambiarlo. Definir time slice con un valor mayor aumenta las posibilidades de que las
tareas vinculadas a la CPU monopolicen la CPU. Un valor menor puede provocar la
terminacin de ms procesos con errores de fraccin de tiempo.
Si afina time slice , tenga en cuenta los valores de los parmetros siguientes:

cpu grace time especifica la cantidad mxima de tiempo (en milisegundos) que
puede ejecutarse un proceso de usuario sin ceder la CPU, antes de que SQL
Server lo termine con un error de fraccin de tiempo.
runnable process search count especifica el nmero de veces que un motor
repite un bucle cuando est buscando una tarea ejecutable, antes de liberar la
CPU.
sql server clock tick length especifica la duracin del impulso del reloj del
servidor, en microsegundos.
i/o polling process count especifica el nmero de procesos de SQL Server que
el programador ejecuta antes de verificar la terminacin de E/S de disco y/o red.

upgrade version
Informacin sumaria
Nombre en la versin anterior upgrade version
Valor predeterminado

1100

Margen de valores

0-2147483647

Estado

Dinmico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro upgrade version indica la versin de la utilidad que mejor la versin del
dispositivo master. Aunque este parmetro es configurable, no debe r edefinir se, ya

que puede provocar graves problemas en SQL Server. La razn de que sea
configurable es que la utilidad de mejora de versin necesita poder modificar el
dispositivo master durante la mejora de versin.
Para determinar si se ha realizado o no una mejora de versin en su dispositivo master,
utilice el parmetro upgrade version sin especificar un valor:
sp_configure "upgrade version"

Si el nmero de la versin mejorada no coincide con el esperado por SQL Server, slo
el administrador del sistema podr hacer el login.
Entorno de usuario
Los parmetros de este grupo configuran los entornos de usuario.
number of user connections
Informacin sumaria
Nombre en la versin anterior user connections
Valor predeterminado
25
Margen de valores

5-2147483647

Estado

Esttico

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro number of user connections define el nmero mximo de conexiones de


usuario que puede haber con SQL Server al mismo tiempo. No hace referencia al
nmero mximo de procesos; ese nmero depende no slo del valor de este parmetro
sino tambin de otras actividades del sistema.
El nmero mximo de conexiones permitidas (o descriptores de archivo) por proceso
depende del sistema operativo; consulte la Gu a de instalacin y configuracin de
Sybase .
El nmero de descriptores de archivo disponibles para SQL Server se almacena en la
variable global @@max_connections . Si desea conocer el nmero mximo de
descriptores de archivo que puede utilizar el sistema, emplee este comando:
select @@max_connections

El valor que devuelva representa el nmero mximo de descriptores de archivo


permitidos por el sistema para sus procesos, menos los siguientes descriptores utilizados
por SQL Server:

Uno por cada oyente de red master configurado (uno por cada lnea "master" de
la entrada de archivo de interfaces de ese SQL Server).
Uno para salida estndar.

Uno para el archivo del diario de errores.


Uno para uso interno (slo OpenVMS).

Este valor no incluye el nmero de manipuladores de sitio activos en un momento dado.


(Para los SQL Server que se ejecutan en OpenVMS, este valor tambin resta una
conexin para un puerto de depuracin.)
Warning! Si number of user connections se define con un valor mayor que el
resultado del clculo descrito ms abajo, algunos procesos de SQL Server, tales como
llamadas de procedimientos remotos o volcados peridicos a cinta, o a archivos de
disco, pueden fallar. El Servicio de Asistencia Tcnica de Sybase lo ayudar a redefinir
el nmero mximo de conexiones adecuado a su configuracin.
SQL Server asigna aproximadamente 52K de memoria (dependiendo de la plataforma)
como sobrecarga por cada conexin de usuario. Si se aumentan los parmetros stack
size o default network packet size , tambin se incrementa la cantidad de memoria por
conexin de usuario, reduciendo as el espacio disponible para los cachs de datos y de
procedimientos.
Adems, deben reservarse cierto nmero de conexiones para:

Los dispositivos de datos, incluido el dispositivo master


Backup Server
Dispositivos de duplicacin
El nmero mximo de manipuladores de sitio activos en un momento dado.

Para determinar estos valores, rellene la siguiente hoja de trabajo


Categora de valores
Valor de @@max_connections

Valores para s u servidor

Menos
Suma de valores devueltos por estas consultas:
select count(*) from master..sysdevices where cntrltype = 0
select count(*) from sysdevices
where mirrorname is not NULL
select count(*) from sysservers
where srvname != @@servername

___________________
___________________
___________________

Valor mximo con que puede definirse number of user connections =


No hay ninguna frmula para determinar cuntas conexiones deben permitirse para cada
usuario. Ms bien, ese nmero debe estimarse en funcin de los requisitos del sistema y
de usuario aqu descritos. Tambin debe tenerse en cuenta que, en sistemas con muchos
usuarios, hay ms probabilidad de que las conexiones ocasionalmente necesarias o
pasajeras puedan compartirse entre usuarios. Los siguientes procesos requieren
conexiones de usuario:

Es necesaria una conexin para cada usuario que ejecute isql .


Los desarrolladores de aplicaciones utilizan una conexin para cada sesin de
edicin.
El nmero de conexiones requeridas por los usuarios que ejecutan una
aplicacin depende enteramente de cmo se ha programado la aplicacin. Los
usuarios que ejecuten programas de Open Client necesitan una conexin para
cada dbprocess de
DB-Library o cs_connection de Client-Library abiertos.
Note: Es aconsejable estimar el nmero mximo de conexiones que SQL Server
utilizar y actualizar n umber of user connections conforme se aadan
dispositivos fsicos o usuarios al sistema. Use sp_who peridicamente para
determinar el nmero de conexiones de usuario activas en su SQL Server.

Conexiones de usuario en sistemas SMP


En sistemas de multiprocesador simtrico (SMP), cada motor de base de datos es un
proceso distinto del sistema operativo, con su propio lmite mximo de descriptores de
archivo. Para determinar el nmero mximo de conexiones de usuario en un sistema
SMP, establezca primero el nmero mximo de conexiones de usuario por motor y
multiplquelo luego por el nmero de motores en lnea.
permission cache entries
Informacin sumaria
Nombre en la versin anterior cfgcprot
Valor predeterminado

15

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro permission cache entries determina el nmero de protectores de cach


por tarea.
La informacin sobre permisos de usuario se almacena en el cach de permisos. Cuando
SQL Server verifica permisos, primero mira en ese cach: si no encuentra lo que
necesita, mira en la tabla sysprotects . Respecto del tiempo de respuesta, es
significativamente ms rpido que SQL Server encuentre la informacin que precisa en
el cach de permisos, sin tener que efectuar una lectura en sysprotects .
Sin embargo, SQL Server mira en el cach slo cuando verifica los permisos de usuario,
pero no cuando se estn concediendo o revocando los permisos. Siempre que se concede
o revoca un permiso, se vaca todo el cach de permisos. Esto se debe a que los
permisos existentes tienen marcas horarias que caducan cuando se conceden o revocan
nuevos permisos.

Si los usuarios de su SQL Server realizan frecuentemente operaciones que requieren la


verificacin de sus permisos otorgables o revocables, es posible que se obtenga una
pequea mejora de rendimiento aumentando el valor de permission cache entries . No
es probable que este efecto tenga la importancia necesaria como para justificar una
afinacin a fondo.
Si los usuarios ejecutan los comandos grant o revoke con frecuencia, evite definir
permission cache entries con un valor grande. El espacio usado por dicho cach se
desaprovechara, ya que el cach se vaca con cada grant y revoke .
Cada protector de cach utiliza 28 bytes de memoria.
stack guard size
Informacin sumaria
Nombre en la versin anterior cguardsz
Valor predeterminado

4096

Margen de valores

0-2147483647

Estado

Esttico

Nivel de visualizacin

Completo

Rol requerido

Administrador del sistema

El parmetro stack guard size define el tamao del rea de proteccin de pila, que es
una pila de desbordamiento de tamao configurable situada al final de cada pila. SQL
Server asigna una pila para cada conexin de usuario al arrancar. Estas pilas estn
ubicadas contiguamente en la misma rea de memoria, con un rea de proteccin al
final de cada pila. Por otra parte, al final de cada una de estas reas hay una "palabra de
proteccin", que es una estructura de cuatro bytes con un patrn conocido.
Figure 11-24: Proceso a punto de corromper la palabra de proteccin de la pila
SQL Server verifica peridicamente si el puntero de pila de una conexin de usuario ha
entrado en el rea de proteccin de la pila asociada a la pila de esa conexin de usuario.
Si es as, SQL Server aborta la transaccin, entrega el control a la aplicacin que gener
la transaccin, y genera el error 3626:
Se abort la transaccin porque utilizaba demasiado espacio de pila.
Use sp_configure para incrementar el tamao de la pila, o divida la
consulta en partes ms pequeas. spid: %1!, suid: %2!, nombre de
computadora principal: %3!, nombre de aplicacin: %4!

SQL Server tambin verifica peridicamente el patrn de la palabra de proteccin para


ver si ha cambiado. Eso indicara que un proceso ha desbordado el lmite de la pila.
Cuando esto ocurre, SQL Server imprime los mensajes en el diario de errores:
kernel: *** Stack overflow detected: limit: 0x%lx sp: 0x%lx
kernel: *** Stack Guardword corrupted
kernel: *** Stack corrupted, server aborting

y se cierra. En el primer mensaje, "limit" es la direccin del final del rea de proteccin
de la pila y "sp" es el valor actual del puntero de pila.
Adems, SQL Server verifica peridicamente el puntero para ver si est completamente
fuera de la pila y del rea de proteccin de pila del proceso del puntero. De ser as, SQL
Server se cierra aunque la palabra de proteccin no est corrupta. Cuando esto sucede,
SQL Server imprime los mensajes siguientes en el diario de errores:
kernel: *** Stack overflow detected: limit: 0x%lx sp: 0x%lx
kernel: *** Stack corrupted, server aborting

El valor predeterminado de stack guard size debera ser adecuado para casi todas las
aplicaciones. Sin embargo, si el servidor se cierra por la corrupcin de la palabra de
proteccin o por el desbordamiento de la pila, aumente stack guard size en 2K. Tenga
en cuenta que cada conexin de usuario configurada tiene un rea de proteccin de pila;
de ese modo, cuando aumente stack guard size , estar utilizando esa cantidad de
memoria multiplicada por el nmero de conexiones de usuario configuradas. Si hay un
gran nmero de conexiones de usuario, esto puede llegar a constituir una cantidad
significativa de memoria. A menos que tambin aumente total memory en una cantidad
correspondiente, la memoria configurada para stack guard size se tomar del mismo
banco utilizado para los cachs de datos y de procedimientos.
Las clusulas where y listas select de gran tamao, y los procedimientos almacenados
muy anidados, pueden contribuir a que se produzca un desbordamiento de la pila. Sin
embargo, en lugar de aumentar stack guard size para remediarlo, considere incrementar
stack size (consulte "stack size"). El rea de proteccin de pila est diseada como rea
de desbordamiento, no como una extensin de la pila normal.
SQL Server asigna espacio de pila para cada tarea, sumando los valores de los
parmetros stack size y stack guard size . Ese total tiene que ser mltiplo del tamao
de pgina de SQL Server, normalmente 2K o 4K. Consulte la documentacin de su
sistema operativo para obtener informacin sobre el tamao de pgina.
stack size
Informacin sumaria
Nombre en la versin anterior stack size
Valor predeterminado

Depende de la plataforma

Margen de valores

Mnimo depende de la plataforma-2147483647

Estado

Esttico

Nivel de visualizacin

Bsico

Rol requerido

Administrador del sistema

El parmetro stack size especifica el tamao en bytes de las pilas de ejecucin


utilizadas por cada proceso de usuario en SQL Server. Consulte la gua de instalacin y
configuracin de Sybase para obtener los valores mnimo y predeterminado de su
plataforma. Dichos valores deben siempre especificarse en mltiplos de 2K. Una pila de

ejecucin es un rea de memoria de SQL Server donde los procesos de usuario realizan
el seguimiento del contexto de sus procesos, y tambin almacenan datos locales.
Ciertas consultas, en especial las que contienen clusulas where y listas select de gran
tamao, y los procedimientos almacenados muy anidados, pueden contribuir a que se
produzca un desbordamiento de la pila. Siempre que se desborda una pila, SQL Server
imprime un mensaje de error y revierte la transaccin. Consulte "stack guard size" para
obtener ms informacin sobre desbordamientos de pila. Consulte Mensajes de Error de
S QL Server para obtener ms informacin sobre mensajes de error especficos.
Las dos opciones para remediar esto, son dividir esas consultas largas en consultas ms
pequeas o aumentar stack size . La modificacin de stack size afecta la cantidad de
memoria necesaria para cada conexin de usuario.
Cuando piense en cambiar stack size , considere dos factores:

El valor configurado de total memory .Dado que cada conexin de usuario tiene
su propia pila de ejecucin, la cantidad de memoria especificada para stack size
se multiplica por el nmero de conexiones de usuario configuradas para SQL
Server. Esto puede llegar a suponer una cantidad significativa de memoria en los
SQL Server con muchas conexiones de usuario. Si aumenta stack size , tambin
deber incrementar total memory para mantener la misma cantidad de memoria
disponible para el cach de datos. Para obtener ms informacin, consulte "total
memory".
El tamao y complejidad de las consultas ms grandes.Si hay consultas que
superan el tamao de la pila de ejecucin, puede ser conveniente reescribirlas
como una serie de consultas ms pequeas, en especial si slo son pocas
consultas o si se las ejecuta con poca frecuencia.

No hay forma de determinar cunto espacio de pila requerir una consulta si no se la


ejecuta. El espacio de pila se preasigna en el momento del arranque. El espacio de una
pila en particular es utilizado exclusivamente por un proceso hasta que dicho proceso
termina de ejecutarse: en ese momento, la pila queda disponible para otro proceso.
Por lo tanto, determinar el valor adecuado de stack size es un proceso emprico. Pruebe
sus consultas ms grandes y complejas usando el valor predeterminado de stack size .
Si no generan mensajes de error, probablemente ese valor sea suficiente. Si generan
mensajes de error, comience aumentando stack size en una cantidad pequea (2K).
Repita las consultas y verifique si la cantidad aadida es suficiente. En caso contrario,
contine hasta que se ejecuten sin generar mensajes de error.
Cuando se configura stack size , SQL Server verifica el valor para determinar si es un
mltiplo exacto del tamao de pgina de su SQL Server, que es 2048 bytes en la
mayora de plataformas. Si no es un mltiplo exacto, sp_configure redondea el valor al
siguiente mltiplo del tamao de pgina, e imprime un mensaje informativo adicional
que indica el valor.
systemwide password expiration
Informacin sumaria

Nombre en la versin anterior password expiration interval


Valor predeterminado

Margen de valores

0-32767

Estado

Dinmico

Nivel de visualizacin

Intermedio

Rol requerido

Oficial de seguridad del sistema

El parmetro systemwide password expiration define el nmero de das que las


contraseas permanecen en efecto despus de haber sido cambiadas. Si systemwide
password expiration se define como 0 (el valor predeterminado), las contraseas no
vencen. Si se define con un nmero mayor de 0, todas las contraseas vencen despus
del nmero especificado de das. La contrasea de una cuenta se considera vencida si ha
transcurrido un intervalo superior al number_of_days desde la ltima vez que se
cambi.
Cuando el nmero de das que quedan antes del vencimiento es inferior al 25 por ciento
del valor de systemwide password expiration o a 7 das, cualquiera sea el mayor, cada
vez que el usuario hace el login, es recibido con un mensaje indicando el nmero de
das que quedan antes del vencimiento. Los usuarios pueden cambiar sus contraseas en
cualquier momento antes del vencimiento.
Cuando ha vencido la contrasea de una cuenta, el usuario todava puede conectarse a
SQL Server, pero no puede ejecutar ningn comando hasta que utilice sp_password
para cambiar su contrasea. Si emite otro comando que no sea sp_password , el usuario
recibe un mensaje de error y el comando falla. Si el oficial de seguridad del sistema
cambia la contrasea del usuario mientras la cuenta est en modo de slo sp_password
, la cuenta vuelve a la normalidad una vez asignada la nueva contrasea.
Esto se aplica slo a las sesiones de login establecidas despus de vencida la contrasea.
Los usuarios que estn conectados en el momento de vencer sus contraseas no se ven
afectados hasta la siguiente vez que hagan el login.
El valor predeterminado de systemwide password expiration es 0 (sin vencimiento).
Este parmetro slo puede ser definido por los oficiales de seguridad del sistema.
user log cache size
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

2048

Margen de valores

2048-2147483647

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro user log cache size especifica el tamao (en bytes) del cach de diario de
cada usuario. Hay un cach de diario por cada conexin de usuario configurada. SQL
Server utiliza estos cachs como memoria intermedia para los registros del diario de
transacciones de los usuarios, lo cual reduce la contienda al final del diario de
transacciones. El valor mnimo (y predeterminado) de user log cache size es 2048.
Cuando se llena el cach de diario de un usuario, o tiene lugar otro evento (como
cuando la transaccin termina), SQL Server "vaca" todos los registros de diario desde
el cach al diario de transacciones de la base de datos. SQL Server reduce la contienda
de los procesos que escriben en el diario consolidando, primero, los registros en el cach
de diario de cada usuario, en lugar de aadiendo inmediatamente cada registro en el
diario de transacciones de la base de datos. Esto ocurre en especial en sistemas SMP
configurados con ms de un motor.
No configure u ser log cache size con un valor mayor que la cantidad mxima de
informacin de diario escrita por la transaccin de una aplicacin. Dado que SQL
Server vaca el cach de diario del usuario cuando se completa la transaccin, cualquier
memoria adicional que se asigne al cach de diario de usuario se desperdicia. Si ninguna
transaccin del servidor genera ms de 4000 bytes de registros de diario de
transacciones, no defina user log cache size por encima de ese valor. Por ejemplo:
sp_configure "user log cache size", 4000

Si configura user log cache size con un valor demasiado alto, puede aumentar la
contienda sobre el nmero existente de bloqueos de giro de cach de diario del usuario
(consulte el parmetro user log cache spinlock ratio ) as como la probabilidad de que
un evento interno fuerce el vaciado del cach, desaprovechando memoria. Si define
user log cache size con un valor demasiado bajo, es posible que el cach de diario del
usuario se llene y se vace ms de una vez por transaccin, aumentando la contienda
sobre el diario de transacciones. (Si el volumen de transacciones es bajo, la contienda
por el diario de transacciones puede no ser significativa.)
user log cache spinlock ratio
Informacin sumaria
Nombre en la versin anterior N/A
Valor predeterminado

20

Margen de valores

1-2147483647

Estado

Esttico

Nivel de visualizacin

Intermedio

Rol requerido

Administrador del sistema

El parmetro user log cache spinlock ratio especifica la relacin de cachs de diario de
usuario por bloqueo de giro de cach. Hay un cach de diario por cada conexin de
usuario configurada. Un bloqueo de giro es un simple mecanismo interno de bloqueo
que impide que un segundo proceso tenga acceso a la estructura de datos usada
actualmente por otro. El segundo proceso debe esperar (o "girar") hasta que se libere el

bloqueo. SQL Server utiliza los bloqueos de giro para proteger el cach de diario del
usuario ya que ms de un proceso puede tener acceso al contenido de ese cach.
El valor que se especifique para este parmetro define la relacin de cachs de diario de
usuario por bloqueo de giro. Si especifica 5 para user log cache spinlock ratio , SQL
Server asigna un bloqueo de giro por cada cinco cachs de diario de usuario. Por
ejemplo:
sp_configure "user log cache spinlock ratio", 5

El nmero real de bloqueos de giro que SQL Server asigna depende del nmero total de
conexiones de usuario. Cuanto menor sea el valor especificado para user log cache
spinlock ratio , mayor ser el nmero de bloqueos de giro en su servidor.
Sin embargo, hay que tener cuidado de definir este valor demasiado bajo, dado que cada
bloqueo de giro utiliza hasta 256 bytes de memoria. Este requisito de memoria adicional
reduce la memoria disponible para los cachs de datos y de procedimientos, lo cual
puede afectar otros aspectos del rendimiento del servidor. El valor predeterminado para
este parmetro es 20: un bloqueo de giro por cada 20 conexiones de usuario
configuradas en el servidor. Si el servidor est configurado con un solo motor, SQL
Server define un solo bloqueo de giro de cach de diario de usuario, cualquiera sea el
nmero de conexiones de usuario.

Chapter 12

Juegos de caracteres, ordenacin e idioma de los mensajes


En este captulo se trata el soporte para la internacionalizacin y localizacin de SQL
Server. Incluye los temas siguientes:

Introduccin
Juegos de caracteres y criterios de ordenacin
Mensajes de software
Cambio de juego de caracteres, criterio de ordenacin e idioma de mensajes
predeterminados
Instalacin de cadenas de fecha para idiomas no soportados

Introduccin
Sybase proporciona soporte de internacionalizacin y localizacin para instalaciones en
otros pases. In ternacionalizacin es el proceso de disear productos de software de
forma que una sola versin pueda adaptarse a diferentes idiomas o regiones, segn los
requisitos y costumbres locales, sin necesidad de cambios de ingeniera. SQL Server
est internacionalizado para que pueda procesar correctamente los caracteres usados en
distintos idiomas. El producto Character Sets de Sybase proporciona los archivos de
definicin de juego de caracteres y criterios de ordenacin necesarios para soportar el
procesamiento de datos en los principales idiomas de Europa Occidental, Europa
Oriental, Oriente Medio, Amrica Latina y Asia. De forma predeterminada, SQL Server
viene con los juegos de caracteres y criterios de ordenacin soportados para los idiomas
de Europa Occidental.

La localizacin es la adaptacin de un producto internacionalizado para satisfacer los


requisitos de cierto idioma o regin, incluyendo la traduccin de mensajes del sistema y
formatos correctos de fecha, hora y moneda. Language Modules de Sybase proporciona
los formatos y mensajes del sistema traducidos para los siguientes idiomas: chino
(simplificado), francs, alemn, japons y espaol. De forma predeterminada, SQL
Server viene con archivos de mensajes en ingls estadounidense.
Este captulo describe brevemente los mdulos de idioma y juegos de caracteres, y
resume los pasos necesarios para cambiar el juego de caracteres, idioma de los mensajes
o criterios de ordenacin predeterminados en SQL Server.

Juegos de caracteres y criterios de ordenacin


Si necesita soporte para el procesamiento de datos en un idioma que no es de Europa
Occidental, debe adquirir e instalar el producto Character Sets de Sybase.
Tipos de archivos de internacionalizacin
Los archivos que soportan el procesamiento de datos en un idioma en particular se
denominan archivos de internacionalizacin . Algunos tipos de estos archivos vienen
con SQL Server y el producto Character Sets de Sybase, y se describen a continuacin.
Tabla 12-1: Archivos de internacionalizacin
Archivo

Ubicacin
En cada
subdirectorio de
charset.loc juego de caracteres
del directorio
charsets

Propsito y contenido
Archivos de definicin de juegos de caracteres que
especifican las propiedades lxicas de cada carcter,
como alfanumricas, puntuacin, operando, mayscula
o minscula. Usado por SQL Server para procesar los
datos correctamente.

*.srt

En cada
subdirectorio de
juego de caracteres
del directorio
charsets

*.xlt

Archivos de traduccin de caracteres especficos del


terminal, para usarse con utilidades como isql y bcp .
En cada
Estos archivos son parte del mdulo de idioma de
subdirectorio de
Open Client. Para obtener ms informacin sobre
juego de caracteres
cmo se usan los archivos . xlt , consulte el Captulo
del directorio
13, "Conversin de juegos de caracteres entre SQL
charsets
Server y los clientes", y el manual de los programas de
utilidad de SQL Server.

Define el criterio de ordenacin para caracteres


alfanumricos y especiales, incluyendo letras dobles,
signos diacrticos y otros aspectos especficos del
idioma.

Warning! No altere ninguno de los archivos de internacionalizacin. Si necesita


instalar una nueva definicin de terminal o criterios de ordenacin, pngase en contacto
con su distribuidor local de Sybase.
Estructura de los directorios de juegos de caracteres

La Figura 12-1 muestra la estructura de directorios para los juegos de caracteres de


Europa Occidental incluidos en SQL Server. Hay un subdirectorio aparte para cada
juego de caracteres en el directorio charsets . Dentro de cada subdirectorio (por
ejemplo, cp850 ) estn los archivos de definicin del juego de caracteres y criterios de
ordenacin, y los archivos especficos del terminal.
Si carga los juegos de caracteres adicionales del producto Character Sets de Sybase,
tambin aparecern en el directorio charsets .
Figure 12-25: Estructura de los directorios de juegos de caracteres

Mensajes de software
De forma predeterminada, cuando se instala SQL Server, se cargan los mensajes en
ingls. Las instalaciones internacionales de SQL Server se soportan con el producto
Language Modules que contiene archivos con mensajes de software traducidos y
formatos locales o de idioma. Estos archivos, situados en el subdirectorio locales del
directorio de instalacin de SQL Server, se denominan archivos de localizacin .
Tipos de archivos de localizacin
Con SQL Server y el producto Language Modules, se suministran varios tipos de
archivos de localizacin, como se muestra en la tabla siguiente.
Tabla 12-2: Archivos de localizacin
Archivo

Ubicacin

locales.dat En el directorio locales

server.loc

En los subdirectorios de
juegos de caracteres, bajo el
subdirectorio de cada
idioma del directorio
locales

En cada directorio de
idioma y de juego de
common.loc
caracteres del directorio
locales

Propsito y contenido
Usado por las aplicaciones cliente para
identificar el idioma predeterminado de los
mensajes y el juego de caracteres
predeterminado.
Mensajes de software traducidos al idioma
local. Sybase tiene archivos * .loc especficos
para cada producto. Si una entrada no est
traducida, ese mensaje o cadena aparece en
ingls, no en el idioma local.
Contiene los nombres locales de los meses y
sus abreviaturas, e informacin sobre los
formatos locales de fecha, hora y moneda.

Warning! No altere ninguno de los archivos de localizacin. Si necesita alterar alguna


informacin de los archivos, pngase en contacto con su distribuidor local de Sybase.
Estructura de los directorios de mensajes de software
La Figura 12-2 ilustra cmo se organizan los archivos de localizacin en el directorio
locales, dentro del cual hay un subdirectorio para cada idioma instalado. De forma
predeterminada, siempre hay un subdirectorio us_english . (En la plataforma PC, se
llama english .) Si instala mdulos de idiomas adicionales, ver subdirectorios para esos

idiomas. Dentro de cada idioma, hay subdirectorios para los juegos de caracteres
soportados; por ejemplo, cp850 es un juego de caracteres soportado para ingls. Los
archivos de mensajes de software de cada uno de los distintos productos de Sybase
estn en el subdirectorio correspondiente a cada juego de caracteres. Durante la
instalacin de SQL Server, cuando se le pide que seleccione los idiomas que desea
instalar en SQL Server, el programa de instalacin enumera los idiomas soportados para
los mensajes de software.
Figure 12-26: Estructura del directorio de mensajes

Cambio de juego de caracteres, criterio de ordenacin e idioma de


mensajes predeterminados
Un Administrador del sistema puede cambiar el juego de caracteres, los criterios de
ordenacin o el idioma de los mensajes que SQL Server utiliza. Dado que los criterios
de ordenacin se crean para un juego de caracteres determinado, cambiar los juegos de
caracteres implica siempre cambiar los criterios de ordenacin. Sin embargo, se pueden
cambiar los criterios de ordenacin sin cambiar de juego de caracteres, porque puede
haber varios criterios disponibles para un solo juego.
Esta seccin resume los pasos que deben tomarse antes y despus de cambiar el juego
de caracteres, los criterios de ordenacin y el idioma de los mensajes de SQL Server.
Para obtener informacin sobre cmo configurarlos, consulte la gua de instalacin y
configuracin de SQL Server.
Cambio del juego de caracteres predeterminado
SQL Server slo puede tener un juego de caracteres predeterminado , el utilizado
para almacenar los datos en sus bases de datos. La primera vez que se instala SQL
Server, se especifica un juego de caracteres predeterminado.
Warning! Lea lo siguiente con atencin y tenga extremo cuidado al cambiar el juego de
caracteres predeterminado de SQL Server.
Tenga en cuenta lo siguiente cuando cambie el juego de caracteres predeterminado de
SQL Server:

Convierta cualquier dato existente al nuevo juego de caracteres


predeterminado.Primero debe extraer los datos con b cp y luego cambiar el
juego de caracteres predeterminado en SQL Server. Utilice bcp , con los
indicadores adecuados para conversin de datos, para volver a copiar los datos al
servidor. Consulte el manual de los programas de utilidad de SQL Server para
obtener ms informacin sobre bcp .
Las conversiones de cdigo deben estar soportadas para los juegos de
caracteres.La conversin de cdigo entre el juego de caracteres de los datos
existentes y el nuevo juego predeterminado debe estar soportada. Si no es as, se
producirn errores y los datos no se convertirn correctamente. Consulte el
Captulo 13, "Conversin de juegos de caracteres entre SQL Server y los
clientes", para obtener ms informacin sobre las conversiones de juegos de
caracteres soportadas.

Es posible que se produzcan algunos errores de conversin.Aunque las


conversiones entre los juegos de caracteres estn soportadas, pueden producirse
algunos errores debido a pequeas diferencias entre los juegos y a caracteres que
no tengan equivalentes en otros juegos. Es posible que las filas con datos
problemticos no se copien de nuevo a la base de datos, o que los datos
contengan caracteres parciales o ilegales.

Si los datos existentes son ASCII de 7 bits, no es necesaria la conversin al nuevo juego
de caracteres predeterminado. Se podr cambiar el juego de caracteres predeterminado
sin necesidad de extraer los datos del servidor.
Cambio del criterio de ordenacin predeterminado
SQL Server slo puede tener un criterio de ordenacin predeterminado , la secuencia
que utiliza para ordenar los datos. Cuando vaya a cambiar los criterios de ordenacin
para datos alfanumricos en un SQL Server en particular, tenga en cuenta que todos los
SQL Server de su organizacin deben tener los mismos criterios de ordenacin. Un
criterio de ordenacin nico impone coherencia y facilita la administracin del
procesamiento distribuido.
Cambiar los criterios de ordenacin puede provocar ndices invlidos, y quiz tenga que
reconstruir los ndices. Para ms informacin, consulte "Si ha cambiado el criterio de
ordenacin o el juego de caracteres predeterminados".
Obtencin de informacin sobre criterios de ordenacin
El procedimiento del sistema sp_helpsort muestra los criterios de ordenacin
predeterminados de SQL Server, su juego de caracteres y una tabla de sus criterios de
ordenacin principales. Su sintaxis es:
sp_helpsort

Para obtener ms informacin sobre los diferentes criterios de ordenacin, consulte la


gua de instalacin y configuracin de SQL Server.
Volcados de base de datos y cambios de configuracin
Note: Realice una copia de seguridad de todas las bases de datos de SQL Server antes y
despus de cambiar los juegos de caracteres o los criterios de ordenacin.
En la mayora de los casos, no es posible volver a cargar los datos de un volcado de
base de datos despus de reconfigurar el juego de caracteres y criterio de ordenacin
predeterminados de SQL Server.
No utilice un volcado de base de datos si lo siguiente es cierto:

Si su base de datos contiene datos alfanumricos de 8 bits y desea convertirlos al


nuevo juego de caracteres, no cargue un volcado de datos en un SQL Server con
el nuevo juego de caracteres predeterminado. SQL Server interpreta todos los
datos cargados como si estuvieran en el nuevo juego y los datos se corrompern.

Si slo cambia el criterio de ordenacin predeterminado sin modificar el juego


de caracteres predeterminado, no es posible cargar una base de datos de un
volcado realizado antes de la reconfiguracin del criterio. Si intenta hacerlo,
aparecer un mensaje de error y se abortar la carga.
Si se reconfigura el juego de caracteres predeterminado, y el criterio de
ordenacin antiguo o el nuevo no son binarios, no es posible cargar un volcado
de base datos realizado antes de reconfigurar el juego de caracteres.

En cambio, utilice bcp para extraer y volver a copiar los datos a las bases de datos.
Se puede utilizar un volcado de base de datos si lo siguiente es cierto:

Si los datos no tienen que convertirse al nuevo juego de caracteres y los juegos
de caracteres antiguo y nuevo utilizan un criterio de ordenacin binario, se
puede restaurar la base de datos a partir de las copias de seguridad realizadas
antes de reconfigurar el juego de caracteres.

Pasos necesarios
Es necesario realizar diversos pasos al cambiar el juego de caracteres, el idioma de los
mensajes o el criterio de ordenacin de SQL Server.
Pasos preliminares
Antes de ejecutar el programa de instalacin para reconfigurar SQL Server:
1. Vuelque toda las bases de datos de usuario y master . Si ha realizado cambios en
model o sybsystemprocs , vulquelas tambin.
2. Cargue el mdulo de idioma si no lo estuviera (consulte la gua de instalacin y
configuracin de SQL Server para ver instrucciones completas).
3. Si va a cambiar el juego de caracteres predeterminado de SQL Server, y sus
bases de datos actuales contienen datos que no son de 7 bits, extrigalos de las
bases de datos mediante bcp .
En este punto, puede ejecutar el programa de instalacin de SQL Server para configurar
los idiomas, juegos de caracteres o criterios de ordenacin, as como otras opciones.
Pasos para configurar idiomas, juegos de caracteres y criterios de ordenacin
Utilice el programa de instalacin de SQL Server para:

Instalar o quitar idiomas de mensajes o juegos de caracteres incluidos con SQL


Server.
Cambiar el idioma de mensajes o juego de caracteres predeterminados.
Seleccionar otro criterio de ordenacin.

Consulte la gua de instalacin y configuracin de SQL Server para ver las instrucciones
sobre el uso del programa de instalacin.

Si est aadiendo un nuevo juego de caracteres que no se incluye con SQL Server,
consulte la documentacin de Character Sets de Sybase para obtener las instrucciones
completas.
Pasos finales
Si ha instalado idiomas adicionales, pero no ha cambiado el criterio de ordenacin ni el
juego de caracteres de SQL Server, el proceso de reconfiguracin est terminado.
Si ha cambiado el juego de caracteres predeterminado de SQL Server, y sus bases de
datos actuales contienen datos que no son de 7 bits, vuelva a copiar los datos a las bases
de datos usando bcp con los indicadores necesarios para habilitar la conversin.
Si ha cambiado el criterio de ordenacin o juego de caracteres predeterminados de SQL
Server, lea tambin "Si ha cambiado el criterio de ordenacin o el juego de caracteres
predeterminados".
Definicin del idioma predeterminado del usuario
Si se ha instalado un idioma adicional, los usuarios que ejecuten los programas cliente
pueden emitir sp_modifylogin para definirlo como su idioma predeterminado, en lugar
del idioma predeterminado de SQL Server.
Si ha cambiado el criterio de ordenacin o el juego de caracteres predeterminados
Esta seccin describe la recuperacin despus de una reconfiguracin y los pasos que
quiz deba seguir si ha cambiado el criterio de ordenacin o el juego de caracteres
predeterminado de SQL Server.
Si ha cambiado el criterio de ordenacin, debe hacer lo siguiente despus de
reconfigurar SQL Server:

Ejecute sp_indsuspect para establecer los ndices de usuario que quiz no sean
vlidos.
Reconstruya los ndices de usuario dudosos mediante el comando dbcc reindex
.

Para obtener ms informacin, consulte "Uso de sp_indsuspect para encontrar ndices


corruptos" y "Reconstruccin de ndices con dbcc reindex".
Si ha cambiado a un juego de caracteres de varios bytes desde cualquier otro juego de
caracteres (de uno o varios bytes), debe actualizar los valores text existentes mediante
dbcc fix_text . Consulte "Actualizacin de datos text con dbcc fix_text" para obtener
ms informacin.
Recuperacin tras la reconfiguracin
Cada vez que se detiene y reinicia SQL Server, automticamente se realiza una
recuperacin de cada base de datos. La recuperacin automtica se trata en detalle en el
Captulo 18, "Desarrollo de un plan de copias de seguridad y recuperacin".

Una vez terminada la recuperacin, se cargan las nuevas definiciones de criterio de


ordenacin y juego de caracteres.
Si cambi el criterio de ordenacin, SQL Server cambia al modo de usuario nico para
permitir las actualizaciones necesarias en las tablas del sistema e impedir que otros
usuarios utilicen el servidor. Cada tabla del sistema con un ndice basado en caracteres
alfanumricos se verifica automticamente por si el cambio de criterio hubiera
corrompido algn ndice. Los ndices de las tablas del sistema basados en caracteres
alfanumricos se reconstruyen automticamente, de ser necesario, con la nueva
definicin de criterio de ordenacin.
Una vez reconstruidos los ndices del sistema, los ndices de usuario basados en
caracteres alfanumricos se marcan como "sospechosos" en la tabla del sistema
sysindexes , sin ser verificados. Las tablas de usuario con ndices sospechosos se marcan
como de "slo lectura" en sysobjects para impedir que se actualicen esas tablas o el uso
de esos ndices sospechosos hasta que se hayan verificado y, si es necesario,
reconstruido.
A continuacin, la nueva informacin del criterio de ordenacin sustituye a la antigua
en el rea del disco que contiene la informacin de configuracin. Entonces, SQL
Server se cierra para comenzar en limpio la sesin siguiente.
Uso de sp_indsuspect para encontrar ndices corruptos
Despus de que SQL Server se cierre, reincielo y utilice sp_indsuspect para encontrar
las tablas de usuario que deben reindexarse. La sintaxis es:
sp_indsuspect [

tab_name

donde tab_name es el nombre opcional de una tabla especfica. Si no se indica


tab_name , sp_indsuspect crea una lista de todas las tablas de la base de datos actual
que tengan ndices marcados como "sospechosos" cuando cambi el criterio de
ordenacin.
En este ejemplo, la ejecucin de sp_indsuspect en la base de datos mydb produce un
ndice sospechoso:
sp_indsuspect
Suspect indexes in database mydb
Own.Tab.Ind (Obj_ID, Ind_ID) =
dbo.holdings.h_name_ix(160048003, 2)

Reconstruccin de ndices con dbcc reindex


dbcc reindex permite que el administrador del sistema o el propietario de la tabla
verifiquen la integridad de los ndices asociados a una tabla de usuario y reconstruyan
los ndices sospechosos. dbcc reindex verifica cada ndice ejecutando una versin
"rpida" de dbcc checktable . La funcin imprime un mensaje cuando descubre el
primer error relacionado con un ndice y reconstruye los ndices inconsistentes.
La sintaxis es:

dbcc reindex(

table_name

table_id

Ejecute esta utilidad en todas las tablas enumeradas como conteniendo ndices
sospechosos por sp_indsuspect . Por ejemplo:
dbcc reindex(titles)
Uno o ms ndices estn corruptos. Se reconstruirn.

En el ejemplo anterior, dbcc reindex ha descubierto uno o ms ndices sospechosos en


la tabla titles . La utilidad dbcc omite y vuelve a crear los ndices apropiados.
Si los ndices de una tabla ya son los correctos, o si no hay ndices en la tabla, dbcc
reindex no los reconstruye, sino que imprime otro mensaje informativo. Si se sospecha
que una tabla contiene datos corruptos, el comando tambin se aborta. Si eso ocurre,
aparece un mensaje de error indicando al usuario que ejecute dbcc checktable .
Cuando dbcc reindex termina con xito, se quitan todas las marcas de "sospecha" de
los ndices de la tabla. Tambin se quita la marca de "slo lectura" de la tabla, y la tabla
puede actualizarse. Estas marcas se quitan independientemente de que los ndices
tengan que reconstruirse o no.
dbcc reindex no reindexa las tablas del sistema. De ser necesario, los ndices del
sistema se verifican y reconstruyen automticamente como parte de la recuperacin
cuando SQL Server se reinicia despus de un cambio del criterio de ordenacin.
Actualizacin de datos text con dbcc fix_text
Note: Si cambia a un nuevo juego de caracteres de varios bytes desde un juego de uno o
varios bytes, es necesario ejecutar dbcc fix_text . Ejecute d bcc fix_text slo en las
tablas que contienen datos text .
El cambio a un juego de caracteres de varios bytes complica la administracin interna
de datos text . Dado que un valor text puede ser suficientemente grande como para
ocupar varias pginas, SQL Server debe poder manejar caracteres que quiz se
extiendan a travs de los lmites de pgina. Para ello, el servidor requiere informacin
adicional en cada una de las pginas de text .
Para ver los nombres de todas las tablas que contienen datos text , utilice esta consulta:
select sysobjects.name
from sysobjects, syscolumns
where syscolumns.type = 35
and sysobjects.id = syscolumns.id

El administrador del sistema o el propietario de la tabla deben ejecutar dbcc fix_text


para calcular los nuevos valores necesarios.
La sintaxis de dbcc fix_text es:
dbcc fix_text (

table_name

table_id

La tabla mencionada debe estar en la base de datos actual.


dbcc fix_text abre la tabla especificada y, por cada valor text , calcula las estadsticas de
caracteres requeridas y las aade en los campos adecuados del encabezado de pgina.
Este proceso puede durar bastante tiempo, dependiendo del nmero y tamao de los
valores text de una tabla. dbcc fix_text puede generar un gran nmero de registros de
diario, e incluso llenar el diario de transacciones. dbcc fix_text realiza actualizaciones
en una serie de pequeas transacciones, de modo que si se llena un diario, slo se pierde
una pequea cantidad de trabajo.
Si se agota el espacio del diario, borre el diario (consulte el Captulo 19, "Copia de
seguridad y restauracin de las bases de datos de usuario", para obtener ms
informacin) y reinicie dbcc fix_text con la misma tabla que se estaba actualizando
cuando se detuvo el dbcc fix_text original. Dado que cada valor de texto de varios bytes
contiene informacin que indica si se ha actualizado o no, dbcc fix_text slo actualiza
los valores text que no se procesaron en pasadas anteriores.
Si la base de datos almacena su diario en un segmento distinto, puede utilizar umbrales
para manejar el borrado del diario. Consulte el Captulo 21, "Administracin de espacio
libre con umbrales".
Si dbcc fix_text no termina la actualizacin de una tabla, la utilidad genera un mensaje
de error, como:
No todas las pginas TEXT de la tabla
tablename
fueron
actualizadas con xito, sin embargo, DBCC FIX_TEXT es reiniciable. Una
vez que se hayan localizado todos los errores ejecute el comando de
nuevo.

Si la utilidad no puede adquirir un bloqueo necesario sobre una pgina de texto,


comunica el problema y contina con el trabajo:
No se puede adquirir un bloqueo exclusivo en la pgina de texto 408.
Este valor de texto no se volvi a calcular. Para recalcular estas
pginas TEXT, libere el bloqueo y vuelva a ejecutar el comando DBCC
FIX_TEXT.

Recuperacin de valores text despus de cambiar los juegos de caracteres


Si intenta recuperar valores text despus de cambiar a un juego de caracteres de varios
bytes y no ha ejecutado dbcc fix_text , el comando falla y se genera un mensaje de error
solicitando que ejecute dbcc fix_text en la tabla:
SQL Server is now running a multi-byte character set, and this TEXT
column's character counts have not been recalculated using this
character set. Use dbcc fix_text before running this query again.

Instalacin de cadenas de fecha para idiomas no soportados


Puede utilizar sp_addlanguage para instalar los nombres de los das de la semana y los
meses del ao para idiomas que no tienen mdulos de idioma. Con sp_addlanguage ,
se define:

Un nombre de idioma y, opcionalmente, un alias del nombre.


Una lista de los nombres de los meses y sus abreviaturas.
Una lista de los nombres completos de los das de la semana.
El formato para introducir fechas (por ejemplo, mes/da/ao).
El nmero del primer da de la semana.

Este ejemplo aade la informacin para italiano:


sp_addlanguage italian, italiano,
"gennaio,febbraio,marzo,aprile,maggio,giugno,luglio,agosto,settembre,o
ttobre,novembre,dicembre",
"genn,feb,mar,apr,mag,giu,lug,ago,sett,ott,nov,dic",
"lunedi,martedi,mercoledi,giovedi,venerdi,sabato,domenica",
dmy, 1

sp_addlanguage impone reglas estrictas de entrada de datos. Los nombres y


abreviaturas de meses y das de la semana deben ser listas separadas por comas, sin
espacios ni avances de lnea (retornos de carro). Adems, deben contener el nmero
correcto de elementos (12 para los meses y 7 para los das de la semana).
Los valores vlidos para los formatos de fecha son: md y , dm y , ym d , yd m , m y d o d
y m . El valor dm y indica que las fechas se hallan en el orden da/mes/ao. Este formato
afecta slo a la entrada de datos; para cambiar el formato de salida, debe utilizar la
funcin convert .
Interpretacin de la fecha en el servidor y en el cliente
En general, los valores de fecha se resuelven en el cliente. Cuando un usuario selecciona
valores de fecha, SQL Server los enva al cliente en formato interno. El cliente utiliza el
archivo common.loc y otros archivos de localizacin del subdirectorio de idioma
predeterminado, del directorio locales del cliente, para convertir el formato interno a
datos alfanumricos. Por ejemplo, si el idioma predeterminado del usuario es espaol,
busca el archivo common.loc en el directorio /locales/spanish/char_set y utiliza la
informacin de dicho archivo para mostrar, por ejemplo, 12 febrero 1995 .
Suponga que el idioma predeterminado del usuario est definido como italian , para el
que an no existe un mdulo de idioma, y que los valores de fecha en italiano se han
aadido con sp_addlanguage . Cuando el cliente se conecte al servidor y busque el
archivo common.loc para italiano, no lo encontrar. El cliente imprime un mensaje de
error y se conecta al servidor. Si el usuario selecciona valores de fecha, stos se
muestran con las cadenas de fecha del idioma predeterminado del servidor. Para mostrar
los valores de fecha aadidos con sp_addlanguage , utilice la funcin convert para
forzar la conversin de las fechas a datos alfanumricos en el servidor.
La consulta siguiente genera un conjunto de resultados con las fechas en el idioma
predeterminado de SQL Server:
select pubdate from titles

mientras que la consulta siguiente devuelve la fecha con los nombres de mes en italiano:

select convert(char(19),pubdate) from titles

Chapter 13

Conversin de juegos de caracteres entre SQL Server y los


clientes
En este captulo se describe cmo efectuar conversiones entre diferentes juegos de
caracteres. Incluye los temas siguientes:

Introduccin
Rutas de conversin soportadas
Manejo de errores en la conversin de juegos de caracteres
Configuracin del proceso de conversin
Opciones de lnea de comando de juego de caracteres para visualizacin y
archivos

Introduccin
Los clientes que utilizan sistemas diferentes de codificacin de caracteres pueden
conectarse por red con SQL Server. En una configuracin para Europa Occidental, por
ejemplo, un servidor que se ejecuta en un entorno ISO 8859-1 (iso_1) puede estar
conectado a un cliente que funciona en un entorno Roman 8 (roman8). En Japn, un
servidor que se ejecuta en EUC JIS (eucjis) puede estar conectado a un cliente que
funciona en Shift-JIS (sjis). Este captulo describe las funciones de conversin de juegos
de caracteres de SQL Server y las utilidades isql , bcp y defncopy .

Rutas de conversin soportadas


SQL Server soporta la conversin de juegos de caracteres entre los juegos de
caracteres de uno de los grupos de idiomas mostrados en la Tabla 13-1. Los juegos de
caracteres que se incluyen entre parntesis son los nombres que utiliza SQL Server.
Un juego de caracteres adicional, ASCII 7 (ascii_7), es compatible con todos los juegos.
Si el juego de caracteres de SQL Server o del cliente es ascii_7, cualquier carcter
ASCII de 7 bits puede pasar de uno a otro sin sufrir alteraciones. Otros caracteres
producen errores de conversin.
Tabla 13-1: Conversiones de juegos de caracteres soportadas
Grupo de idiomas
Escritura cirlica

Juegos de caracteres
Pgina de cdigos 1251 (cp1251), Pgina de cdigos 855
(cp855), Pgina de cdigos 866 (cp866), ISO 8859-5
(iso88595), Koi 8 (koi8), Maccyr (mac_cyr)

Europa Oriental

Pgina de cdigos 1250 (cp1250), Pgina de cdigos 852


(cp852), ISO 8859-2 (iso88592), Macee (mac_ee)

Griego

Pgina de cdigos 1253 (cp1253), Pgina de cdigos 869


(cp869), Greek 8 (greek8), ISO8859-7 (iso88597), Macgrk2
(macgrk2)

Japons

DEC-Kanji (deckanji), EUC-JIS (eucjis), Shift-JIS (sjis)

Turco

Pgina de cdigos 1254 (cp1254), Pgina de cdigos 857


(cp857), ISO 8859-9 (iso88599), Macturk (macturk), Turkish
8 (turkish8)

Europa Occidental

ASCII 8 (ascii_8), Pgina de cdigos 437 (cp437), Pgina de


cdigos 850 (cp850), ISO 8859-1 (iso_1), Mac (mac),
Roman 8 (roman8)

Arabe, chino
(simplificado y
tradicional) o hebreo

Ninguna conversin de juegos de cdigos est soportada


actualmente en estos grupos de idiomas.

Caracteres que no pueden convertirse


Al convertirse un juego de caracteres a otro, es posible que algunos caracteres no se
conviertan. Esto se debe a una de dos posibilidades:

de The character exists (is encoded) in the source character set, but it does not
exist in the target character set. For example, the OE ligature, is part of the
Macintosh character set (code point 0xCE). This character does not exist in the
ISO 8859-1 character set. If the OE ligature exists in data that is being converted
from the Macintosh to the ISO 8859-1 character set, it causes a conversion error.
El carcter existe en los dos juegos de caracteres, pero en el de destino, el
carcter se representa mediante un nmero distinto de bytes que en el juego de
caracteres de origen. La Figura 13-1 compara las codificaciones en EUC JIS y
en Shift-JIS para la misma secuencia de caracteres en un entorno japons. Los
caracteres Kanji, Hiragana, Hankaku Romaji, Zenkaku Romaji y Zenkaku
Katakana estn representados por el mismo nmero de bytes en ambos juegos de
caracteres y pueden convertirse entre EUC JIS y Shift-JIS. Sin embargo, los
caracteres Hankaku Katakana (el ltimo grupo de caracteres del ejemplo) se
representan con dos bytes en EUC JIS y con un solo byte en
Shift-JIS. Estos caracteres no pueden convertirse.
Figure 13-27: Comparacin de codificaciones EUC JIS y Shift-JIS para
caracteres japoneses

Adems de Hankaku Katakana, los caracteres definidos por el usuario (Gaiji) no pueden
convertirse entre los diferentes juegos de caracteres japoneses.

Manejo de errores en la conversin de juegos de caracteres


Los filtros de conversin de juegos de caracteres de SQL Server detectan errores de
conversin cuando existe un carcter en el juego del cliente que no est en el del
servidor, o viceversa. SQL Server debe garantizar que los datos convertidos
satisfactoriamente al entrar en el servidor pueden volver a convertirse con xito al juego
de caracteres del cliente cuando ste los recupere. Para hacerlo con eficacia, SQL Server
debe evitar poner datos sospechosos en la base de datos.

Cuando SQL Server encuentra un error de conversin en los datos introducidos, genera
este mensaje de error:
Msg 2402, Severity 16 (EX_USER):
Error al convertirse los caracteres del cliente al juego de
caracteres del servidor. Algunos caracteres no pudieron convertirse.

Un error de conversin impide la ejecucin de consultas.


Cuando SQL Server encuentra un error de conversin mientras enva datos al cliente,
sustituye los bytes de los caracteres sospechosos por signos de interrogacin ASCII (?).
Sin embargo, el lote de consultas contina hasta terminar. Cuando la instruccin est
completa, SQL Server enva el mensaje siguiente:
Msg 2403, Severity 16 (EX_INFO):
ADVERTENCIA! Algunos caracteres no pudieron convertirse al juego de
caracteres del cliente. Los bytes no convertidos se cambiaron por
signos de interrogacin ('?').

Consulte "Control de la conversin de caracteres en una sesin" para aprender a


desactivar la comunicacin de errores sobre los datos enviados del servidor al cliente.

Configuracin del proceso de conversin


La conversin de juegos de caracteres comienza en el login o cuando el cliente solicita
la conversin con el comando set char_convert en una sesin de trabajo. Si el cliente
est usando Open Client DB-Library versin 4.6 o posterior, y el cliente y SQL Server
utilizan juegos de caracteres diferentes, la conversin se activa durante el proceso de
login y se define con un valor predeterminado que depende del juego de caracteres
usado por el cliente. La conversin de juegos de caracteres puede controlarse en las
utilidades autnomas isql , bcp y defncopy con una opcin de la lnea de comando.
Consulte "Opciones de lnea de comando de juego de caracteres para visualizacin y
archivos" para obtener ms informacin.
Cuando un cliente solicita una conexin, SQL Server determina si puede efectuar la
conversin del juego de caracteres del cliente al suyo. En caso afirmativo, configura los
filtros adecuados de conversin de juegos de caracteres para que cualquier dato de
carcter ledo desde el cliente, o enviado a l, pase automticamente por los filtros. A
continuacin, SQL Server verifica el nombre y contrasea del usuario. Estos datos ya se
han ledo y deben convertirse. Si no pueden convertirse, se rechaza el login. Si la
conversin del nombre y contrasea es satisfactoria, SQL Server busca las cadenas
convertidas en syslogins .
Si SQL Server no puede realizar las conversiones solicitadas, enva un mensaje de error
al cliente. El mensaje inicial explica por qu la conversin no puede realizarse y va
seguido por este mensaje:
Msg #2411, Severity 10 (EX_INFO):
No se realizarn conversiones.

A continuacin, SQL Server intenta encontrar el nombre y contrasea del usuario en su


forma no convertida en syslogins . Si no los encuentra, rechaza el login. Si los

encuentra, permite el login pero no tiene lugar ninguna conversin de juegos de


caracteres.
Note: Los nombres de mquina, los de usuario y las contraseas en entornos
heterogneos deben componerse enteramente de caracteres ASCII de 7 bits. Aunque
falle la solicitud de conversin de juegos de caracteres del cliente, si SQL Server
encuentra el nombre de usuario y la contrasea sin convertir en syslogins el login se
realiza.
Si la solicitud de conversin falla o si el juego de caracteres del cliente est definido
como ascii_7, se fuerza us_english como idioma de la sesin. Si el usuario ha solicitado
otro idioma, aparece un mensaje informativo indicando que el idioma de la sesin va a
ser us_english.
Especificacin del juego de caracteres para los programas de utilidad
Una opcin de lnea de comando de las utilidades isql , bcp y defncopy especifica el
juego de caracteres del cliente.
Estas son las opciones:

-J charset_name (UNIX y PC) o /clientcharset = charset_name (OpenVMS)


define el juego de caracteres del cliente como charset_name .
-J o /clientcharset sin el nombre de un juego de caracteres define el juego de
caracteres del cliente como NULL. Ninguna conversin tiene lugar y no se enva
ningn mensaje.

La omisin del indicador de lnea de comando para el juego de caracteres del cliente
define el juego de caracteres de la plataforma como el predeterminado. Es posible que
este juego predeterminado no sea el que usa el cliente. Consulte el manual de los
programas de utilidad de SQL Server para obtener informacin sobre el juego
predeterminado en su plataforma.
Note: El indicador -J se utiliza de forma diferente en versiones de SQL Server
anteriores a 4.9 que se ejecutan en OS/2.
Control de la conversin de caracteres en una sesin
set char_convert permite que el usuario decida cmo funciona la conversin de juegos
de caracteres durante una sesin de trabajo en particular. Utilice set char_convert para:

Activar o desactivar la conversin de juegos de caracteres.


Comenzar la conversin a un juego de caracteres especfico.
Activar o desactivar la comunicacin de errores.

La sintaxis de set char_convert es:


set char_convert {off |
{on [with {error | no_error}]} |
charset
[with {error | no_error}]}

Dependiendo de los argumentos, el comando:

Activa o desactiva la conversin de juegos de caracteres entre SQL Server y un


cliente, cuando se utiliza con off u on :
set char_convert off

set char_convert off desactiva la conversin para que los caracteres se enven y
reciban sin cambios. set char_convert on reactiva la conversin despus de
haberla desactivado. Si la conversin no se desactiv durante el proceso de login
o mediante el comando set char_convert charset , entonces set char_convert
on genera un mensaje de error.

Desactiva la impresin de los mensajes de error si se incluye la opcin with


no_error . Cuando un usuario elige with no_error , SQL Server no notifica a la
aplicacin si los caracteres procedentes de SQL Server no pueden convertirse al
juego de caracteres del cliente. Inicialmente, cuando un cliente se conecta con
SQL Server, la comunicacin de errores est activada. Si no desea recibir
mensajes de error, debe desactivar la comunicacin de errores en cada sesin.
Para volver a activarla en una sesin, utilice la opcin on with error
.Independientemente de que la comunicacin de errores est activada o no, los
bytes que no puedan convertirse se sustituyen por signos de interrogacin ASCII
(?).
Inicia la conversin entre el juego de caracteres del servidor y el del cliente,
cuando se utiliza con un valor charset . charset puede ser la id o nombre del
juego de caracteres en syscharsets :
set char_convert "cp850"

Si solicita la conversin de juegos de caracteres con set char_convert charset ,


y SQL Server no puede realizarla, la sesin revierte al estado de conversin
anterior a la solicitud. Por ejemplo, si la conversin del juego de caracteres est
desactivada antes de ejecutarse el comando set char_convert charset ,
continuar desactivada si la solicitud falla.

Si el usuario emplea un idioma que no sea us_english antes de introducir el comando:


set char_convert "ascii_7"

se fuerza us_english como idioma de la sesin y aparece un mensaje informativo. Si la


sesin ya est en us_english, no aparece ningn mensaje.

Opciones de lnea de comando de juego de caracteres para visualizacin y


archivos
Aunque este captulo se centra en la conversin de juegos de caracteres entre el cliente y
SQL Server, la conversin tambin puede ser necesaria en otros dos lugares:

Entre el cliente y un terminal, o


Entre el cliente y un sistema de archivos.

La Figura 13-2: Lugares donde la conversin de juegos de caracteres puede ser


necesaria ilustra estas rutas diferentes y las opciones de lnea de comando disponibles
en las utilidades autnomas isql , bcp y defncopy .
Como antes se indic, la opcin de lnea de comando -J o /clientcharset especifica el
juego de caracteres que el cliente utiliza al enviar y recibir datos alfanumricos a y
desde SQL Server.
Configuracin del juego de caracteres visualizado
Utilice la opcin de lnea de comando -a ( /dispcharset en OpenVMS) si est
ejecutando el cliente desde un terminal con un juego de caracteres distinto al del cliente.
En este caso, las opciones -a y -J se usan conjuntamente para identificar el archivo de
traduccin del juego de caracteres ( .xlt ) necesario para la conversin.
Utilice la opcin de lnea de comando -a ( /dispcharset en OpenVMS) sin la opcin -J (
/clientcharset en OpenVMS) slo si el juego de caracteres del cliente es el mismo que
el juego de caracteres predeterminado.
Configuracin del juego de caracteres para archivos
Utilice la opcin de lnea de comando -q ( /filecharset en OpenVMS) si est ejecutando
bcp para copiar datos alfanumricos a o desde un sistema de archivos que emplea un
juego de caracteres distinto al del cliente. En este caso, use las opciones - q o
/filecharset y - J o /clientcharset juntas, para identificar el archivo de traduccin del
juego de caracteres ( .xlt ) necesario para la conversin.
Figure 13-28: Lugares donde la conversin de juegos de caracteres puede ser
necesaria

Chapter 14

Creacin de bases de datos de usuarios


Comandos que administran bases de datos de usuarios
La Tabla 14-1 resume los comandos que sirven para crear, modificar y omitir bases de
datos de usuarios y sus diarios de transacciones.
Tabla 14-1: Comandos que administran bases de datos de usuarios

Comando
create database...on
dev_name
o
alter database...on
dev_name
create database...
o
alter database...

Tarea
Pone los dispositivos de base de datos a disposicin de una base
de datos de SQL Server en particular. La clusula log on de
create database sita los diarios de la base de datos en un
dispositivo en particular.

Cuando se utilizan sin la clusula on dev_name , estos


comandos asignan espacio del banco predeterminado de
dispositivos de base de datos.

dbcc
checktable(syslogs)

Informa el tamao del diario.

sp_logdevice

Especifica un dispositivo que contendr el diario cuando se


llene el dispositivo actual de diario.

sp_helpdb

Muestra informacin sobre el tamao y dispositivos de una base


de datos.

sp_spaceused

Muestra un resumen de la cantidad de espacio de


almacenamiento usado por una base de datos.

Permisos para administrar bases de datos de usuarios


De forma predeterminada, slo el administrador del sistema tiene permiso para ejecutar
create database , aunque puede conceder ese permiso a otros usuarios. Sin embargo, en
muchas instalaciones, los administradores del sistema mantienen un monopolio sobre el
permiso para ejecutar create database para centralizar el control de la ubicacin de
bases de datos y asignacin de dispositivos. En estas situaciones, los administradores
del sistema crean las nuevas bases de datos de otros usuarios y luego transfieren la
propiedad al usuario adecuado.
Para crear una base de datos y transferir su propiedad a otro usuario, el administrador
del sistema:
1. Ejecuta el comando create database .
2. Pasa a la nueva base de datos con el comando use .
3. Ejecuta el procedimiento del sistema sp_changedbowner , como se describe en
"Cambio de propiedad de bases de datos".
El administrador del sistema tambin puede conceder permiso para crear bases de datos
a otros usuarios. Quien reciba permiso para ejecutar create database tambin debe ser
un usuario vlido de la base de datos master , ya que todas las bases de datos se crean
mientras se utiliza master .
El hecho de que los administradores del sistema parezcan operar fuera del sistema de
proteccin es una medida de seguridad. Por ejemplo, si el propietario de una base de

datos olvida su contrasea o elimina accidentalmente todas las entradas de sysusers , un


administrador del sistema puede reparar el dao usando las copias de seguridad o los
volcados que se realizan regularmente.
El propietario de la base de datos tiene, de forma predeterminada, permiso para utilizar
los comandos alter database o drop database ; dicho permiso se transfiere
automticamente con la propiedad de la base de datos. El permiso para ejecutar alter
database y drop database no puede cambiarse con grant ni con revoke .

Uso del comando create database


Utilice el comando create database para crear bases de datos de usuarios. Es necesario
tener permiso para ejecutar create database y ser un usuario vlido de master (aadido
con sp_adduser ). Escriba siempre el comando use master antes de crear una nueva
base de datos.
Note: Cada vez que ejecute el comando create database , vuelque la base de datos
master , lo cual facilita y asegura la recuperacin en caso de que master se dae
despus. Consulte el Captulo 20, "Copias de seguridad y restauracin de las bases de
datos del sistema", para obtener ms informacin.
Sintaxis de create database
La sintaxis de create database es:
create database
database_name
[on {default |
database_device } [=
size
[,
database_device
[=
size ]...]
[log on
database_device
[ =
size
]
[,
database_device
[=
size ]]...]
[with override]
[for load]

El nombre de una base de datos debe seguir las reglas de los identificadores. Slo es
posible crear una base de datos por vez.
En su forma ms simple, create database crea una base de datos en los dispositivos
predeterminados de base de datos enumerados en master..sysdevices :
create database newpubs

Es posible controlar diferentes caractersticas de la nueva base de datos utilizando las


clusulas de create database :

La clusula on especifica los nombres de uno o ms dispositivos de base de


datos y la asignacin de espacio, en megabytes, para cada dispositivo. Consulte
"Asignacin de espacio y dispositivos para bases de datos" para obtener ms
informacin.
La clusula log on sita el diario de transacciones (la tabla syslogs ) en un
dispositivo aparte con el tamao especificado o el predeterminado. Consulte

"Ubicacin del diario de transacciones en un dispositivo aparte" para obtener


ms informacin.
La opcin for load hace que SQL Server salte el paso de borrado de pginas
durante la creacin de la base de datos. Esta clusula puede usarse si se prev
cargar un volcado en la nueva base de datos como paso siguiente. Consulte
"Opcin for load para recuperacin de bases de datos" para obtener ms
informacin.
La opcin with override permite que los SQL Server en mquinas con espacio
limitado mantengan sus diarios en fragmentos de dispositivos separados de sus
datos. Emplee esta opcin slo cuando vaya a poner el diario y los datos en el
mismo dispositivo lgico. Consulte "Opcin with override de create database"
para obtener ms informacin.

Cmo funciona create database


Cuando un usuario con el permiso requerido ejecuta la instruccin create database ,
SQL Server:

Verifica que el nombre de base de datos especificado en la instruccin sea


exclusivo.
Comprueba que los nombres de dispositivos de base de datos especificados en la
instruccin estn disponibles.
Encuentra un nmero de identificacin no usado para la nueva base de datos.
Asigna espacio a la base de datos en los dispositivos de base de datos
especificados y actualiza master..sysusages para reflejar estas asignaciones.
Inserta una fila en sysdatabases.
Crea una copia de la base de datos model en el espacio de la nueva base de
datos, creando as las tablas del sistema de la nueva base de datos.
Borra las pginas restantes del dispositivo de base de datos. Si la base de datos
se crea para cargar un volcado, la opcin for load prescinde del paso de borrado
de pginas (este paso se realiza una vez terminada la carga).

La nueva base de datos contiene inicialmente un conjunto de tablas del sistema con
entradas que describen a las propias tablas del sistema. Adems hereda todos los
cambios realizados en la base de datos model . Estos cambios pueden incluir:

La adicin de nombres de usuario.


La adicin de objetos.
La definicin de las opciones de base de datos. Originalmente, las opciones
estn desactivadas ("off") en model . Si desea que todas las nuevas bases de
datos de usuarios hereden algunas opciones en particular, cmbielas en model
con el procedimiento del sistema sp_dboption . Consulte el Captulo 15,
"Definicin de opciones de base de datos", para obtener ms informacin sobre
la modificacin de opciones de bases de datos. Consulte el Captulo 2, "Bases de
datos del sistema", para obtener ms informacin sobre model .

Adicin de usuarios a las bases de datos


Despus de crear una nueva base de datos, el administrador del sistema o el propietario
de la misma pueden aadir manualmente usuarios a la base de datos con sp_adduser .

Esta tarea puede realizarse con la ayuda del oficial de seguridad del sistema si se
requieren nuevos nombres de login de SQL Server. Consulte la Gua de Administracin
de Seguridad para obtener detalles sobre la administracin de logins de SQL Server y
usuarios de las bases de datos.

Asignacin de espacio y dispositivos para bases de datos


SQL Server asigna espacio de almacenamiento a las bases de datos cuando los usuarios
introducen create database o alter database . El primero de los comandos puede
especificar uno o ms dispositivos de base de datos, junto con la cantidad de espacio en
cada uno de ellos que ser asignado a la nueva base de datos.
Note: Utilice tambin la clusula log on para situar el diario de transacciones de una
base de datos de produccin en un dispositivo aparte. Consulte "Ubicacin del diario de
transacciones en un dispositivo aparte" para obtener ms informacin.
Si se utiliza la palabra clave default o se omite completamente la clusula on , SQL
Server pone la base de datos en uno o ms de los dispositivos predeterminados de base
de datos especificados en master..sysdevices . Consulte "Designacin de dispositivos
predeterminados" para obtener ms informacin sobre el conjunto predeterminado de
dispositivos.
Para especificar un tamao (en este ejemplo, 4MB) para una base de datos que se va a
almacenar en una ubicacin predeterminada, utilice on default = size de esta forma:
create database newpubs
on default = 4

Para situar la base de datos en dispositivos especficos, d el nombre del dispositivo o


dispositivos en que desea almacenarla. Como la sintaxis indica, puede solicitar que se
almacene en ms de un dispositivo de base de datos, con una cantidad de espacio
diferente en cada uno. Todos los dispositivos mencionados en create database deben
estar enumerados en sysdevices . En otras palabras, deben haberse inicializado con disk
init . Consulte el Captulo 6, "Inicializacin de dispositivos de base de datos", para
obtener instrucciones sobre el uso de disk init .
La instruccin siguiente crea la base de datos newdb y asigna 3MB en mydata y 2MB
en newdata . Como en el ejemplo anterior, la base de datos y el diario de transacciones
no se separan:
create database newdb
on mydata = 3, newdata = 2

Warning! A menos que cree una base de datos pequea o que no sea crucial, site
siempre el diario en un dispositivo de base de datos aparte. Use las instrucciones de
"Ubicacin del diario de transacciones en un dispositivo aparte" para crear bases de
datos de produccin.
Si la cantidad de espacio solicitada a un dispositivo especfico de base de datos no est
disponible, SQL Server crea la base de datos con tanto espacio como sea posible en
cada dispositivo y muestra un mensaje informando el espacio asignado en cada uno.
(Esto no se considera un error.) Si hay menos espacio del mnimo necesario para una

base de datos en el dispositivo especificado (o en el predeterminado, si no se especifica


un nombre), el comando create database falla.
Tamao y dispositivos predeterminados de base de datos
Si no se incluye el parmetro de tamao en la clusula on , SQL Server crea la base de
datos con una cantidad predeterminada de espacio, que es el mayor de los tamaos
especificados por el parmetro de configuracin default database size y la base de
datos model .
El tamao de model y el valor de default database size estn definidos inicialmente
como 2MB. Para cambiar el tamao de model , asgnele ms espacio con alter
database . Para cambiar el parmetro de configuracin default database size , utilice
sp_configure . Cambiar default database size permite definir el tamao
predeterminado de las bases de datos nuevas con cualquier tamao entre 2MB y
10.000MB. Consulte "default database size" para ver instrucciones completas.
Si omite la clusula on por completo, el tamao de la base de datos es el
predeterminado, segn se ha descrito anteriormente. El espacio se asigna, por orden
alfabtico segn el nombre de los dispositivos de base de datos, a partir de los
dispositivos predeterminados indicados en master..sysdevices .
Utilice la consulta siguiente para ver los nombres lgicos de los dispositivos
predeterminados de base de datos:
select name
from sysdevices
where status & 1 = 1
order by name

sp_helpdevice tambin muestra el disco predeterminado ("default disk") como parte de


la descripcin de los dispositivos de base de datos.
Estimacin del espacio requerido
Las decisiones de asignacin adoptadas al ejecutar create database o alter database
son importantes, porque es difcil recuperar espacio de almacenamiento una vez
asignado. Siempre es posible aadir espacio; sin embargo, no se puede desasignar
espacio asignado a una base de datos, a menos que sta se omita antes.
Es posible estimar el tamao de las tablas e ndices de una base de datos usando el
procedimiento del sistema sp_estspace o calculando el valor. Consulte el Chapter 5,
"Estimating the Size of Tables and Indexes," de la Gua de Mejora de Rendimiento y
Afinacin para obtener instrucciones sobre la estimacin del tamao de los objetos.

Ubicacin del diario de transacciones en un dispositivo aparte


La clusula log on de create database sita el diario de transacciones (la tabla syslogs
) en un dispositivo de base de datos aparte. La ubicacin de los diarios en un dispositivo
aparte:

Permite utilizar el comando dump transaction , en lugar de dump database ,


ahorrando as tiempo y cintas.
Permite establecer un tamao fijo para el diario con el fin de impedir que
compita por espacio con otras actividades de base de datos.
Crea supervisin predeterminada del umbral de espacio libre en el segmento del
diario y permite crear supervisin adicional de espacio libre en el diario, y en
porciones de datos de la base de datos. Consulte el Captulo 21, "Administracin
de espacio libre con umbrales", para obtener ms informacin.
Mejora el rendimiento.
Garantiza la recuperacin total en caso de fallos de los discos duros. Un
argumento especial de dump transaction permite volcar el diario de
transacciones, aun si el dispositivo est en un disco daado.

A menos que cree bases de datos pequeas y no muy importantes, siempre site el
diario en un dispositivo de base de datos aparte.
Note: Si el diario y la base de datos comparten el mismo dispositivo, el uso posterior
del procedimiento del sistema sp_logdevice (como se describe en la ) afecta slo a las
escrituras futuras al diario. Esto no desplaza inmediatamente las primeras pginas del
diario, escritas cuando se cre la base de datos. Este caso plantea riesgos en ciertas
situaciones de recuperacin, y no se recomienda.
Para especificar un tamao y dispositivo para el diario de transacciones, utilice la
clusula log on device = size de create database . Por ejemplo, la instruccin siguiente
crea la base de datos newdb , asigna 8MB en mydata y 4MB en newdata , y sita un
diario de transacciones de 3MB en un tercer dispositivo de base de datos, tranlog :
create database newdb
on mydata = 8, newdata = 4
log on tranlog = 3

Estimacin del tamao del diario de transacciones


Dos factores determinan el tamao del diario de transacciones:

La cantidad de actividad de actualizacin en la base de datos asociada.


La frecuencia de los volcados del diario de transacciones.

Esto es cierto tanto si el diario de transacciones se vuelca manualmente como si se


utilizan procedimientos de umbral para automatizar la tarea. Como regla bsica, asigne
al diario entre el 10 y el 25 por ciento del espacio que asigne a la base de datos.
Las inserciones, eliminaciones y actualizaciones aumentan el tamao del diario,
mientras que dump transaction lo disminuye, escribiendo las transacciones
consignadas al disco y quitndolas del diario. Dado que las instrucciones update
requieren que las imgenes "previa" y "posterior" de una fila se registren en el diario,
las aplicaciones que actualizan muchas filas en una sola operacin deberan prever que
el diario de transacciones tenga al menos el doble de tamao que el nmero de filas
actualizadas a la vez, o el doble de tamao que la tabla ms grande. O bien, pueden
realizarse las actualizaciones por lotes en grupos ms pequeos, volcando los diarios
entre los lotes.

En las bases de datos que tienen mucha actividad de insercin y actualizacin, los
diarios pueden crecer con gran rapidez. Para determinar el tamao requerido del diario,
verifquelo peridicamente, lo cual tambin le ayudar a elegir umbrales para el diario y
a planificar la periodicidad de los volcados del diario de transacciones. Para verificar el
espacio utilizado por un diario, use primero la base de datos y luego introduzca el
comando:
dbcc checktable(syslogs)

dbcc comunica el nmero de pginas de datos que el diario utiliza. Si est en otro
dispositivo, dbcc checktable tambin indica cunto espacio se utiliza y cunto hay
libre. Esta es una muestra de la salida para un diario de 2MB:
Checking syslogs
The total number of data pages in this table is 199.
*** NOTICE: Space used on the log segment is 0.39 Mbytes, 19.43%.
*** NOTICE: Space free on the log segment is 1.61 Mbytes, 80.57%.
Table has 1661 data rows.

Tambin es posible utilizar la siguiente instruccin de Transact-SQL para verificar el


crecimiento del diario:
select count(*) from syslogs

Repita cualquiera de los dos comandos peridicamente para comprobar con qu rapidez
crece el diario.
Tamao y dispositivo predeterminados del diario
Si se omite el parmetro size (tamao) de la clusula log on , SQL Server asigna 2MB
de almacenamiento en el dispositivo de diario especificado. Si se omite la clusula log
on por completo, SQL Server sita el diario de transacciones de 2MB en el mismo
dispositivo de base de datos en el que se hallan las tablas de datos.
Desplazamiento del diario de transacciones a otro dispositivo
Si no se ha utilizado la clusula log on con create database , deben seguirse las
instrucciones de esta seccin para desplazar el diario de transacciones a otro dispositivo
de base de datos.
El procedimiento del sistema sp_logdevice desplaza la asignacin futura del diario de
transacciones de una base de datos. Sin embargo, el diario de transacciones permanece
en el dispositivo original hasta que se llene la pgina asignada y se vuelque el diario de
transacciones.
La sintaxis de sp_logdevice es:
sp_logdevice

database_name

devname

El dispositivo de base de datos mencionado debe estar inicializado con disk init y debe
asignarse a la base de datos con create o alter database .

Para desplazar todo el diario de transacciones a otro dispositivo, siga estos pasos:
1. Ejecute sp_logdevice , indicando el nombre del nuevo dispositivo de base de
datos.
2. Ejecute suficientes transacciones como para llenar la pgina que se est
utilizando actualmente. Dado que una pgina contiene 2048 bytes, quiz necesite
actualizar 2048 bytes por lo menos. Para determinar cundo se usa una nueva
pgina, ejecute dbcc checktable(syslogs) antes y despus de comenzar a
actualizar.
3. Espere a que se completen todas las transacciones actualmente activas para
asegurarse de que no haya transacciones activas en el dispositivo de base de
datos. Es conveniente realizar toda esta actividad despus de poner la base de
datos en modo de usuario nico con sp_dboption .
4. Ejecute dump transaction . Consulte el Captulo 18, "Desarrollo de un plan de
copias de seguridad y recuperacin", para obtener ms informacin. dump
transaction quita todas las pginas de diario que escribe en el disco. Siempre
que no haya transacciones activas en la parte del diario que est en el dispositivo
antiguo, se quitarn todas esas pginas.
5. Ejecute el procedimiento del sistema sp_helplog para asegurarse de que todo el
diario est en el nuevo dispositivo de diario.
Note: Cuando se desplaza un diario de transacciones, el espacio que el diario de
transacciones ya no utiliza queda disponible para los datos. No es posible reducir
la cantidad de espacio asignado a un dispositivo desplazando el diario de
transacciones.
Los diarios de transacciones se tratan en detalle en el Captulo 18, "Desarrollo de un
plan de copias de seguridad y recuperacin".

Opcin for load para recuperacin de bases de datos


SQL Server suele borrar todas las pginas no usadas en el dispositivo cuando se crea
una nueva base de datos. El borrado de las pginas puede durar varios segundos o
minutos, dependiendo del tamao de la base de datos y de la velocidad del sistema.
Utilice la opcin for load si va a usar la base de datos para cargar los datos de un
volcado, ya sea para la recuperacin de un fallo del medio, o para desplazar una base de
datos de una mquina a otra. El uso de for load ejecuta una versin simplificada de
create database que salta el paso de borrar las pginas. Esto crea una base de datos de
destino que slo puede emplearse para cargar un volcado.
Si crea una base de datos con la opcin for load , antes de cargar un volcado, slo
puede ejecutar los comandos siguientes:

alter database...for load


drop database
load database

Cuando se carga un volcado, las asignaciones del nuevo dispositivo de base de datos
deben coincidir con las asignaciones de uso de la base de datos volcada. En el Captulo

19, "Copia de seguridad y restauracin de las bases de datos de usuario", encontrar una
explicacin de la duplicacin de asignacin de espacio.
Despus de cargar el volcado en la nueva base de datos, ya no hay limitaciones sobre
los comandos que se pueden utilizar.

Opcin with override de create database


Esta opcin permite que los SQL Server instalados en mquinas con espacio limitado
mantengan los diarios en fragmentos de dispositivos separados de sus datos. Esta opcin
slo debe utilizarse cuando el diario y los datos se ponen en el mismo dispositivo
lgico. Esto no es aconsejable, pero puede ser la nica opcin disponible en mquinas
con almacenamiento limitado, en especial si se necesita volver a poner en lnea a las
bases de datos despus de un fallo del disco duro.
Aun as puede volcarse el diario de transacciones, pero si ocurre un fallo del soporte, no
se podr tener acceso al diario actual, ya que est en el mismo dispositivo que los datos.
Slo podr recuperarse el ltimo volcado del diario de transacciones, por lo que se
perdern todas las transacciones entre ese punto y el momento del fallo.
En el ejemplo siguiente, el diario y los datos estn en fragmentos distintos del mismo
dispositivo lgico:
create database littledb
on diskdev1 = 4
log on diskdev1 = 1
with override

Use esta opcin slo si no est interesado en la posibilidad de recuperacin total.

Cambio de propiedad de bases de datos


Un administrador del sistema puede crear las bases de datos de usuarios y transferir su
propiedad a otro usuario despus de terminar parte del trabajo inicial. El procedimiento
del sistema sp_changedbowner cambia la propiedad de una base de datos y debe ser
ejecutado por el administrador del sistema en la base de datos cuya propiedad desea
cambiar. La sintaxis es:
sp_changedbowner

loginame

[, true ]

El ejemplo siguiente convierte al usuario "david" en el propietario de la base de datos


actual y omite los alias de los usuarios que podran actuar como el antiguo "dbo":
sp_changedbowner david

El nuevo propietario ya debe tener un nombre de login en SQL Server, pero no puede
ser un usuario de la base de datos ni tener un alias en ella. Quiz sea necesario utilizar
sp_dropuser o sp_dropalias antes de cambiar la propiedad de una base de datos.
Consulte la Gua de Administracin de Seguridad para obtener ms informacin sobre
el cambio de propiedad.

Para transferir los alias y sus permisos al nuevo propietario de la base de datos, aada el
segundo parmetro con el valor "true" o "TRUE".
Note: La propiedad de la base de datos master no puede cambiarse. Siempre es
propiedad del nombre de login "sa".

Resumen de alter database


Cuando una base de datos o diario de transacciones crecen hasta llenar todo el espacio
asignado con create database , es posible utilizar el comando alter database para
agregar almacenamiento. El espacio puede aadirse para los objetos de la base de datos,
el diario de transacciones o ambos. alter database tambin permite prepararse para
cargar una base de datos de una copia de seguridad.
El permiso para usar el comando alter database corresponde de forma predeterminada
al propietario de la base de datos, y se transfiere automticamente con la propiedad.
Para obtener ms informacin, consulte "Cambio de propiedad de bases de datos". El
permiso para utilizar alter database no puede cambiarse con grant ni r evoke .
Sintaxis de alter database
Para ampliar una base de datos y especificar dnde se aadir el espacio de
almacenamiento, use la sintaxis completa de alter database :
alter database
database_name
[on {default |
database_device } [=
size ]
[,
database_device
[=
size ]]...]
[log on {default |
database_device } [=
size
[,
database_device
[=
size ]]...]
[with override]
[for load]

En su forma ms simple, alter database aade 1MB de los dispositivos de base de


datos predeterminados. Si la base de datos separa el diario y los datos, el espacio
aadido se utiliza solamente para los datos. sp_helpdevice permite averiguar los
nombres de los dispositivos predeterminados.
Para aadir 1MB de un dispositivo predeterminado a la base de datos newpubs , escriba:
alter database newpubs

Las clusulas on y log on del comando alter database funcionan como las clusulas
equivalentes del comando create database . Es posible especificar espacio en un
dispositivo de base de datos predeterminado o en algn otro dispositivo, y nombrar ms
de un dispositivo. Si se utiliza alter database para ampliar la base de datos master ,
slo puede ampliarse en el dispositivo master. El incremento mnimo que se puede
especificar es 1MB (512 pginas de 2K).
Para aadir 3MB al espacio asignado a la base de datos newpubs en el dispositivo
llamado pubsdata1 , escriba:

alter database newpubs


on pubsdata1 = 3

Si SQL Server no puede asignar el tamao solicitado, asigna tanto espacio como puede
en cada dispositivo, con una asignacin mnima de 0,5MB (256 pginas de 2K) por
dispositivo. Cuando alter database termina, imprime mensajes que indican cunto
espacio asign; por ejemplo:
Extendiendo la base de datos 1536 pginas en el disco pubsdata1

Verifique todos los mensajes para asegurarse de que se aadi el espacio solicitado.
El comando siguiente aade 2MB al espacio asignado a newpubs en pubsdata1 , 3MB
en un dispositivo nuevo, pubsdata2 , y 1MB para el diario en tranlog :
alter database newpubs
on pubsdata1 = 2, pubsdata2 = 3
log on tranlog

Note: Cada vez que ejecute el comando alter database , vuelque la base de datos
master .
Clusula with override
Utilice la clusula with override para crear un fragmento de dispositivo con espacio de
diario en un dispositivo que ya contiene datos, o un fragmento de datos en un
dispositivo ya usado para el diario. Use esta opcin slo cuando no tenga otras opciones
de almacenamiento y cuando la recuperacin de las ms recientes transacciones no sea
crucial.
Clusula for load
Utilice la clusula for load slo despus de haber ejecutado create database for load
para volver a crear la asignacin de espacio de la base de datos que se est cargando
desde un volcado. El Captulo 19, "Copia de seguridad y restauracin de las bases de
datos de usuario", explica la duplicacin de asignacin de espacio cuando se carga un
volcado en una nueva base de datos

Sumario de drop database


Utilice el comando drop database para quitar una base de datos de SQL Server,
eliminando as la base de datos y todos los objetos que contenga. Este comando:

Libera el espacio de almacenamiento asignado a la base de datos.


Elimina las referencias de las tablas del sistema de la base de datos master a
dicha base de datos.

Slo el propietario de una base de datos puede omitirla y, para hacerlo, debe estar en la
base de datos master . No es posible omitir una base de datos que est abierta para
lectura o escritura por un usuario.
Sintaxis de drop database

La sintaxis de este comando es:


drop database

database_name

[,

database_name

]...

Es posible omitir varias bases de datos en una sola instruccin. Por ejemplo:
drop database newpubs, newdb

Antes de poder omitir el dispositivo de base de datos, es necesario omitir todas las bases
de datos del dispositivo. El comando para omitir un dispositivo es sp_dropdevice .
Despus de omitir una base de datos, vuelque la base de datos master para asegurar la
recuperacin en caso de que master resulte daada.

Tablas del sistema que administran la asignacin de espacio


Para el usuario, crear una base de datos en un dispositivo y asignarle cierta cantidad de
espacio es cuestin de ejecutar un comando. Para SQL Server, es una tarea ms
compleja.
SQL Server primero crea una entrada para la nueva base de datos en sysdatabases .
Despus verifica master..sysdevices para asegurarse de que los dispositivos
especificados en el comando create database existen en realidad y son dispositivos de
base de datos. Si no se especificaron dispositivos de base de datos, o se utiliz la opcin
default , SQL Server verifica m aster..sysdevices y master..sysusages para ver si hay
espacio libre en los dispositivos que pueden usarse para el almacenamiento
predeterminado. Esta verificacin se realiza por orden alfabtico de nombres de
dispositivos.
No es necesario que el espacio de almacenamiento de donde SQL Server obtiene la
cantidad de espacio especificada sea contiguo, y puede extraerse de cualquier espacio
disponible. El espacio de almacenamiento de la base de datos puede obtenerse incluso
de ms de un dispositivo de base de datos. Por supuesto, una base de datos se trata como
un todo lgico aunque est almacenada en varios dispositivos de base de datos.
Cada parte de almacenamiento de una base de datos debe ser al menos una unidad de
asignacin (1/2MB, o sea 256 pginas contiguas de 2K). La primera pgina de cada
unidad es la pgina de asignacin, que no contiene filas de la base de datos como las
dems pginas, sino un arreglo mostrando cmo se usan las otras 255 pginas.
Tabla sysusages
La informacin de almacenamiento de las bases de datos se guarda en la tabla
master..sysusages . Cada fila de master..sysusages representa una asignacin de espacio
de una base de datos. As, cada base de datos tiene una fila en sysusages por cada vez
que create database o alter database le asigna un fragmento de espacio de disco.
Cuando SQL Server se instala por primera vez, sysusages contiene filas para estas dbids
:

1, la base de datos master


2, la base de datos temporal, tempdb
3, la base de datos model
4, la base de datos sybsystemprocs

Si se ha instalado la funcin de auditora, la base de datos sybsecurity ser la dbid 5.


Note: Si su instalacin es una versin de SQL Server anterior a la 10.0, sybsystemprocs
y sybsecurity pueden tener distintas ID de base de datos.
Conforme se crean nuevas bases de datos o se agrandan las actuales, se aaden nuevas
filas a sysusages para representar las nuevas asignaciones.
Lo que sigue es el aspecto que sysusages puede tener en un SQL Server con las cinco
bases de datos del sistema y dos bases de datos de usuario (con las dbid 6 y 7). Estas
dos bases de datos se crearon con la opcin log on . A la base de datos cuya dbid es 7,
se le asign espacio de almacenamiento adicional con dos comandos alter database :
select dbid, segmap, lstart, size, vstart
from sysusages
dbid
segmap
lstart
size
------ ----------- ----------- ----------1
7
0
1536
2
7
0
1024
3
7
0
1024
4
7
0
5120
5
7
0
10240
6
3
0
512
6
4
512
512
7
3
0
2048
7
4
2048
1024
7
3
3072
512
7
3
3584
1024

vstart
------4
2564
1540
16777216
33554432
1777216
3554432
67108864
50331648
67110912
67111424

(10 rows affected)

Columna segmap
La columna segmap es una mscara de bits enlazada con la columna segment de la tabla
syssegments en la base de datos del usuario. Dado que el logsegment de cada base de
datos de usuario es el segmento 2, y estas bases de datos tienen sus diarios en
dispositivos aparte, segmap contiene 4 (22) para los dispositivos indicados en la
instruccin log on y 3 para el segmento de datos que contiene el segmento del sistema
(20 = 1) + el segmento predeterminado (21 = 2).
Algunos de los valores posibles para los segmentos que contienen datos o diarios se
enumeran en la tabla siguiente:
Tabla 14-2: Valores de los segmentos
Valor

Segmento

Slo datos (segmento del sistema y predeterminado)

Slo diario

Datos y diario

Los valores superiores a 7 indican segmentos definidos por el usuario. La columna


segmap se explica en mayor detalle en la seccin del tutorial de segmentos del Captulo
16, "Creacin y uso de segmentos".
Columnas lstart , vstart y size

La columna lstart contiene el nmero de pgina inicial de esta unidad de


asignacin en la base de datos. Cada base de datos comienza en la direccin
lgica 0. Si se han realizado asignaciones adicionales para una base de datos,
como en el caso de dbid 7, el campo lstart lo refleja.
La columna size contiene el nmero de pginas contiguas de 2K asignadas a la
misma base de datos. La direccin lgica final de esta parte de la base de datos
puede determinarse sumando los valores de lstart y size .
La columna vstart contiene la direccin en que comienza la parte asignada a esta
base de datos. Los 4 bits superiores almacenan el nmero de dispositivo virtual (
vdevno ), y los 4 inferiores contienen el nmero de bloque virtual. (Para hallar el
nmero de dispositivo virtual, divida sysusages.vstart o sysdevices.low por
16.777.216, que es 224.) El valor de vstart identifica al dispositivo que contiene
esta parte de la base de datos, porque se encuentra entre los valores de las
columnas low y high de sysdevices para el dispositivo en cuestin.

Obtencin de informacin sobre el almacenamiento de bases de datos


Esta seccin explica cmo determinar qu dispositivos estn asignados actualmente a
bases de datos y cunto espacio utiliza la base de datos.
Nombres y opciones de los dispositivos de base de datos
Para hallar los nombres de los dispositivos en que reside una base de datos en particular,
utilice el procedimiento del sistema sp_helpdb con el nombre de la base de datos:
sp_helpdb pubs2
name
db_size
owner
dbid created
status
--------- ---------- --------- ---- -------------- -------------pubs2
2.0 MB sa
5 May 25, 1993
no options set
device_fragments
size
usage
free kbytes
------------------- ------------- ---------------- ----------pubdev
2.0 MB
data and log
288
device
---------------------pubdev
pubdev
pubdev

segment
---------------------default
logsegment
system

sp_helpdb informa sobre el tamao y uso de los dispositivos utilizados por la base de
datos indicada. La columna de estado enumera las opciones de base de datos, que se
describen en el Captulo 15, "Definicin de opciones de base de datos".

Si se est utilizando la base de datos indicada, sp_helpdb tambin informa sobre los
segmentos de la base de datos y los dispositivos denominados por los segmentos.
Consulte el Captulo 16, "Creacin y uso de segmentos", para obtener ms informacin.
Cuando se utiliza sp_helpdb sin argumentos, proporciona informacin sobre todas las
bases de datos de SQL Server:
sp_helpdb
name
db_size
------------- -------master
3.0 MB
model
2.0 MB
mydata
4.0 MB
pubs2
2.0 MB
sybsecurity
20.0 MB
sybsystemprocs 10.0 MB
tempdb
2.0 MB

owner dbid created


status
----- ---- ------------ ------------------sa
1 Jan 01, 1900 no options set
sa
3 Jan 01, 1900 no options set
sa
7 Aug 25, 1993 no options set
sa
6 Aug 23, 1993 no options set
sa
5 Aug 18, 1993 no options set
sa
4 Aug 18, 1993 trunc log on chkpt
sa
2 Aug 18, 1993 select into/bulkcopy

Espacio usado
Para obtener un resumen de la cantidad de espacio de almacenamiento usado por una
base de datos, ejecute el procedimiento del sistema sp_spaceused en la base de datos:
sp_spaceused
database_name
database_size
------------------------------ ------------pubs2
2.0 MB
reserved
data
index_size
unused
------------- ------------- --------------- -------1720 KB
536 KB
344 KB
840 KB

La Tabla 14-3 describe las columnas del informe.


Tabla 14-3: Columnas de sp_spaceused
Columna

Descripcin

database_name Da el nombre de la base de datos que se est examinando.


database_size

Da la cantidad total de espacio asignado a la base de datos por los


comandos create database o alter database .

reserved

Indica la cantidad de espacio asignado a todas las tablas e ndices


creados en la base de datos. (El espacio se asigna a los objetos dentro
de una base de datos, en incrementos de 1 sector, u 8 pginas, cada
vez.)

data ,
index_size

Muestra cunto espacio han utilizado los datos y los ndices.

unused

Muestra la cantidad de espacio reservado an no utilizado por las


tablas e ndices existentes.

La suma de los valores de las columnas unused , index_size y data debera ser la cifra de
la columna reserved . Reste reserved a database_size para hallar la cantidad de espacio

no reservado. Este espacio est disponible para objetos nuevos o existentes que crezcan
ms all del espacio reservado para ellos.
Ejecutando sp_spaceused con regularidad, se puede hacer el seguimiento de la cantidad
de espacio disponible en la base de datos. Por ejemplo, si el valor de reserved est
cercano al de database_size , se est agotando el espacio para objetos nuevos. Si el
valor de unused tambin es pequeo, igualmente se est agotando el espacio para datos
adicionales.
Tambin se puede utilizar sp_spaceused con un nombre de tabla como parmetro, y
obtener un informe del espacio usado por esa tabla, as:
sp_spaceused titles
name
rowtotal reserved data
index_size unused
------ -------- --------- ------- ---------- ----titles 18
48 KB
6 KB
4 KB
38 KB

La columna rowtotal de este informe puede ser diferente del resultado de ejecutar select
count(*) en la tabla, debido a que sp_spaceused computa el valor con la funcin
incorporada rowcnt . Esta funcin utiliza valores almacenados en las pginas de
asignacin. Sin embargo, dichos valores no se actualizan con regularidad, por lo que
pueden ser diferentes para las tablas que tienen mucha actividad. Los comandos update
statistics , dbcc checktable y dbcc checkdb actualizan la estimacin de filas por
pgina, por lo que rowtotal ser ms exacto despus de ejecutarse uno de estos
comandos.
Es aconsejable ejecutar s p_spaceused con regularidad en syslogs , dado que el diario
de transacciones puede crecer con rapidez si se realizan modificaciones frecuentes en la
base de datos. Esto puede llegar a ser un problema si el diario de transacciones no est
en un dispositivo aparte, en cuyo caso compite por espacio con el resto de la base de
datos.
Es conveniente escribir algunas consultas propias para obtener informacin adicional
sobre el almacenamiento fsico. Por ejemplo, para determinar el nmero total de bloques
de almacenamiento de 2K de espacio existentes en SQL Server, se puede consultar
sysdevices :
select sum(high - low)
from sysdevices
where status in (2, 3)
------------------7168

Un 2 en la columna status representa un dispositivo fsico; un 3 indica un dispositivo


fsico predeterminado.

Chapter 15

Definicin de opciones de base de datos


En este captulo se describe cmo utilizar las opciones de base de datos. Trata los temas
siguientes:

Qu son las opciones de base de datos?


Procedimiento sp_dboption
Descripcin de las opciones de base de datos
Modificacin de las opciones de base de datos
Visualizacin de las opciones de una base de datos

Qu son las opciones de base de datos?


Las opciones de base de datos controlan muchos aspectos distintos del comportamiento
de las bases de datos, como por ejemplo:

Comportamiento de las transacciones


Valores predeterminados de las columnas de una tabla
Restricciones al acceso de usuarios
Rendimiento de las operaciones de recuperacin y b cp
Comportamiento de los diarios

Los administradores del sistema y propietarios de las bases de datos pueden utilizar esas
opciones para configurar parmetros para toda una base de datos, lo cual es distinto a
los parmetros de sp_configure , que afectan a todo el servidor, y a las opciones de set ,
que afectan slo a la sesin o procedimiento almacenado actual.

Procedimiento sp_dboption
Utilice el procedimiento del sistema sp_dboption para cambiar los parmetros de toda
una base de datos. Las opciones permanecen en vigor hasta que se cambien. El
procedimiento sp_dboption :

Muestra una lista completa de las opciones de base de datos, cuando se utiliza
sin un parmetro.
Cambia una opcin, cuando se usa con parmetros.

Slo es posible cambiar las opciones de las bases de datos de usuarios, no las de master
. Sin embargo, para cambiar una opcin de una base de datos de usuario (o para ver una
lista de sus opciones), sp_dboption debe ejecutarse mientras se usa la base de datos
master .
La sintaxis de sp_dboption es:
sp_dboption [

dbname

optname

, {true | false}]

Para que las opciones tengan efecto para cada base de datos nueva, cmbielas en la base
de datos model .

Descripcin de las opciones de base de datos

Todos los usuarios con acceso a la base de datos master pueden ejecutar el
procedimiento sp_dboption sin parmetros, para mostrar una lista de las opciones. El
informe de sp_dboption tiene este aspecto:
sp_dboption
Settable database options.
-------------------abort tran on log full
allow nulls by default
auto identity
dbo use only
ddl in tran
identity in nonunique index
no chkpt on recovery
no free space acctg
read only
select into/bulkcopy
single user
trunc log on chkpt
trunc. log on chkpt.

Para obtener un informe indicando qu opciones se han definido para una base de datos
en particular, ejecute el procedimiento del sistema sp_helpdb en esa base de datos.
Las secciones siguientes describen cada opcin de base de datos en detalle.
abort tran on log full
abort tran on log full determina la suerte de una transaccin que est ejecutndose
cuando se cruza el umbral de ltima oportunidad. El valor predeterminado es false , que
significa que la transaccin se suspende y slo se reactiva cuando se ha liberado
espacio. Si cambia el valor a true , todas las consultas de usuario que necesitan escribir
en el diario de transacciones se destruyen, hasta que se haya liberado espacio en el
diario.
allow nulls by default
La definicin de allow nulls by default como true cambia el tipo predeterminado de
columna nulo de not null a null , de acuerdo con la norma SQL. El valor
predeterminado de una columna en
Transact-SQL es not null , lo cual significa que no se permiten valores nulos en una
columna a menos que se especifique null en la definicin de la columna.
auto identity
Cuando la opcin auto identity est configurada como t rue , en cada tabla nueva
creada sin especificar una clave primary , restriccin unique o columna IDENTITY, se
define una columna IDENTITY de 10 dgitos. La columna no es visible cuando se
seleccionan todas las columnas con la instruccin select * . Para recuperarla, se debe
mencionar su nombre explcitamente, SYB_IDENTITY_COL , en la lista de seleccin.
Para definir la precisin de la columna automtica IDENTITY, utilice el parmetro de
configuracin size of auto identity .

dbo use only


Mientras la opcin dbo use only est "activada" ( true ), slo el propietario puede
utilizar la base de datos.
ddl in tran
La definicin de la opcin ddl in tran como true permite que, dentro de transacciones
definidas por el usuario, se utilicen los comandos siguientes:
Tabla 15-1: Comandos DDL permitidos en las transacciones

alter table (se permiten todas las clusulas,


salvo partition y unpartition )

create default
create index
create
procedure
create rule
create schema
create table
create trigger
create view

drop default
drop index
drop
procedure
grant
drop rule
revoke
drop table
drop trigger
drop view

Las instrucciones de definicin de datos deben bloquear las tablas del sistema mientras
dure la transaccin, lo cual puede provocar problemas de rendimiento. Utilcelas slo en
transacciones breves.
Los comandos siguientes no pueden utilizarse en una transaccin definida por el usuario
bajo ninguna circunstancia:
Tabla 15-2: Comandos DDL no permitidos en las transacciones
alter database
alter table...partition
alter table...unpartition
create database
disk init
dump database

dump transaction
select into
drop database
truncate table
load transaction
update statistics
load database

identity in nonunique index


La opcin identity in nonunique index incluye automticamente una columna
IDENTITY en las claves de ndice de una tabla, de forma que todos los ndices creados
en la tabla sean exclusivos. Esta opcin hace que los ndices lgicamente no exclusivos
sean internamente exclusivos y permite que se utilicen para procesar cursores
actualizables y lecturas con nivel de aislamiento 0.
Para que funcione la opcin identity in nonunique index , la tabla ya debe tener una
columna IDENTITY, debido a una instruccin create table o a la definicin de la
opcin auto identity como true antes de crear la tabla.

Utilice identity in nonunique index si prev utilizar cursores y lecturas con nivel de
aislamiento 0 en tablas con ndices no exclusivos. Un ndice exclusivo garantiza que el
cursor se situar en la fila correcta la prxima vez que se ejecute fetch en ese cursor.
no chkpt on recovery
La opcin no chkpt on recovery est "activada" ( true ) cuando se conserva una copia
actualizada de una base de datos. En estas situaciones, hay una base de datos "primaria"
y una "secundaria". Inicialmente, la base de datos primaria se vuelca y carga en la
secundaria. Luego, a intervalos, el diario de transacciones de la primaria se vuelca y
carga automticamente en la base de datos secundaria.
Si esta opcin est "desactivada" ( false ) condicin predeterminada, se aade un
registro de punto de verificacin a la base de datos despus de recuperada por el reinicio
de SQL Server. Este punto de verificacin, que asegura que el mecanismo de
recuperacin no se vuelva a ejecutar sin necesidad, cambia el nmero de secuencia en la
base de datos. Si dicho nmero ha cambiado en la base de datos secundaria, no se le
podr cargar un volcado subsiguiente del diario de transacciones desde la base de datos
primaria.
La activacin de esta opcin en la base de datos secundaria le impide obtener un punto
de verificacin del proceso de recuperacin para admitir la carga de subsiguientes
volcados del diario de transacciones desde la base de datos primaria.
no free space acctg
no free space acctg suprime la contabilidad de espacio libre y la ejecucin de acciones
de umbral para los segmentos que no son de diario. Esto acelera el tiempo de
recuperacin porque los recuentos de espacio libre no se volvern a calcular para esos
segmentos. Esta opcin inhabilita la actualizacin del valor de filas por pgina
almacenado para cada tabla, por lo que los procedimientos del sistema que estiman el
uso de espacio pueden comunicar valores inexactos.
read only
La opcin read only significa que los usuarios pueden recuperar datos de la base de
datos, pero no modificar nada.
select into/bulkcopy
La opcin select into/bulkcopy debe estar definida como on . Esto permite realizar
operaciones que no mantienen un registro completo de la transaccin en el diario, como:

Usar la utilidad writetext .


Ejecutar select into en una tabla permanente.
Realizar una copia masiva "rpida" con bcp . La bcp rpida se utiliza de forma
predeterminada sobre las tablas que no tienen ndices.

SQL Server lleva un control mnimo de estos comandos en el diario, registrando slo las
asignaciones y desasignaciones de pgina, pero no los cambios reales realizados en las
pginas de datos.
Para ejecutar select into en una tabla temporal, no es necesario definir la opcin select
into/bulkcopy como on , dado que tempdb nunca se recupera. Para ejecutar bcp sobre
una tabla con ndices, no es necesario que la opcin est definida, porque las inserciones
se registran en el diario.
Despus de ejecutado un comando select into o de haberse realizado una copia masiva
en una base de datos, no se podr realizar un volcado normal del diario de
transacciones. Cuando se efectan cambios en la base de datos, que generan registros
mnimos en el diario, debe ejecutarse d ump database , dado que los cambios no son
recuperables desde los diarios de transacciones.
La sola definicin de la opcin select into/bulkcopy no impide el volcado del diario,
pero realizar cambios en los datos que generan registros mnimos en el diario impide el
uso de un dump transaction normal. Sin embargo, an puede usarse dump
transaction...with no_log y dump transaction...with truncate_only .
De forma predeterminada, la opcin select into/bulkcopy est desactivada en las bases
de datos recin creadas. Para cambiar la situacin predeterminada, active esta opcin en
la base de datos model .
single user
Cuando single user est definido como true , slo un usuario por vez puede tener
acceso a la base de datos.
trunc log on chkpt
La opcin trunc log on chkpt trunca el diario de transacciones (se quitan las
transacciones consignadas) cuando tiene lugar el proceso de verificacin de checkpoint
(normalmente ms de una vez por minuto) si se han escrito 50 o ms filas en el diario.
El diario no se trunca si se escribieron menos de 50 filas en el diario, o si el propietario
de la base de datos ejecuta el comando checkpoint manualmente.
Puede ser til activar esta opcin mientras se realiza el trabajo de desarrollo, durante el
cual no se necesitan copias de seguridad del diario de transacciones. Si esta opcin est
desactivada (la condicin predeterminada original) y el diario de transacciones nunca se
vuelca, ste contina creciendo y puede llegar a agotar el espacio en la base de datos.
Cuando la opcin trunc log on chkpt est activada, no es posible volcar el diario de
transacciones porque los cambios en los datos no son recuperables desde los volcados
del diario. En esta situacin, la ejecucin del comando dump transaction produce un
mensaje de error solicitando que se utilice dump database .
De forma predeterminada, la opcin trunc log on chkpt est desactivada en las bases
de datos recin creadas. Para cambiar la situacin predeterminada, active esta opcin en
la base de datos model .

Warning! Si activa trunc log on chkpt en model y necesita cargar los diarios de base
de datos y de transacciones en una base de datos recin creada, asegrese de desactivar
la opcin en la base de datos nueva.

Modificacin de las opciones de base de datos


Slo un administrador del sistema o el propietario de una base de datos pueden cambiar
las opciones de una base de datos de usuario ejecutando sp_dboption . Para ejecutar
sp_dboption , es necesario estar usando la base de datos master . Luego, para que el
cambio tenga efecto, es necesario introducir el comando checkpoint mientras se utiliza
la base de datos para la que se ha cambiado la opcin.
Recuerde que no es posible cambiar ninguna de las opciones de la base de datos master
.
Para cambiar la base de datos pubs2 a read only utilizando s p_dboption , escriba lo
siguiente:
use master
sp_dboption pubs2, "read only", true

A continuacin, ejecute el comando checkpoint en la base de datos que ha cambiado:


use pubs2
checkpoint

El parmetro optname comprende cualquier cadena exclusiva que sea parte del nombre
de una opcin. Para definir la opcin trunc log on chkpt , es posible ejecutar este
comando:
use master
sp_dboption pubs2, trunc, true

Si se introduce un valor de optname ambiguo, aparece un mensaje de error. Por


ejemplo, dbo use only y read only son dos opciones de base de datos. Si se utiliza
"only" como parmetro optname , se genera un mensaje porque "only" coincide con
ambas opciones, y se imprimen los nombres completos de las dos opciones que
corresponden a la cadena suministrada. El parmetro optname debe ser ms especfico.
Es posible activar varias opciones de base de datos a la vez, pero no cambiarlas desde
dentro de una transaccin definida por el usuario.

Visualizacin de las opciones de una base de datos


Utilice el procedimiento sp_helpdb para determinar qu opciones estn definidas para
una base de datos en particular. sp_helpdb enumera cada una de las opciones activas
para la base de datos en la columna "status" de su salida.
El ejemplo siguiente muestra que la opcin read only est activada en mydb :
sp_helpdb mydb

name
db_size owner dbid created
status
----- ------- ----- ---- ------------ ---------------------mydb
2.0 MB
sa
5
Mar 05, 1995 read only
device_fragments
size
usage
free kbytes
---------------------- ------------ ------------master
2.0 MB data and log
576
device
segment
------------------------------ -----------------------------master
default
master
logsegment
master
system
name
attribute_class attribute int_value char_value
comments
------- --------------- ---------- --------- -------------------------------pubs2
buffer manager cache name
NULL cache for database mydb
NULL

Para mostrar un resumen de las opciones de todas las bases de datos, utilice sp_helpdb
sin especificar una base de datos:
sp_helpdb
name
db_size
owner
dbid
created
status
------------------- -------------- ------------- ------------------ --------------------------mydb
2.0 MB
sa
5
May 10, 1995
read only
master
3.0 MB
sa
1
Jan 01, 1995
no options set
model
2.0 MB
sa
3
Jan 01, 1995
no options set
sybsystemprocs
2.0 MB
sa
4
Mar 31, 1995
trunc log on chkpt
tempdb
2.0 MB
sa
2
May 04, 1995
select into/bulkcopy

Chapter 16

Creacin y uso de segmentos


Comandos y procedimientos para usar segmentos
La Tabla 16-1 resume los comandos y procedimientos de SQL Server para utilizar
segmentos.
Tabla 16-1: Comandos y procedimientos para el manejo de segmentos
Comando
sp_addsegment

Sirve para
Definir un segmento en una base de datos.

create table y create


Crear un objeto de base de datos en un segmento.
index
sp_dropsegment

Quitar un segmento de una base de datos o quitar un solo


dispositivo del alcance de un segmento.

sp_extendsegment

Aadir ms dispositivos a un segmento existente.

sp_placeobject

Asignar espacio futuro para una tabla o un ndice a un segmento


especfico.

sp_helpsegment

Mostrar la asignacin de segmentos para una base de datos o


para los datos en un segmento en particular.

sp_helpdb

Mostrar los segmentos de cada dispositivo de base de datos.


Consulte el Captulo 14, "Creacin de bases de datos de
usuarios", para ver ejemplos.

sp_help

Mostrar informacin sobre una tabla, incluyendo el segmento en


que la tabla reside.

sp_helpindex

Mostrar informacin sobre los ndices de una tabla, incluyendo


los segmentos en que los ndices residen.

Qu es un segmento?
Los segmentos son subconjuntos con nombre de los dispositivos de base de datos
disponibles para una base de datos de SQL Server en particular. Un segmento puede
describirse mejor como un rtulo que seala uno o ms dispositivos de base de datos.
Los nombres de segmento se utilizan en los comandos create table y create index para
situar las tablas o ndices en dispositivos especficos. El uso de segmentos puede
mejorar el rendimiento de SQL Server y dar al administrador del sistema o al
propietario de la base de datos un mayor control sobre la colocacin, tamao y uso del
espacio de los objetos de la base de datos.
Los segmentos se crean dentro de una base de datos en particular para describir los
dispositivos que ya tiene asignados. Cada base de datos de SQL Server puede contener
hasta 32 segmentos, incluidos los definidos por el sistema (consulte "Segmentos
definidos por el sistema"). Antes de asignar nombres a los segmentos, es necesario
inicializar los dispositivos de base de datos con disk init y ponerlos a disposicin de la
base de datos con create database o alter database . Consulte el Captulo 14,
"Creacin de bases de datos de usuarios" para obtener ms informacin sobre create
database y alter database .
Segmentos definidos por el sistema
Cuando se crea una base de datos, SQL Server crea automticamente tres segmentos en
la base de datos, que se describen en la Tabla 16-2.
Tabla 16-2: Segmentos definidos por el sistema
Segmento
Funcin
system
Almacena las tablas del sistema de la base de datos.
logsegment Almacena el diario de transacciones de la base de datos.
default

Almacena los dems objetos de la base de datos (a menos que se creen


segmentos adicionales y se guarden tablas o ndices en los nuevos
segmentos utilizando create table...on segment_name o create index...on

segment_name ).
Si se crea una base de datos en un solo dispositivo de base de datos, los segmentos
system , default y logsegment rotulan el mismo dispositivo. Si se utiliza la clusula log
on para situar el diario de transacciones en otro dispositivo, los segmentos se parecen a
lo que muestra la Figura 16-1.
Figure 16-29: Segmentos definidos por el sistema

Por qu utilizar segmentos?


Cuando se aade un nuevo dispositivo a una base de datos con alter database , SQL
Server lo sita en un espacio predeterminado (los segmentos default y system de la base
de datos). Esto aumenta el espacio total disponible para la base de datos, pero no define
qu objetos ocuparn el nuevo espacio. Cualquier tabla o ndice podra crecer hasta
llenar todo el espacio, dejando tablas cruciales sin espacio de expansin. Tambin es
posible que varias tablas e ndices muy utilizados se siten en un solo dispositivo fsico
del espacio predeterminado, resultando en un rendimiento pobre de las E/S.
Los segmentos permiten que los administradores del sistema y propietarios de las bases
de datos controlen la ubicacin de los objetos de base de datos en los dispositivos.
Cuando se crea un objeto en un segmento, el objeto puede utilizar todos los dispositivos
disponibles en el segmento, pero ningn otro dispositivo. Esta funcin permite controlar
el espacio disponible para los objetos individuales. Ms importante an, puede
emplearse para mejorar el rendimiento de SQL Server.
Las secciones siguientes describen cmo utilizar segmentos para controlar el uso del
espacio del disco y mejorar el rendimiento. La seccin "Desplazamiento de una tabla a
otro dispositivo" explica cmo mover una tabla de un dispositivo a otro, usando
segmentos e ndices agrupados.
Control del uso del espacio
Si se asignan objetos no cruciales a un segmento, esos objetos no pueden crecer ms
all del espacio disponible en los dispositivos del segmento. A la inversa, si se asigna
una tabla crucial a un segmento y los dispositivos del segmento no estn disponibles
para otros segmentos, ningn otro objeto competir por espacio con esa tabla.
Cuando se llenan los dispositivos de un segmento, se puede ampliar el segmento para
incluir otros dispositivos o fragmentos de dispositivo segn sea necesario. Los
segmentos tambin permiten usar umbrales para avisar cundo escasea espacio en
determinado segmento de base de datos.
Segmentos y umbrales
Los umbrales controlan la cantidad de espacio libre de un segmento de base de datos y,
cuando el espacio se llena, pueden realizar acciones automticamente. Cada base de

datos que almacena el diario de transacciones en un dispositivo aparte de los datos, tiene
al menos un umbral: el de ltima oportunidad. Si se crean segmentos adicionales para
los datos, es posible crear procedimientos de umbral nuevos para cada segmento.
Consulte el Captulo 21, "Administracin de espacio libre con umbrales", para obtener
ms informacin sobre los umbrales.
Mejora del rendimiento
En un entorno SQL Server grande, de varias bases de datos y/o varias unidades, la
asignacin cuidadosa de espacio a bases de datos y la ubicacin de objetos de base de
datos en dispositivos fsicos puede mejorar el rendimiento del sistema. Idealmente, cada
base de datos tiene un uso exclusivo de los dispositivos, es decir, no comparte un disco
fsico con otra base de datos. En la mayora de los casos, el rendimiento puede
mejorarse situando los objetos de base de datos ms usados en discos fsicos dedicados,
o "dividiendo" las tablas grandes en varios discos fsicos.
Las secciones siguientes describen estas formas de mejorar el rendimiento. Consulte
tambin la Gua de Mejora de Rendimiento y Afinacin para obtener ms informacin
sobre cmo los segmentos pueden mejorar el rendimiento.
Separacin de tablas, ndices y diarios
En general, situar una tabla en un solo dispositivo fsico, sus ndices no agrupados en un
segundo dispositivo fsico y el diario de transacciones en un tercero puede acelerar el
rendimiento. El uso de dispositivos fsicos separados (controladores de disco) reduce el
tiempo necesario para leer o escribir en el disco, ya que suele disminuir el
desplazamiento de los cabezales del disco. Si no es posible dedicar dispositivos enteros
de esta forma, al menos confine todos los ndices no agrupados a un dispositivo fsico
dedicado.
La opcin log on de create database (o sp_logdevice ) maneja la ubicacin del diario
de transacciones en un dispositivo fsico aparte. Los segmentos permiten situar tablas e
ndices en dispositivos fsicos especficos. Consulte "Asignacin de objetos de base de
datos a los segmentos" para obtener informacin sobre la ubicacin de tablas e ndices
en segmentos.
Divisin de tablas
La divisin de una tabla grande y muy usada entre dispositivos situados en distintos
controladores de disco puede mejorar el rendimiento general de lectura de una tabla.
Cuando una tabla grande existe en varios dispositivos, es ms probable que se
produzcan lecturas pequeas y simultneas en discos distintos. La Figura 16-2
representa una tabla dividida entre los dos dispositivos de su segmento.
Figure 16-30: Particin de una tabla entre dispositivos fsicos
Una tabla puede dividirse entre varios dispositivos mediante tres mtodos distintos,
cada uno de los cuales requiere el uso de segmentos:

Utilice particiones si la tabla no tiene un ndice agrupado.

Use el mtodo de carga parcial si la tabla tiene un ndice agrupado.


Separe la cadena de texto de otros datos si la tabla contiene datos de tipo t ext o
image .

Particin de tablas
La particin de una tabla crea varias cadenas de pginas para la tabla y distribuye esas
cadenas entre todos los dispositivos del segmento de la tabla (consulte la Figura 16-2).
La particin de una tabla aumenta el rendimiento de las inserciones, as como el de las
lecturas, ya que hay varias cadenas de pginas disponibles para las inserciones.
Antes de que pueda dividirse una tabla, es necesario crearla en un segmento que
contenga el nmero deseado de dispositivos. El resto de este captulo describe cmo
crear y modificar segmentos. Consulte "Partitioning and Unpartitioning Tables" en la
Gua de Mejora de Rendimiento y Afinacin para obtener informacin sobre la particin
de tablas usando el comando alter table .
No es posible realizar particiones de tablas con ndices agrupados.Carga parcial
Si se desea dividir una tabla que tiene un ndice agrupado, es posible utilizar
sp_placeobject con varios comandos load para cargar diferentes partes de la tabla en
segmentos distintos. Este mtodo puede ser difcil de ejecutar y mantener, pero
proporciona una forma de dividir tablas y sus ndices agrupados entre varios
dispositivos fsicos. Consulte "Ubicacin de objetos existentes en segmentos" para
obtener ms informacin, incluyendo la sintaxis.Separacin de las columnas text e
image
SQL Server almacena los datos de las columnas text e image en una cadena aparte de
pginas de datos. De forma predeterminada, esta cadena de texto se sita en el mismo
segmento que los dems datos de la tabla. Dado que leer una columna de texto requiere
una operacin de lectura para el puntero de texto de la tabla base y otra operacin de
lectura en la pgina de texto de la cadena de texto aparte, es posible mejorar el
rendimiento situando la cadena y los datos de la tabla base en dispositivos fsicos aparte.
Consulte "Colocacin de pginas de texto en un dispositivo aparte" para obtener ms
informacin, incluyendo la sintaxis.
Desplazamiento de una tabla a otro dispositivo
Tambin es posible utilizar segmentos para mover una tabla de un dispositivo a otro
usando el comando create clustered index . Los ndices agrupados, donde el nivel
inferior o de hoja del ndice contiene los datos en s, estn por definicin en el mismo
segmento que la tabla. Por lo tanto, es posible desplazar una tabla por completo
omitiendo su ndice agrupado (si lo hubiera) y creando o volviendo a crear un ndice
agrupado en el segmento deseado. Consulte "Creacin de ndices agrupados en los
segmentos" para obtener ms informacin, incluyendo la sintaxis.

Creacin de segmentos
Para crear un segmento en una base de datos, es necesario observar dos pasos
preliminares:

Inicializar el dispositivo fsico con disk init .


Poner el dispositivo de base de datos a disposicin de la base de datos usando la
clusula on de create database o alter database . Esto aade automticamente
el nuevo dispositivo a los segmentos default y system de la base de datos, como
se describe en "Segmentos definidos por el sistema".

Una vez que el dispositivo de base de datos existe y est disponible para la base de
datos, defina el segmento de la base de datos con el procedimiento almacenado
sp_addsegment . La sintaxis es:
sp_addsegment

segname

dbname, devname

donde:
segname es cualquier identificador vlido. Se utiliza en las instrucciones create table y
create index para crear los objetos respectivos en el segmento y, por lo tanto, en el
dispositivo indicado en devname . D nombres a los segmentos que identifiquen para
qu se utilizan, y emplee extensiones como "_seg".
dbname es el nombre de la base de datos en que se crear el segmento.
devname es el nombre del dispositivo de base de datos (el nombre que se utiliza en disk
init y en las instrucciones create y alter database ).
Esta instruccin crea el segmento seg_mydisk1 en el dispositivo de base de datos
mydisk1 :
sp_addsegment seg_mydisk1, mydata, mydisk1

Cambio del alcance de los segmentos


Para realizar las tareas descritas en "Por qu utilizar segmentos?", tambin se debe
administrar el alcance de los segmentos (el nmero de dispositivos de base de datos a
que seala un segmento). Es posible:

Extender el alcance de un segmento, haciendo que seale a uno o varios


dispositivos adicionales, o
Reducir el alcance de un segmento, haciendo que seale a menos dispositivos.

Extensin del alcance de los segmentos


Quiz sea necesario extender un segmento si el objeto u objetos de base de datos
asignados al segmento quedan sin espacio. El procedimiento almacenado
sp_extendsegment extiende el tamao de un segmento al incluir otros dispositivos de
base de datos como parte de un segmento existente. La sintaxis es:
sp_extendsegment

segname

Antes de poder extender un segmento:

dbname,

devname

El dispositivo de base de datos debe estar enumerado en sysdevices (mediante el


uso de disk init ),
El dispositivo debe estar disponible para la base de datos deseada (mediante una
instruccin alter database o create database ), y
El nombre del segmento debe existir en la base de datos actual (mediante el uso
previo de sp_addsegment ).

El ejemplo siguiente aade el dispositivo de base de datos pubs_dev2 a un segmento


existente llamado bigseg :
sp_extendsegment bigseg, pubs2, pubs_dev2

"default" es una palabra clave, por lo que si se desea extender el segmento default de
una base de datos, debe incluirse la palabra "default" entre comillas:
sp_extendsegment "default", mydata, newdevice

Extensin automtica del alcance de un segmento


Si se utiliza alter database para aadir espacio en un dispositivo nuevo para la base de
datos, los segmentos system y default se extienden automticamente para incluir el
nuevo espacio. Por lo tanto, el alcance de los segmentos system y default se extiende
automticamente cada vez que se aade un nuevo dispositivo a la base de datos.
Si se utiliza alter database para asignar espacio adicional en un dispositivo de base de
datos existente, todos los segmentos correlacionados con ese dispositivo se extienden
automticamente para incluir el nuevo fragmento. Por ejemplo, suponga que ha
inicializado un dispositivo de 4MB llamado newdev y que ha asignado 2MB del
dispositivo a mydata y lo ha asignado al segmento testseg :
alter database mydata on newdev = 2
sp_addsegment testseg, mydata, newdev

Si posteriormente altera mydata para que utilice el resto del espacio de newdev , el
fragmento del espacio restante se correlaciona automticamente con el segmento testseg
:
alter database mydata on newdev = 2

Consulte "Instrucciones para crear un segmento" para ver ms ejemplos de cmo SQL
Server asigna automticamente los nuevos fragmentos de dispositivo a los segmentos.
Reduccin del alcance de un segmento
Es posible que sea necesario reducir el alcance de un segmento si ste incluye
dispositivos de base de datos que desean reservarse exclusivamente para otros
segmentos. Por ejemplo, si se aade un nuevo dispositivo de base de datos que se va a
usar exclusivamente para una tabla, debe reducirse el alcance de los segmentos default y
system para que ya no sealen al nuevo dispositivo.

Use el procedimiento sp_dropsegment para omitir un solo dispositivo de base de datos


de un segmento, reduciendo el alcance del segmento. La sintaxis siguiente quita un solo
dispositivo de base de datos de un segmento:
sp_dropsegment

segname

dbname,

device

Con tres argumentos, sp_dropsegment no omite el segmento, slo omite el device


mencionado del alcance de dispositivos abarcados por el segmento. Tambin es posible
utilizar sp_dropsegment para quitar todo un segmento de la base de datos, como se
describe en "Omisin de segmentos".
El ejemplo siguiente quita el dispositivo de base de datos pubs_dev2 del alcance de
bigseg :
sp_dropsegment bigseg, pubs2, pubs_dev2

Asignacin de objetos de base de datos a los segmentos


Esta seccin explica cmo asignar objetos de base de datos nuevos o existentes a los
segmentos definidos por el usuario para:

Restringir los objetos nuevos a uno o ms dispositivos de base de datos.


Situar una tabla y su ndice en dispositivos aparte para mejorar el rendimiento.
Dividir un objeto existente entre varios dispositivos de base de datos.

Esta seccin utiliza las tcnicas descritas en "Creacin de segmentos" y "Cambio del
alcance de los segmentos".
Creacin de nuevos objetos en los segmentos
Para situar un nuevo objeto en un segmento, siga primero las instrucciones de "Creacin
de segmentos" para crear el nuevo segmento. Tambin es conveniente cambiar el
alcance de este segmento (u otros segmentos) para que seale slo a los dispositivos de
base de datos deseados. Recuerde que, cuando se aade un nuevo dispositivo a una base
de datos, se aade automticamente al alcance de los segmentos default y system .
Despus de haber definido el segmento en la base de datos actual, utilice el comando
create table o create index con la clusula opcional on segment_name para crear el
objeto en el segmento. La sintaxis es:
create table
table_name
( col_name
[on
segment_name ]
create [ clustered | nonclustered ] index
on
table_name ( col_name )
[on
segment_name ]

datatype

... )

index_name

Note: Los ndices agrupados, donde el nivel inferior o de hoja del ndice contiene los
datos en s, estn por definicin en el mismo segmento que la tabla. Consulte "Creacin
de ndices agrupados en los segmentos".

Ejemplo: Creacin de una tabla y un ndice en segmentos aparte

La Figura 16-3: Creacin de objetos en dispositivos especficos usando segmentos


resume la secuencia de comandos de Transact-SQL que se utilizan para crear tablas e
ndices en discos fsicos especficos:
1.
2.
3.
4.
5.

Comience usando la base de datos master .


Inicialice los discos fsicos.
Asigne los nuevos dispositivos a una base de datos.
Use la base de datos.
Cree dos nuevos segmentos que sealen a uno de los nuevos dispositivos cada
uno.
6. Reduzca el alcance de los segmentos default y system para que no sealen a los
nuevos dispositivos.
7. Cree los objetos, dando los nombres de los nuevos segmentos.
Figure 16-31: Creacin de objetos en dispositivos especficos usando
segmentos

Ubicacin de objetos existentes en segmentos


El procedimiento del sistema sp_placeobject no quita un objeto del segmento asignado.
Sin embargo, hace que toda asignacin de disco adicional para ese objeto se produzca
en el nuevo segmento que especifica. La sintaxis es:
sp_placeobject

segname

objname

El comando siguiente hace que toda la asignacin posterior de disco para la tabla mytab
tenga lugar en bigseg :
sp_placeobject bigseg, mytab

Note: sp_placeobject no mueve un objeto de un dispositivo de base de datos a otro. Las


pginas asignadas al primer dispositivo continan asignadas; los datos que se
escribieran en el primer dispositivo permanecen en l. sp_placeobject afecta slo a las
futuras asignaciones de espacio.
Para desplazar totalmente una tabla, hay que omitir su ndice agrupado (si lo hubiera) y
crear o volver a crear un ndice agrupado en el segmento deseado. Para desplazar
totalmente un ndice no agrupado, es necesario omitir el ndice y volver a crearlo en el
nuevo segmento. Consulte "Creacin de ndices agrupados en los segmentos" para
obtener instrucciones sobre cmo mover una tabla.
Despus de haber utilizado sp_placeobject , la ejecucin de dbcc checkalloc hace
aparecer el siguiente mensaje para cada objeto que est dividido entre segmentos:
El sector no est dentro del segmento. El objeto object_name, indid
index_id incluye sectores en la pgina de asignacin page_number que
no estn en el segmento segment_name.

Estos mensajes pueden ignorarse.

Ejemplo: Divisin de una tabla y su ndice agrupado entre dispositivos


fsicos

El rendimiento puede mejorarse en aplicaciones de alto volumen y de varios usuarios


cuando las tablas grandes se dividen entre segmentos situados en distintos controladores
de disco.
La Figura 16-4: Divisin de una tabla grande entre dos segmentos resume el proceso
de dividir una tabla entre dos segmentos, como se muestra en los pasos siguientes:
1.
2.
3.
4.
5.

Comience utilizando la base de datos master .


Inicialice los dispositivos con disk init .
Asigne ambos dispositivos a la base de datos mydata con alter database .
Utilice la base de datos mydata escribiendo el comando use .
Cree 3 segmentos. Cada uno de los dos primeros debe sealar a uno de los
nuevos dispositivos. Extienda el alcance del tercer segmento para que rotule a
ambos dispositivos.
6. Omita los segmentos system y default de ambos dispositivos.
7. Cree la tabla y su ndice agrupado en el primer segmento.
8. Cargue la mitad de los datos de la tabla en el primer segmento.
9. Utilice sp_placeobject para que las siguientes asignaciones de espacio de disco
se produzcan en el segundo segmento.
10. Cargue el resto de los datos en el segundo segmento.
11. Una vez cargados los datos en el segundo segmento, use nuevamente s
p_placeobject para situar la tabla en el segmento que abarca ambos
dispositivos.
Note: El orden de los pasos es muy importante en algunas fases. En especial, el
ndice agrupado debe crearse antes de que la tabla se site en el segundo
segmento. Despus de eso, la creacin de un ndice agrupado hara que todo el
objeto migrase al segundo segmento. Si el ndice se crea despus de que la tabla
se sita en seg_bothdisks , la asignacin de espacio de disco es imprevisible.

En el ejemplo anterior, si la tabla se actualiza con frecuencia, el equilibrio de asignacin


de disco puede cambiar con el tiempo. Para garantizar las ventajas de velocidad, puede
ser necesario omitir y volver a crear la tabla en algn momento.
Figure 16-32: Divisin de una tabla grande entre dos segmentos
Colocacin de pginas de texto en un dispositivo aparte
Cuando se crea una tabla con columnas tipo text o image , los datos se almacenan en
una cadena aparte de pginas de texto. Una tabla que contiene columnas text o image
tiene una entrada adicional en sysindexes para la cadena de texto. La columna de
nombre est definida con el nombre de la tabla precedido por la letra "t" y con una indid
de 255. Para almacenar la cadena de texto en un dispositivo aparte, use sp_placeobject ,
el nombre de la tabla y el de la cadena de texto de sysindexes :
sp_placeobject textseg, "mytab.tmytab"

Note: De forma predeterminada, una cadena de pginas de texto se sita en el mismo


segmento que su tabla. Despus de ejecutar sp_placeobject , las pginas que se
escribieron previamente en el dispositivo antiguo permanecen asignadas ah, pero todas
las asignaciones nuevas tienen lugar en el nuevo segmento.

Creacin de ndices agrupados en los segmentos


El nivel inferior o de hoja de un ndice agrupado contiene los datos. Por lo tanto, por
definicin, una tabla y su ndice agrupado estn en el mismo segmento. Si se crea una
tabla en un segmento, y su ndice agrupado en otro segmento, la tabla se traslada con su
ndice. Toda la tabla dejar el segmento en que se cre y migrar al segmento donde se
cree el ndice agrupado. Esto proporciona un mecanismo rpido y sencillo para
desplazar una tabla a otros dispositivos de la base de datos.
La sintaxis para crear un ndice agrupado en un segmento es:
create [unique] clustered index
index_name
on [[ database .] owner .] table_name
( column_name
[,
column_name ]...)
[with {fillfactor =
x , ignore_dup_key, sorted_data,
[ignore_dup_row | allow_dup_row]}]
on
segment_name

Consulte "Segmentos e ndices agrupados" para ver un ejemplo de este comando.

Omisin de segmentos
Cuando el procedimiento almacenado sp_dropsegment se utiliza con slo un nombre
de segmento y el nombre de la base de datos, el segmento indicado se omite de la base
de datos. Sin embargo, no es posible omitir un segmento mientras tenga asignados
objetos de base de datos. Es necesario asignar los objetos a otro segmento (como se
describe en "Asignacin de objetos de base de datos a los segmentos") u omitir primero
los objetos y luego el segmento. Utilice los comandos descritos en "Obtencin de
informacin sobre los segmentos" para determinar qu objetos estn asignados a un
segmento.
La sintaxis para omitir un segmento es:
sp_dropsegment

segname

dbname

Para quitar un dispositivo de base de datos del alcance de un segmento, tambin es


posible utilizar sp_dropsegment . Consulte "Reduccin del alcance de un segmento"
para obtener ms informacin.
Note: La omisin de un segmento quita su nombre de la lista de segmentos de la base
de datos, pero no quita dispositivos de la base de datos de la asignacin de esa base de
datos ni objetos de los dispositivos.
Si se omiten todos los segmentos de un dispositivo de base de datos, el espacio contina
asignado a la base de datos pero no puede usarse para los objetos de base de datos. dbcc
checkcatalog comunica "Falta segmento en el mapa de segmentos sysusages". Utilice
siempre sp_addsegment "default" , dbname, devname para correlacionar un
dispositivo con el segmento predeterminado, a menos que tenga previsto asignarlo a
otro segmento.

Obtencin de informacin sobre los segmentos

Cuatro procedimientos del sistema proporcionan informacin sobre los segmentos:

sp_helpsegment enumera los segmentos de la base de datos en que se ejecuta o


muestra informacin sobre un segmento de la base de datos en particular.
sp_helpdb muestra informacin sobre la relacin entre los dispositivos y los
segmentos de una base de datos.
sp_help y sp_helpindex muestran informacin sobre las tablas e ndices,
incluyendo el segmento a que est asignado el objeto.

sp_helpsegment
El procedimiento del sistema sp_helpsegment , cuando se utiliza sin argumentos,
muestra informacin sobre todos los segmentos de la base de datos donde se ejecuta:
sp_helpsegment
segment name
status
------- ----------------------------- -----0 system
0
1 default
1
2 logsegment
0
3 seg1
0
4 seg2
0

Para obtener informacin sobre un segmento en particular, especifique el nombre como


argumento. Utilice comillas cuando solicite informacin sobre el segmento default :
sp_helpsegment "default"

El ejemplo siguiente muestra informacin sobre el s eg1 :


sp_helpsegment seg1
segment name
status
------- ---------------------- -----3 seg1
0
device
size
free_pages
---------------------- -------------- ----------seg_mydisk1
2.0MB
1008
table_name
index_name
indid
---------------------- -------------------- -----authors
au_ind
1

Adems del nmero y nombre del segmento, sp_helpsegment muestra su status (1 para
el segmento default , 0 para otros). Los nombres de los dispositivos de base de datos y
sus tamaos se muestran en la lnea siguiente. La ltima lnea muestra informacin
sobre las tablas e ndices en un segmento. En este caso, el segmento almacena el ndice
au_ind de la tabla authors . La indid indica que es un ndice agrupado.
sp_helpdb
Cuando se ejecuta sp_helpdb dentro de una base de datos y se da el nombre de dicha
base de datos, el procedimiento del sistema muestra informacin sobre los segmentos de
la base de datos.

Por ejemplo:
sp_helpdb mydata
name
db_size
owner dbid created
status
--------- ---------- ----------- -------------- -----------mydata
8.0 MB sa
4 May 27, 1993
no options set
device_fragments
------------------datadev2
logdev
seg_mydisk1

size
---------4.0 MB
2.0 MB
2.0 MB

device
-----------------------------datadev2
datadev2
logdev
seg_mydisk1

usage
free kbytes
----------------- ----------data only
3408
log only
2032
data only
2016
segment
------------------------default
system
logsegment
seg1

sp_help y sp_helpindex
Cuando se ejecuta sp_help y sp_helpindex en una base de datos y se da el nombre de
una tabla, el procedimiento del sistema muestra informacin sobre qu segmento o
segmentos almacenan la tabla o sus ndices.
Por ejemplo:
sp_helpindex authors
index_name
index_description
---------------------------------------------au_index
nonclustered located on seg_mydisk2

index_keys
---------au_id

Segmentos y tablas del sistema


Tres tablas del sistema almacenan informacin sobre segmentos: la tabla
master..sysusages y dos tablas del sistema de la base de datos de usuario, sysindexes y
syssegments . El procedimiento del sistema sp_helpsegment utiliza estas tres tablas
para proporcionar informacin. Adems, encuentra el nombre del dispositivo de base de
datos en sysdevices .
Cuando se asigna un dispositivo a una base de datos con create database o alter
database , SQL Server aade una fila en master..sysusages . La columna segmap de
sysusages proporciona mapas de bits a los segmentos de la base de datos para cada
dispositivo.
create database tambin crea la tabla syssegments en la base de datos del usuario con
estas entradas predeterminadas:
segment
------0
1
2

name
status
--------------- -----system
0
default
1
logsegment
0

Cuando se aade un segmento a una base de datos con sp_addsegment , el


procedimiento:

Aade una nueva fila en la tabla syssegments de la base de datos de usuario, y


Actualiza el segmap en master ..sysusages .

Cuando se crea una tabla o un ndice, SQL Server aade una nueva fila en sysindexes .
La columna segment de esta tabla almacena el nmero de segmento, mostrando dnde el
servidor asignar espacio nuevo para el objeto. Si no se especifica un nombre de
segmento al crear el objeto, se sita en el segmento default ; de lo contrario, se sita en
el segmento especificado.
Si se crea una tabla que contiene columnas text o image , tambin se aade una segunda
fila en sysindexes para la lista enlazada de pginas de texto; de forma predeterminada, la
cadena de pginas de texto se almacena en el mismo segmento que la tabla. En
"Instrucciones para crear un segmento", se incluye un ejemplo que utiliza
sp_placeobject para poner la cadena de texto en su propio segmento.
El nombre ( n ame ) de syssegments se utiliza en las instrucciones create table y create
index . La columna status indica qu segmento es el predeterminado.
Note: Consulte "Tablas del sistema que administran la asignacin de espacio" para
obtener ms informacin sobre la columna segmap y las tablas del sistema que
administran el almacenamiento.

Instrucciones para crear un segmento


Los segmentos son un herramienta flexible para permitir que los administradores del
sistema asignen objetos a dispositivos especficos de base de datos. Por ejemplo, es
posible aadir un dispositivo a una base de datos y mejorar el rendimiento del sistema
asignando una tabla muy utilizada al dispositivo. Para lograr esas mejoras, debe
cerciorarse de que ningn otro objeto de base de datos utilice el nuevo segmento. Las
siguientes instrucciones muestran cmo crear un segmento de usuario y cmo quitar las
dems correlaciones de segmentos de ese dispositivo.
Estos son aspectos importantes que se deben tener en cuenta al considerar cmo SQL
Server administra los segmentos y dispositivos:

Si, por ejemplo, se asigna el espacio de los fragmentos en parte con create
database y, posteriormente, otras partes con alter database , cada fragmento
tendr una entrada en sysusages .
Cuando se asigna un fragmento adicional de dispositivo a una base de datos a la
que ya se ha asignado un fragmento de ese dispositivo, todos los segmentos
correlacionados con el fragmento existente se correlacionan con el nuevo.
Si utiliza alter database para aadir espacio en un dispositivo que es nuevo para
la base de datos, los segmentos system y default se correlacionan
automticamente con el nuevo espacio.

El tutorial comienza con una base de datos nueva, creada con un dispositivo para
objetos de la base de datos y otro dispositivo para el diario de transacciones:

create database mydata on bigdevice = 4


log on logdev = 2

Ahora, si ejecuta use mydata e inicia sp_helpdb , ver lo siguiente:


sp_helpdb mydata
name
db_size owner
dbid
created
status
---------- -------- --------- ------ ------------ --------------mydata
6.0 MB sa
4 May 27, 1993 no options set
device_fragments
---------------------bigdevice
logdev

size
------------4.0 MB
2.0 MB

usage
free kbytes
--------------- ----------data only
3408
log only
2032

device
---------------------bigdevice
bigdevice
logdev

segment
---------------------default
system
logsegment

Como todas las bases de datos recientemente creadas, mydata tiene los segmentos
llamados default , system y logsegment . Dado que la instruccin create database
utiliz log on , el logsegment se correlaciona con su propio dispositivo, logdev , y los
segmentos default y system se correlacionan con bigdevice .
Si aade espacio a mydata en los mismos dispositivos de base de datos y luego ejecuta
sp_helpdb de nuevo, ver entradas para los fragmentos aadidos:
use master
alter database mydata on bigdevice =
log on logdev = 1
use mydata
sp_helpdb mydata
name
db_size owner
dbid
---------- -------- --------- -----mydata
9.0 MB sa
4

created
status
------------ --------------May 27, 1993 no options set

device_fragments
---------------------bigdevice
bigdevice
logdev
logdev

size
------------2.0 MB
4.0 MB
1.0 MB
2.0 MB

usage
free kbytes
--------------- ----------data only
2048
data only
3408
log only
1024
log only
2032

device
---------------------bigdevice
bigdevice
logdev

segment
---------------------default
system
logsegment

Aada siempre espacio de diario al espacio de diario y espacio de datos al espacio de


datos. Si intenta asignar un segmento que ya est en uso para datos al diario, o
viceversa, SQL Server le indicar que utilice with override . No olvide que los
segmentos se correlacionan con dispositivos enteros, no slo con los fragmentos de
espacio. Si cambia alguna de las asignaciones de segmento en un dispositivo, el cambio
afecta a todos los fragmentos.

Cuando se asigna un nuevo dispositivo a la base de datos con alter database (uno que
no est en uso por la base de datos), los nuevos fragmentos se asignan automticamente:

A los segmentos system y default , si estn en la clusula on o si son dispositivos


predeterminados, o bien
Al segmento de diario, si estn en la clusula log on .

El ejemplo siguiente asigna un nuevo dispositivo de base de datos que no ha sido


utilizado por mydata :
use master
alter database mydata on newdevice =
use mydata
sp_helpdb mydata
name
db_size owner
dbid
---------- -------- --------- -----mydata
12.0 MB sa
4

3
created
status
------------ --------------May 27, 1993 no options set

device_fragments
---------------------bigdevice
bigdevice
logdev
logdev
newdevice

size
------------2.0 MB
4.0 MB
1.0 MB
2.0 MB
3.0 MB

usage
free kbytes
--------------- ----------data only
2048
data only
3408
log only
1024
log only
2032
data only
3072

device
---------------------bigdevice
bigdevice
logdev
newdevice
newdevice

segment
---------------------default
system
logsegment
default
system

Los segmentos default y system se correlacionan automticamente con el nuevo espacio.


En algunos casos, es conveniente utilizar nuevo espacio como almacenamiento
predeterminado para las instrucciones create table o create index . En ese caso, esta
asignacin es adecuada. Sin embargo, si aade espacio para asignar una tabla o ndice a
un segmento especfico (y, por lo tanto, a dispositivos especficos), desear reducir el
alcance de los segmentos system y default para omitir el nuevo fragmento y aadir su
propio nombre de segmento.
El ejemplo siguiente crea un segmento llamado new_space en newdevice :
sp_addsegment new_space, mydata, newdevice

Lo que sigue es slo la parte del informe de sp_helpdb que ha cambiado, la parte que
enumera la correlacin de segmentos:
device
segment
---------------------------- -----------------bigdevice
default
bigdevice
system
logdev
logsegment
newdevice
default

newdevice
newdevice

new_space
system

Observe que los segmentos default y system continan correlacionados con newdevice .
Si tiene previsto usar new_space para almacenar una tabla o ndice de usuario y obtener
una mejora de rendimiento, y desea garantizar que otros objetos de usuario no se
almacenen en el dispositivo de forma predeterminada, reduzca el alcance de los
segmentos default y system con sp_dropsegment :
sp_dropsegment system, mydata, newdevice
sp_dropsegment "default", mydata, newdevice

Las comillas de "default" son necesarias porque es una palabra reservada de TransactSQL.
Lo que sigue es slo la parte del informe de sp_helpdb que muestra la correlacin de
segmentos:
device
segment
---------------------------- -------------------bigdevice
default
bigdevice
system
logdev
logsegment
newdevice
new_space

Ahora slo new_space est correlacionado con newdevice . Los usuarios que creen
objetos pueden usar on new_space para situar una tabla o un ndice en el dispositivo
correspondiente a ese segmento. Dado que el segmento default no seala ese dispositivo
de base de datos, los usuarios que creen tablas e ndices sin usar la clusula on no los
situarn en el dispositivo especialmente preparado.
Si utiliza alter database en newdevice nuevamente, el nuevo fragmento de espacio
adquiere la misma correlacin de segmento que el fragmento existente de ese
dispositivo (es decir, slo el segmento new_space ).
En este punto, si utiliza create table y denomina new_space como segmento, obtendr
estos resultados de sp_help y sp_helpsegment :
create table mytabl (c1 int, c2 datetime)
on new_space
sp_help mytabl
Name
Owner
Type
----------------- ----------------- ---------------mytabl
dbo
user table
Data_located_on_segment
When_created
------------------------------ -------------------May 27 1993 3:21PM
Column_name
Type
Length Nulls
------------- --------- ------ ----c1
int
4
0
c2
datetime
8
0
Object does not have any indexes.
No defined keys for this object.

new_space

Default_name Rule_name
------------ ---------NULL
NULL
NULL
NULL

sp_helpsegment new_space
segment name
status
------- ------------------------------ -----3 new_space
0
device
size
free_pages
---------------------- -------------- ----------newdevice
3.0MB
1528
table_name
index_name
indid
--------------------- ---------------------- -----mytabl
mytabl
0

Segmentos e ndices agrupados


Como se mencion en "Creacin de ndices agrupados en los segmentos", si se crea una
tabla en un segmento y su ndice agrupado en un segmento distinto, la tabla se traslada
con su ndice. El ejemplo siguiente crea un ndice agrupado, sin especificar el nombre
de segmento, que usa la misma tabla recin creada en el segmento new_space del
ejemplo anterior. La verificacin de new_space despus del comando create index
muestra que ningn objeto permanece en el segmento:
/* No intente hacer esto */
create clustered index mytabl_cix
on mytabl(c1)
sp_helpsegment new_space
segment name
status
------- ------------------------------ -----3 myseg
0
device
size
free_pages
------------------- ---------------- ----------datadev2
2.0MB
1016

Si ha situado una tabla en un segmento y necesita crear un ndice agrupado, asegrese


de utilizar la clusula on segment_name , pues, de lo contrario, la tabla migrar al
segmento default .

Chapter 17

Verificacin de la consistencia de las bases de datos


En este captulo se describe cmo verificar la consistencia de las bases de datos usando
los comandos dbcc

Introduccin
El verificador de consistencia de base de datos ( dbcc ) es un conjunto de comandos de
utilidad que verifica la consistencia lgica y fsica de una base de datos. Utilice los
comandos dbcc :

Como parte del mantenimiento habitual de las bases de datos (verificaciones


peridicas realizadas por el administrador del sistema). Estas verificaciones

pueden detectar y, con frecuencia, corregir errores antes de que afecten la


capacidad de utilizar SQL Server por parte de los usuarios.
Para determinar el alcance de posibles daos despus de producido un error del
sistema.
Antes de realizar la copia de seguridad de una base de datos.
Si sospecha que una base de datos est daada. Por ejemplo, si el uso de una
tabla en particular genera el mensaje "Tabla corrupta", puede utilizar dbcc para
determinar si otras tablas de la base de datos estn daadas tambin.

La integridad de las estructuras internas de una base de datos depende de que el


administrador del sistema o el propietario de la base de datos verifiquen su consistencia
peridicamente. Dos funciones principales de dbcc son:

Verificar las estructuras de asignacin (comandos checkalloc , tablealloc y


indexalloc ).
Verificar el enlace de pginas y los punteros de datos a nivel de pgina y de fila
( checktable y checkdb ). "Conceptos de asignacin de pginas y objetos"
explica la asignacin de pginas y objetos, y el enlace de pginas.

Las secciones siguientes tratan:

La asignacin de pginas y objetos. Comprender cmo SQL Server administra la


asignacin de pginas y objetos, facilita la comprensin de lo que hacen los
comandos dbcc .
Los comandos dbcc : su sintaxis y lo que hacen.
Cundo y cmo utilizar los comandos dbcc .

Todos los comandos dbcc , excepto dbrepair y checkdb con la opcin fix , pueden
ejecutarse mientras la base de datos est activa.
Errores generados por problemas de consistencia de base de datos
Los errores generados por problemas de consistencia de base de datos suelen tener
nmeros de error entre 2500 y 2599 o entre 7900 y 7999. Estos y otros mensajes que
pueden ser consecuencia de problemas de consistencia de base de datos (como el
mensaje 605) pueden provocar alarma, con frases como "Tabla corrupta" o "El sector no
est dentro del segmento". Muchos de estos mensajes indican problemas de consistencia
de bases de datos graves, mientras que otros no son apremiantes. Algunos requerirn
ayuda del Servicio de Asistencia Tcnica, pero muchos pueden ser resueltos mediante:

La ejecucin de los comandos dbcc que tienen la opcin fix .


Las instrucciones de la Gua de Solucin de Problemas de SQL Server , que
contiene indicaciones detalladas para resolver muchos errores de d bcc .

Cualesquiera sean las tcnicas necesarias para resolver los problemas, las soluciones son
mucho ms sencillas cuando se encuentra pronto el problema, poco despus de
originada la corrupcin o inconsistencia. En pginas de datos que no se usan con
frecuencia, como una tabla que slo se actualiza una vez al mes, pueden existir
problemas de consistencia. dbcc puede encontrar (y a menudo resolver) estos problemas

antes de que un usuario necesite los datos. La nica forma de localizarlos pronto es
ejecutar comandos dbcc con frecuencia.
Si se vuelca una base de datos que contiene errores de consistencia y posteriormente se
carga ese volcado, el resultado ser una base de datos con problemas de consistencia, ya
que un volcado es una imagen lgica de las pginas de datos.
Permisos para ejecutar dbcc
Slo el propietario de una tabla puede ejecutar dbcc con las opciones checktable ,
fix_text y reindex . Slo el propietario de una base de datos puede usar las opciones
checkdb , checkalloc , checkcatalog , indexalloc y tablealloc . La opcin dbrepair
slo puede utilizarla el administrador del sistema.
Tamaos de memoria intermedia de dbcc
dbcc utiliza diferentes tamaos de memoria intermedia dependiendo del tipo de
comando dbcc que se ejecute y de la configuracin de SQL Server. Los tamaos de
memoria intermedia que se usan son estos:

Si no se han configurado cachs con nombre para SQL Server y el parmetro de


configuracin number of extent i/o buffers est definido como 0, todos los
comandos dbcc usan memorias intermedias de E/S de 2K.
Si se ha definido el parmetro de configuracin number of extent i/o buffers
con un valor de 1 o ms, dbcc checkalloc y dbcc tablealloc usan esas memorias
intermedias de E/S de sector, si estn disponibles cuando se ejecuta el comando
dbcc . En ese caso, los comandos dbcc utilizan una o ms memorias intermedias
de 8K.
Si se ha configurado un cach con nombre con un banco de memoria intermedia
de 16K para una o ms tablas, dbcc checkdb y dbcc checktable utilizan dicho
banco al verificar la consistencia de esas tablas. Tenga en cuenta, no obstante,
que el banco de 16K se utiliza slo al tener acceso a la tabla en s. Cuando se
verifican los ndices de la tabla, dbcc usa slo memorias intermedias de 2K.

Consulte "number of extent i/o buffers" para obtener ms informacin sobre el


parmetro de configuracin number of extent i/o buffers .

Conceptos de asignacin de pginas y objetos


Cuando se inicializa un dispositivo de base de datos, el comando disk init divide el
nuevo espacio en unidades de asignacin de 256 pginas de datos de 2K. La primera
pgina de cada unidad es una pgina de asignacin , que controla el uso de todas las
pginas de la unidad de asignacin. Las pginas de asignacin tienen una ID de objeto
de 99; no son objetos reales de base de datos y no aparecen en las tablas del sistema,
pero los errores detectados por dbcc en las pginas de asignacin mencionan este valor.
Cuando una tabla o un ndice requieren espacio, SQL Server asigna un bloque de 8
pginas de 2K al objeto. Este bloque de 8 pginas se denomina sector . Cada unidad de
asignacin de 256 pginas contiene 32 sectores. SQL Server utiliza los sectores como
una unidad de administracin de espacio para asignar y desasignar espacio:

Cuando se crea una tabla o un ndice, SQL Server asigna un sector para el
objeto.
Cuando se aaden filas en una tabla existente, si las pginas existentes estn
llenas, SQL Server asigna otra pgina. Si todas las pginas de un sector estn
llenas, SQL Server asigna un sector adicional.
Cuando se omite una tabla o un ndice, SQL Server desasigna los sectores que
ocupaba.
Cuando se eliminan suficientes filas de una tabla como para que disminuya en
una pgina, SQL Server desasigna la pgina. Si la tabla disminuye el sector,
SQL Server desasigna el sector.

Cada vez que se asigna o desasigna espacio en un sector, SQL Server registra el evento
en la pgina de asignacin que controla los sectores de ese objeto. Esto proporciona un
mtodo rpido de controlar las asignaciones de espacio en la base de datos, ya que los
objetos pueden menguar o crecer sin mucha sobrecarga.
La Figura 17-1 muestra cmo se configuran las pginas de datos dentro de los sectores y
las unidades de asignacin en las bases de datos de SQL Server.
Figure 17-33: Administracin de pginas con sectores
dbcc proporciona el comando checkalloc , para verificar todas las pginas de
asignacin de la base de datos, y los comandos indexalloc y tablealloc , para verificar
la asignacin de objetos especficos de base de datos.
dbcc checkalloc verifica todas las pginas de asignacin (pgina 0 y todas las divisibles
por 256) de una base de datos y comunica la informacin de asignacin que encuentra
ah.
Mapa de asignacin de objetos (OAM)
Cada tabla y cada ndice de una tabla tienen un Mapa de asignacin de objetos ( OAM
). El OAM se almacena en las pginas asignadas a la tabla o al ndice, y se verifica
cuando es necesario una nueva pgina para el ndice o la tabla. Una sola pgina OAM
puede contener la correlacin de asignaciones de 2000 a 63.750 pginas de datos o
ndice.
Las pginas OAM sealan la pgina de asignacin para cada unidad de asignacin en
que el objeto utiliza espacio. Las pginas de asignacin, a su vez, controlan la
informacin sobre el uso de sectores y pginas dentro de la unidad de asignacin. En
otras palabras, si la tabla titles est almacenada en los sectores 24 y 272, la pgina OAM
de la tabla titles seala las pginas 0 y 256.
La Figura 17-2 muestra un objeto almacenado en 4 sectores, numerados como 0, 24,
272 y 504. El OAM se almacena en la primera pgina del primer segmento. En este
caso, dado que la pgina de asignacin ocupa la pgina 0, el OAM se sita en la pgina
1.
Este OAM seala dos pginas de asignacin: la pgina 0 y la 256.

Estas pginas de asignacin controlan las pginas usadas en cada sector utilizado por
todos los objetos con espacio de almacenamiento en la unidad de asignacin. En el caso
del objeto de este ejemplo, controla la asignacin y desasignacin de pginas en los
sectores 0, 24, 272 y 504.
Figure 17-34: Punteros de pgina OAM y de pgina de asignacin
Los comandos dbcc checkalloc y dbcc tablealloc examinan la informacin de esta
pgina OAM, adems de verificar el enlace de pginas, como se describe en la seccin
siguiente.
Enlace de pginas
Una vez que se ha asignado una pgina a una tabla o un ndice, esa pgina se enlaza con
otras pginas usadas para el mismo objeto. La Figura 17-3 ilustra este enlace. Cada
pgina contiene un encabezado que incluye el nmero de la pgina precedente ("prev")
y de la siguiente ("sig"). Cuando se asigna una nueva pgina, la informacin de
encabezado en las pginas circundantes cambia para sealar a esa pgina. dbcc
checktable y dbcc checkdb verifican el enlace de pginas. dbcc checkalloc ,
tablealloc y indexalloc comparan el enlace de pginas con la informacin de la pgina
de asignacin.
Figure 17-35: Cmo se enlaza una pgina recin asignada con otras pginas

Comandos dbcc individuales


dbcc checktable
La sintaxis de dbcc checktable es:
dbcc checktable ({
[, skip_ncindex] )

table_name

table_id

El comando dbcc checktable verifica la tabla especificada para ver que:

Las pginas de ndice y datos estn enlazadas correctamente.


Los ndices estn ordenados correctamente.
Todos los punteros sean consistentes.
Las filas de datos de cada pgina tengan entradas en la primera pgina OAM
cuyas ubicaciones respectivas en la pgina coincidan.

La opcin skip_ncindex permite saltar la verificacin de enlace de pginas, de punteros


y de criterio de ordenacin en ndices no agrupados. El enlace y los punteros de ndices
agrupados y las pginas de datos son esenciales para la integridad de las tablas. Si SQL
Server informa sobre problemas con el enlace de pginas o los punteros, es posible
omitir y volver a crear los ndices agrupados con facilidad.
dbcc checktable puede utilizarse con el nombre de la tabla o con su ID de objeto. La
tabla sysobjects almacena esa informacin en las columnas name e id .

El siguiente es un ejemplo de informe de una tabla no daada:


dbcc checktable(titles)
go
Checking titles
El nmero total de pginas de datos en una tabla es 3.
La tabla tiene 18 filas de datos.
Se complet la ejecucin de DBCC. Si DBCC imprimi mensajes de error,
llame al Administrador del Sistema (SA).

Si la tabla tiene particiones, dbcc checktable verifica el enlace de pginas de datos para
cada particin. Por ejemplo:
dbcc checktable(historytab)
go
Checking historytab
The total number of pages in partition 1 is 20.
The total number of pages in partition 2 is 17.
The total number of pages in partition 3 is 19.
The total number of pages in partition 4 is 17.
The total number of pages in partition 5 is 20.
The total number of pages in partition 6 is 16.
The total number of pages in partition 7 is 19.
The total number of pages in partition 8 is 17.
The total number of pages in partition 9 is 19.
The total number of pages in partition 10 is 16.
El nmero total de pginas de datos en una tabla es 190.
La tabla tiene 1536 filas de datos.
Se complet la ejecucin de DBCC. Si DBCC imprimi mensajes de error,
llame al Administrador del Sistema (SA).

Consulte "Partitioning and Unpartitioning Tables" de la Gua de Mejora de Rendimiento


y Afinacin para obtener ms informacin sobre las particiones.
Para verificar una tabla que no est en la base de datos actual, debe suministrarse el
nombre de la base de datos. Para verificar una tabla de propiedad de otro objeto, indique
el nombre del propietario. Cualquier nombre de tabla calificado debe incluirse entre
comillas:
dbcc checktable("pubs2.newuser.testtable")

Estos son los problemas que dbcc checktable descubre:

Si el enlace de pginas es incorrecto, dbcc checktable muestra un mensaje de


error.
Si el criterio de ordenacin ( sysindexes.soid ) o el juego de caracteres (
sysindexes.csid ) de una tabla que contiene columnas con tipos de datos char o
varchar es incorrecto, y el criterio de ordenacin de la tabla es incompatible con
el predeterminado de SQL Server, dbcc checktable corrige los valores para la
tabla. Slo el criterio de ordenacin binario es compatible con todos los juegos
de caracteres.
Note: Si se cambia el criterio de ordenacin, los ndices de usuario basados en
caracteres se marcan como de "slo lectura" y deben verificarse y reconstruirse
si fuera necesario. Consulte el Captulo 12, "Juegos de caracteres, ordenacin e

idioma de los mensajes", para obtener ms informacin sobre el cambio de


criterios de ordenacin.

Si las filas de datos no se tienen en cuenta en la primera pgina OAM del objeto,
dbcc checktable actualiza el nmero de filas en esa pgina. Esto nunca es un
problema grave, sino una tarea rpida de mantenimiento. La funcin incorporada
rowcnt utiliza este valor para proporcionar rpidas estimaciones de filas en
procedimientos como sp_spaceused .

dbcc checkdb
La sintaxis de dbcc checkdb es:
dbcc checkdb [(

database_name

[, skip_ncindex]) ]

El comando dbcc checkdb ejecuta las mismas verificaciones que dbcc checktable en
cada tabla de la base de datos especificada. Si no se suministra el nombre de una base de
datos, dbcc checkdb verifica la actual. dbcc checkdb devuelve mensajes similares a los
generados por dbcc checktable y realiza el mismo tipo de correcciones.
Si se especifica el modo opcional skip_ncindex , dbcc checkdb no verifica ninguno de
los ndices no agrupados de las tablas de usuario de la base de datos.
dbcc checkcatalog
La sintaxis de dbcc checkcatalog es:
dbcc checkcatalog [(

database_name

)]

El comando dbcc checkcatalog verifica la consistencia dentro y entre las tablas del
sistema de una base de datos en particular. Si no se suministra el nombre de una base de
datos, dbcc checkcatalog verifica la actual.
Por ejemplo, verifica que:

Todo tipo incluido en syscolumns tenga una entrada correspondiente en systypes


.
Toda tabla y vista de sysobjects tenga al menos una columna en syscolumns .
El ltimo punto de verificacin de syslogs sea vlido.

Tambin enumera los segmentos definidos para uso de la base de datos.


El siguiente es un ejemplo de salida de dbcc checkcatalog :
dbcc checkcatalog (testdb)
Checking testdb
The following segments have been defined for database 5 (database
name testdb).
virtual start addr
size
segments
-------------------------------------------------33554432
4096
0
1

16777216
102
2
Se complet la ejecucin de DBCC. Si DBCC imprimi mensajes de error,
llame al Administrador del Sistema.

dbcc checkalloc
La sintaxis de dbcc checkalloc es:
dbcc checkalloc [(

database_name

[, fix | nofix] )]

El comando dbcc checkalloc verifica la base de datos especificada para ver que:

Todas las pginas estn asignadas correctamente.


Ninguna pgina est asignada sin estar en uso.
Ninguna pgina est en uso sin estar asignada.

Si no se proporciona el nombre de una base de datos, dbcc checkalloc verifica la actual.


El modo predeterminado de dbcc checkalloc es nofix . Para utilizar dbcc checkalloc
con la opcin fix , primero es necesario poner la base de datos en modo de usuario nico
con el comando:
sp_dboption dbname, "single user", true

Este comando slo puede ejecutarse cuando nadie est usando la base de datos.
dbcc checkalloc informa la cantidad de espacio asignado y utilizado. La salida de dbcc
checkalloc consta de un bloque de datos para cada tabla, incluyendo las tablas del
sistema y los ndices de cada tabla. Por cada tabla o ndice, informa el nmero de
pginas y sectores utilizados. La informacin de las tablas se comunica en forma de
INDID=0 o de INDID=1. Las tablas sin ndices agrupados tienen INDID = 0 (por
ejemplo, salesdetail , ms abajo). Las tablas con ndices agrupados tienen INDID=1, y
el informe de las mismas incluye informacin sobre el nivel de datos y de ndice.
Consulte el informe de titleauthor y titles , ms abajo. Los ndices no agrupados se
numeran consecutivamente, comenzando en INDID=2.
Esto es parte de un informe sobre pubs2 que muestra la salida para tres tablas:
***************************************************************
TABLE: salesdetail
OBJID = 144003544
INDID=0 FIRST=297
ROOT=299
SORT=0
Data level: 0. 3 Data Pages in 1 extents.
INDID=2 FIRST=289
ROOT=290
SORT=1
Indid
: 2. 3 Index Pages in 1 extents.
INDID=3 FIRST=465
ROOT=466
SORT=1
Indid
: 3. 3 Index Pages in 1 extents.
TOTAL # of extents = 3
***************************************************************
TABLE: titleauthor
OBJID = 176003658
INDID=1 FIRST=433
ROOT=425
SORT=1
Data level: 1. 1 Data Pages in 1 extents.
Indid
: 1. 1 Index Pages in 1 extents.
INDID=2 FIRST=305
ROOT=305
SORT=1
Indid
: 2. 1 Index Pages in 1 extents.

INDID=3

FIRST=441
ROOT=441
SORT=1
Indid
: 3. 1 Index Pages in 1 extents.
TOTAL # of extents = 4
***************************************************************
TABLE: titles
OBJID = 208003772
INDID=1 FIRST=417
ROOT=409
SORT=1
Data level: 1. 3 Data Pages in 1 extents.
Indid
: 1. 1 Index Pages in 1 extents.
INDID=2 FIRST=313
ROOT=313
SORT=1
Indid
: 2. 1 Index Pages in 1 extents.
TOTAL # of extents = 3
***************************************************************

En su modo predeterminado ( nofix ), dbcc checkalloc no corrige errores de asignacin.


En modo fix , puede solucionar todos los errores de asignacin resueltos por d bcc
tablealloc , y tambin puede corregir las pginas que permanecen asignadas a objetos
omitidos de la base de datos.
Dado que la base de datos debe estar en modo de usuario nico para utilizar la opcin
fix , es posible ejecutar dbcc checkalloc en modo nofix y usar dbcc tablealloc o dbcc
indexalloc , que se describen ms abajo, con la opcin fix para corregir errores en tablas
o ndices individuales.
dbcc tablealloc
La sintaxis de dbcc tablealloc es:
dbcc tablealloc ({ table_name
|
[, {full | optimized | fast | null}
[, fix | nofix]])

table_id

Note: fix o nofix pueden especificarse slo si se incluye un valor para el tipo de informe
( full , optimized , fast o null ).
Este comando realiza las mismas verificaciones que dbcc checkalloc en una sola tabla.
Es posible especificar el nombre de la tabla o su ID de objeto (la columna id de
sysobjects ).
Con dbcc tablealloc pueden generarse tres tipos de informes: full , optimized y fast :

La opcin full equivale a dbcc checkalloc a nivel de tabla; informa de todos los
tipos de errores de asignacin .
La opcin optimized produce un informe basado en las pginas de asignacin
enumeradas en las pginas del mapa de asignacin de objetos (OAM) de la tabla.
No informa ni puede corregir sectores no referenciados en las pginas de
asignacin que no estn presentes en las pginas OAM. Si el tipo de informe no
se indica en el comando, o si se indica n ull , optimized es el informe
predeterminado.
La opcin fast produce un informe de excepciones de pginas referenciadas pero
no asignadas en el sector (errores del nivel 2521). No produce un informe de
asignaciones.

La Tabla 17-1 en la compara estas opciones y otros comandos dbcc en cuanto a


velocidad, profundidad, bloqueo y aspectos del rendimiento.

Correccin de errores de asignacin: opcin fix | nofix


La opcin fix | nofix determina si tablealloc corrige o no los errores de asignacin
encontrados en la tabla. El valor predeterminado para todas las tablas de usuario es fix ;
para las del sistema, es nofix. Para utilizar la opcin fix con las tablas del sistema, antes
es necesario poner la base de datos en modo de usuario nico.
Note: El nmero de errores corregidos al ejecutarse dbcc tablealloc y dbcc indexalloc
con la opcin fix , depende del tipo de informe ( full , optimized o fast ) que se solicite.
La ejecucin de dbcc tablealloc con la opcin full soluciona ms errores que si se
ejecuta con la opcin optimized o fast .
La salida del comando dbcc tablealloc con la opcin fix muestra los errores de
asignacin encontrados, as como las correcciones realizadas. Este es un ejemplo de un
mensaje de error que aparece tanto si se emplea la opcin fix como si no se usa:
Msg 7939, Level 22, State 1:
Line 2:
Tabla corrupta: Falta entrada en el OAM para id de objeto 144003544
indid 0 para pgina de asignacin 2560.

El mensaje siguiente, que aparece cuando se utiliza la opcin fix , indica que se ha
restaurado la entrada ausente:
Se insert la entrada de OAM que faltaba.

dbcc indexalloc
Esta es la sintaxis de dbcc indexalloc :
dbcc indexalloc ( { table_name
|
[, {full | optimized | fast | null}
[, fix | nofix]])

table_id

},

index_id

Note: Slo puede especificarse fix o nofix si se incluye un valor para el tipo de informe
( full , optimized , fast o null ).
El comando dbcc indexalloc verifica el ndice especificado para ver que:

Todas las pginas estn asignadas correctamente.


Ninguna pgina est asignada sin estar en uso.
Ninguna pgina est en uso sin estar asignada.

Esta es una versin a nivel de ndice de dbcc checkalloc , que proporciona las mismas
verificaciones de integridad en un ndice individual. Es posible especificar el nombre de
la tabla o su ID de objeto (la columna id de sysobjects) y la indid del ndice en
sysindexes . dbcc checkalloc y dbcc indexalloc incluyen la ID del ndice en su salida.
dbcc indexalloc produce los mismos tres tipos de informes que dbcc tablealloc : full ,
optimized y fast (consulte t ablealloc ). La opcin fix | nofix funciona igual en dbcc
indexalloc que en dbcc tablealloc.

dbcc dbrepair
Esta es la sintaxis de dbcc dbrepair :
dbcc dbrepair (

database_name

, dropdb)

El comando dbcc dbrepair dropdb omite una base de datos daada. El comando drop
database de Transact-SQL no funciona en una base de datos que no pueda recuperarse
o usarse. Ejecute la instruccin dbrepair desde la base de datos master . Ningn
usuario, incluido el de dbrepair , puede estar usando la base de datos cuando se la
omite.
dbcc reindex
El administrador del sistema o el propietario de la tabla debern ejecutar dbcc reindex
despus de cambiar los criterios de ordenacin de SQL Server. Esta es la sintaxis de
dbcc reindex :
dbcc reindex ({

table_name

table_id

})

El comando dbcc reindex verifica la integridad de los ndices de las tablas de usuario
ejecutando una versin "rpida" de dbcc checktable . dbcc reindex omite y
reconstruye los ndices que sospecha que estn corruptos (es decir, el orden en que los
ndices ordenan los datos no es consistente con el nuevo criterio de ordenacin). Para
obtener ms informacin, consulte el Captulo 12, "Juegos de caracteres, ordenacin e
idioma de los mensajes".
dbcc fix_text
El comando dbcc fix_text actualiza los valores de tipo text despus de cambiarse el
juego de caracteres de SQL Server a un juego de caracteres de varios bytes . Esta es la
sintaxis de dbcc fix_text :
dbcc fix_text ({

table_name

table_id

})

Cambiar a un juego de caracteres de varios bytes complica la administracin de los


datos text . Dado que un valor text puede ser tan grande como para ocupar varias
pginas, SQL Server debe poder administrar caracteres que puedan expandirse a ambos
lados de los lmites de pgina. Para ello, SQL Server requiere informacin adicional
sobre cada una de las pginas de texto. El administrador del sistema o el propietario de
la tabla deben ejecutar dbcc fix_text en cada tabla que contenga datos text para calcular
los nuevos valores necesarios. Consulte el Captulo 12, "Juegos de caracteres,
ordenacin e idioma de los mensajes", para obtener ms informacin.

Cmo, cundo y por qu usar los comandos dbcc


Las secciones siguientes comparan los comandos dbcc , ofrecen sugerencias de
planificacin y estrategias para evitar efectos adversos sobre el rendimiento, y
proporcionan informacin adicional sobre la salida de dbcc .

Comparacin de los comandos dbcc


Ejecute los siguientes comandos de dbcc siempre que planifique el mantenimiento de
las bases de datos:

dbcc checkdb o dbcc checktable


dbcc checkalloc o dbcc indexalloc y dbcc tablealloc
dbcc checkcatalog

En general, cuanto ms minuciosamente el comando dbcc verifica la integridad de un


objeto o base de datos, ms lento es. La Tabla 17-1 compara la velocidad, profundidad,
nivel de verificacin, bloqueo y otras implicaciones de estos comandos sobre el
rendimiento. Tenga en cuenta que dbcc checktable (y dbcc checkdb ) y dbcc
checkcatalog realizan tipos de verificaciones de integridad distintos a los de dbcc
checkalloc , dbcc tablealloc , y dbcc indexalloc .
Tabla 17-1: Comparacin de los comandos dbcc
Comando y
opcin

checktable
checkdb

Nivel

Bloqueo y
rendimiento

Velocidad

Bloqueo compartido
Cadenas de
de tabla; dbcc
pginas, criterio checkdb bloquea una
de ordenacin, tabla cada vez y
Lenta
filas de datos
libera el bloqueo
para todos los
despus de que
ndices
termina de verificar
esa tabla

Cadenas de
pginas, criterio
de ordenacin,
filas de datos
Igual que el anterior
para tablas e
con
skip_ncindex ndices
agrupados

checktable
checkdb

Hasta un 40%
ms rpido que
sin la opcin
skip_ncindex

Minuciosidad

Elevada

Media

Cadenas de
pginas

Sin bloqueo; realiza


muchas E/S y puede
saturar las llamadas
de E/S; slo las
Lenta
pginas de asignacin
se almacenan en
cach

Elevada

tablealloc full
Cadenas de
indexalloc
pginas
full

Bloqueo compartido
de tabla; realiza
muchas E/S; slo las
Lenta
pginas de asignacin
se almacenan en
cach

Elevada

tablealloc

Bloqueo compartido

Media

checkalloc

Pginas de

Moderada

optimized
indexalloc
optimized

tablealloc
fast
indexalloc
fast

asignacin

Pginas OAM

Filas de las
checkcatalog tablas del
sistema

de tabla; realiza
muchas E/S; slo las
pginas de asignacin
se almacenan en
cach
Bloqueo compartido
de tabla

Muy rpida

Reducida

Bloqueos
compartidos de
pgina en catlogos
del sistema; libera el
bloqueo despus de
verificar cada pgina;
muy pocas pginas se
almacenan en el
cach

Planificacin del mantenimiento de las bases de datos en su sitio


Varios factores determinan la frecuencia con que debera ejecutar comandos dbcc en las
bases de datos de su sitio y cules necesita ejecutar:

Cundo se utilizan ms intensamente las bases de datos? Ocurre esto, en


especial, entre las 9:00 a.m. y las 6:00 p.m., o las 24 horas del da?Si su SQL
Server se utiliza principalmente entre las 9:00 a.m. y las 6:00 p.m., de lunes a
viernes, puede ejecutar las verificaciones dbcc de noche y durante los fines de
semana, para que no tengan un efecto significativo sobre los usuarios. Si las
tablas no son muy grandes, puede ejecutar un conjunto completo de comandos
dbcc con bastante frecuencia.Si su SQL Server se utiliza intensamente las 24
horas del da, los 7 das de la semana, ser conveniente planificar un ciclo de
verificaciones de tablas e ndices individuales usando dbcc checktable , dbcc
tablealloc y dbcc indexalloc . Al final del ciclo, cuando todas las tablas se
hayan verificado, puede ejecutar dbcc checkcatalog y realizar una copia de
seguridad de la base de datos.Algunos sitios con demandas de alto rendimiento
24 horas al da ejecutan verificaciones dbcc :
o Volcando la base de datos a cinta.
o Cargando los volcados en un SQL Server aparte.
o Ejecutando comandos dbcc en la base de datos copiada.
o Ejecutando comandos dbcc con opciones fix en los objetos adecuados de
la base de datos original, si se detectan errores que pueden repararse con
opciones fix .
Dado que el volcado es una copia lgica de las pginas de la base de datos, los
problemas de la base de datos original se duplican en la copia volcada.Ejecute d
bcc checkdb con regularidad en toda la base de datos, o d bcc checktable en
cada tabla de la base de datos. Por razones de rendimiento, puede ejecutar los
comandos a nivel de objeto, en lugar de efectuar la verificacin a nivel de la

base de datos,. dbcc checkdb adquiere bloqueos sobre los objetos mientras los
verifica, y no es posible controlar el orden en que los verifica. Por ejemplo, si
tiene en ejecucin una aplicacin que utiliza table4 , table5 y table6 , y las
verificaciones dbcc duran 20 minutos, la aplicacin podra estar bloqueada por
mucho tiempo mientras se utiliza dbcc checkdb .Con los comandos de nivel de
tabla, es posible repartir las verificaciones entre tablas que no estn en uso en la
aplicacin, permitiendo as el acceso de la aplicacin entre verificaciones:
dbcc
dbcc
dbcc
dbcc
dbcc

checktable(table4)
checktable(table1) /*no en la aplicacin*/
checktable(table5)
checktable(table2) /*no en la aplicacin*/
checktable(table6)

Con qu frecuencia realiza copias de seguridad de las bases de datos con dump
database ?Cuanto ms frecuentes sean las copias de seguridad de las bases de
datos y los volcados de los diarios de transacciones, ms datos pueden
recuperarse en caso de fallo. Usted y los usuarios deben decidir cuntos datos
estn dispuestos a perder en caso de desastre y desarrollar un plan de volcados
para apoyar esa decisin. Despus de planificar los volcados, decida cmo
incorporar los comandos de dbcc en esa programacin.Un momento ideal para
volcar una base de datos es despus de realizar una verificacin completa de esa
base de datos usando dbcc checkalloc , dbcc checkcatalog y dbcc checkdb . Si
estos comandos no descubren ningn error en la base de datos, sabr que la
copia de seguridad contiene una base de datos limpia. Para automatizar este
proceso, puede usar guiones, enviando la salida a un archivo y empleando un
guin del sistema operativo para buscar errores en el archivo. Utilice dbcc
tablealloc o indexalloc en tablas individuales para corregir los errores de
asignacin comunicados por dbcc checkalloc .
Cuntas tablas contienen datos cruciales y con qu frecuencia cambian esos
datos? Cun grandes son esas tablas?Si slo hay pocas tablas con datos
cruciales o con datos que cambian a menudo, ser conveniente ejecutar los
comandos dbcc de nivel de tabla y de ndice con ms frecuencia en esas tablas.

Qu buscar en la salida de dbcc


La salida de la mayora de los comandos dbcc incluye informacin que identifica el
objeto u objetos que se verifican, y mensajes de error que indican qu problemas, si los
hubiera, encuentra el comando en el objeto. Cuando dbcc tablealloc y dbcc indexalloc
se ejecutan con la opcin predeterminada fix , la salida tambin indica las reparaciones
que el comando realiza. El siguiente es un ejemplo comentado de la salida de dbcc
tablealloc para una tabla con un error de asignacin:
dbcc tablealloc(table5)
Informacin de
sysindexes
sobre el objeto que se verifica:
TABLE: table5
OBJID = 144003544
INDID=0 FIRST=337
ROOT=2587
SORT=0
Mensaje de error:
Msg 7939, Level 22, State 1:
Line 2:
Tabla corrupta: Falta entrada en el OAM para id de objeto
144003544 indid 0 para pgina de asignacin 2560.
Mensaje que indica
la correccin de
l error
:

Se insert la entrada de OAM que faltaba.


Nivel de datos: 0. 67 Pginas de datos en 9 sectores.
Informe de
dbcc
sobre
a
signacin de pginas:
N TOTAL de sectores = 9
Pgina asig 256 (n de sector=1 pginas usadas=8 pginas de ref=8)
EXTID:560 (Pgina asig: 512) inicializada. Sigue el sector:
NEXT=0 PREV=0 OBJID=144003544 ALLOC=0xff DEALL=0x0 INDID=0 STATUS=0x0
Pgina asig 512 (n de sector=2 pginas usadas=8 pginas de ref=8)
Pgina 864 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0x1)
Pgina 865 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0x3)
Pgina 866 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0x7)
Pgina 867 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0xf)
Pgina 868 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0x1f)
Pgina 869 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0x3f)
Pgina 870 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0x7f)
Pgina 871 asignada (Pgina asig: 768 ID de sector: 864 Mscara asig:
0xff)
Pgina asig 768 (n de sector=1 pginas usadas=8 pginas de ref=8)
Pgina asig 1024 (n de sector=1 pginas usadas=8 pginas de ref=8)
Pgina asig 1280 (n de sector=1 pginas usadas=8 pginas de ref=8)
Pgina asig 1536 (n de sector=1 pginas usadas=8 pginas de ref=8)
Pgina asig 1792 (n de sector=1 pginas usadas=8 pginas de ref=8)
Pgina asig 2048 (n de sector=1 pginas usadas=8 pginas de ref=8)
(Salida eliminada)
Informacin sobre
r
ecursos utilizados:
Statistical information for this run follows:
Total # of pages read = 68
Total # of pages found cache = 68
Total # of physical reads = 0
Total # of saved I/O = 0
Mensaje que se imprime al terminar el comando
dbcc
:
Se complet la ejecucin de DBCC. Si DBCC imprimi mensajes de error,
llame al Administrador del Sistema (SA).

Chapter 18

Desarrollo de un plan de copias de seguridad y recuperacin


SQL Server tiene procedimientos de recuperacin automtica para proteger el sistema
de cortes elctricos y fallos de la computadora. Para protegerse de fallos de medios,
haga copias de seguridad peridicas y frecuentes de las bases de datos.
Este captulo es el primero de una serie de cuatro captulos sobre c opia s de seguridad
y r ecuperacin , y proporciona informacin para facilitar el desarrollo de un plan de
copias de seguridad y recuperacin. El captulo, que proporciona una descripcin
general de los procesos de copia de seguridad y recuperacin de SQL Server, incluye
los temas siguientes:

Seguimiento de cambios en las bases de datos

SQL Server utiliza transacciones para hacer el seguimiento de todos los cambios en las
bases de datos. Las transacciones son las unidades de trabajo de SQL Server. Una
transaccin consta de una o ms instrucciones de Transact-SQL que tienen xito o fallan
como unidad.
Cada instruccin de SQL que modifica datos se considera una transaccin . Los
usuarios tambin pueden definir transacciones incluyendo una serie de instrucciones
dentro de un bloque begin transaction...end transaction . Para obtener ms
informacin sobre las transacciones, consulte "Transacciones" en el Manual de
Referencia de SQL Server .
Cada base de datos tiene su propio diario de transacciones (la tabla del sistema syslogs
), que registra automticamente toda transaccin realizada por cada usuario de la base
de datos. No es posible desactivar el registro de las transacciones.
El diario de transacciones es un registro de escritura anticipada . Cuando un usuario
ejecuta una instruccin que modifica la base de datos, SQL Server escribe
automticamente los cambios en el diario. Despus de registrados todos los cambios de
una instruccin en el diario, se escriben en una copia en cach de la pgina de datos. La
pgina de datos permanece en el cach hasta que se necesite la memoria para otra
pgina de la base de datos. En ese momento, se escribe en el disco.
Si no se completa alguna de las instrucciones de una transaccin, SQL Server anula
todos los cambios realizados por la transaccin. SQL Server escribe un registro de "fin
de transaccin" en el diario al final de cada transaccin, indicando el estado (xito o
fallo) de la transaccin.
Obtencin de informacin del diario de transacciones
El diario de transacciones contiene suficiente informacin sobre cada transaccin para
garantizar su recuperacin. Use el comando dump transaction para copiar la
informacin que contiene a cinta o disco. Emplee sp_spaceused syslogs para verificar
el tamao del diario o sp_helpsegment logsegment para verificar el espacio disponible
para el crecimiento del diario.
Warning! Nunca utilice comandos insert , update o delete para modificar syslogs .

Sincronizacin de una base de datos y su diario de transacciones: puntos


de verificacin
Un punto de verificacin escribe todas las pginas sucias (las modificadas en memoria,
pero no en disco, desde el ltimo punto de verificacin) en el dispositivo de base de
datos. El mecanismo automtico de punto de verificacin de SQL Server garantiza que
las pginas de datos modificadas por las transacciones terminadas se escriban con
regularidad desde el cach al dispositivo de base de datos. La sincronizacin de la base
de datos y su diario de transacciones reduce el tiempo que se tarda en recuperar la base
de datos despus de un fallo del sistema. La Figura 11-1 pgina 11-20 ilustra el proceso
de punto de verificacin.
Definicin del intervalo de recuperacin

Normalmente, el proceso de recuperacin automtica dura entre varios segundos y


varios minutos por base de datos. Ese tiempo depende del tamao de la base de datos,
del tamao del diario de transacciones, y del nmero y tamao de las transacciones que
hay que consignar o revertir.
Utilice el parmetro de configuracin recovery interval in minutes para especificar, en
minutos, el mximo tiempo de recuperacin permisible. SQL Server ejecutar puntos de
verificacin automticos con suficiente frecuencia para recuperar la base de datos en ese
periodo de tiempo.
Utilice sp_configure para obtener un informe sobre el intervalo de recuperacin actual:
sp_configure "recovery interval in minutes"

El valor predeterminado, 5, permite la recuperacin en un periodo de 5 minutos por base


de datos. Utilice sp_configure "recovery interval in minutes" para cambiar el
intervalo de recuperacin. Por ejemplo, para definirlo con 3 minutos, ejecute este
comando:
sp_configure "recovery interval in minutes", 3

Note: El intervalo de recuperacin no tiene efecto alguno sobre las transacciones


prolongadas y apenas registradas en el diario (como create index ) que estn activas
cuando SQL Server falla. Es posible que estas transacciones demoren tanto tiempo para
revertirse como el que tardaron en realizarse. Para evitar demoras prolongadas, vuelque
cada base de datos inmediatamente despus de crear un ndice en una de sus tablas.
Procedimiento de punto de verificacin automtico
Aproximadamente una vez por minuto, la tarea de punto de verificacin se "reactiva" y
verifica cada base de datos del servidor para ver cuntos registros se han aadido en el
diario de transacciones desde el ltimo punto de verificacin. Si el servidor estima que
el tiempo requerido para recuperar esas transacciones es mayor que el intervalo de
recuperacin de la base de datos, SQL Server ejecuta un punto de verificacin.
Las pginas modificadas se escriben desde el cach a los dispositivos de base de datos,
y el evento de punto de verificacin se registra en el diario de transacciones. Luego, la
tarea de punto de verificacin reposa durante otro minuto.
Para ver la tarea de punto de verificacin, ejecute sp_who . Esta tarea suele mostrarse
como "CHECKPOINT SLEEP" en la columna cmd :
spid
----1
2
3
4
5

status
---------running
sleeping
sleeping
sleeping
sleeping

loginame
hostname blk dbname
---------- -------- --- ------sa
mars
0
master
NULL
0
master
NULL
0
master
NULL
0
master
NULL
0
master

cmd
---------------SELECT
NETWORK HANDLER
MIRROR HANDLER
HOUSEKEEPER
CHECKPOINT SLEEP

Punto de verificacin despus de la actualizacin de una base de datos de usuario

SQL Server inserta un registro de punto de verificacin inmediatamente despus de


actualizar una base de datos de usuario. SQL Server utiliza ese registro para garantizar
la ejecucin de un comando dump database antes que la de un dump transaction en la
base de datos actualizada.
Truncado del diario despus de los puntos de verificacin automticos
Los administradores del sistema pueden utilizar la opcin de base de datos trunc log on
chkpt para truncar el diario de transacciones cuando SQL Server ejecuta un punto de
verificacin automtico. Si el diario contiene 50 o ms filas cuando se produce un punto
de verificacin automtico, SQL Server trunca el diario.
Para definir la opcin de base de datos trunc log on chkpt , ejecute este comando desde
la base de datos master :
sp_dboption

database_name,

"trunc log on chkpt", true

Esta opcin no es adecuada para entornos de produccin porque no realiza una copia del
diario de transacciones antes de truncarlo. Utilice trunc log on chkpt slo con:

Bases de datos de cuyos diarios de transacciones no se puedan realizar copias de


seguridad porque no estn en un segmento aparte.
Bases de datos de prueba que no precisan copias de seguridad actuales.
Note: Si deja la opcin trunc log on chkpt desactivada (condicin
predeterminada), el diario de transacciones contina creciendo hasta que lo
trunque el comando dump transaction .

Para evitar que el diario quede sin espacio, disee un procedimiento de umbral de
ltima oportunidad que vuelque el diario de transacciones. Para obtener ms
informacin sobre los procedimientos de umbral, consulte el Captulo 21,
"Administracin de espacio libre con umbrales".
Puntos de verificacin libres
Cuando SQL Server no tiene tareas de usuario que procesar, una tarea de limpieza
comienza automticamente a escribir las memorias intermedias sucias en disco. Si la
tarea de limpieza puede vaciar todos los bancos de memorias intermedias activas de
todos los cachs configurados, reactiva la tarea de punto de verificacin. Esta, a su vez,
determina si puede efectuar el punto de verificacin en la base de datos.
Los puntos de verificacin que se producen como resultado de la tarea de limpieza se
denominan puntos de verificacin libres . No implican escribir muchas pginas sucias
en el dispositivo de base de datos, porque la tarea de limpieza ya ha realizado ese
trabajo. El resultado puede ser un menor tiempo de recuperacin de la base de datos.
Para obtener informacin sobre la afinacin de la tarea de limpieza, consulte el Chapter
17, "Using CPU Resources Effectively," de la Gua de Mejora de Rendimiento y
Afinacin .

Solicitud manual de un punto de verificacin


Los propietarios de bases de datos pueden ejecutar el comando checkpoint para forzar
que todas las pginas modificadas en memoria se escriban al disco. Los puntos de
verificacin manuales no truncan el diario, aunque est activada la opcin trunc log on
chkpt de sp_dboption .
Utilice el comando checkpoint :

Como medida preventiva en circunstancias especiales; por ejemplo, justo antes


de un shutdown with nowait planificado para que los mecanismos de
recuperacin de SQL Server ocurran en el intervalo de recuperacin. (Un
shutdown normal ejecuta un punto de verificacin.)
Para provocar que un cambio en las opciones de base de datos tenga efecto
despus de ejecutar el procedimiento del sistema sp_dboption . (Despus de
utilizar sp_dboption, un mensaje informativo recuerda que debe ejecutarse
checkpoint .)

Recuperacin automtica despus de un fallo o cierre del sistema


Cada vez que se reinicia (por ejemplo, despus de un corte elctrico, un fallo del
sistema operativo o el uso del comando shutdown ), SQL Server realiza
automticamente un conjunto de procedimientos de recuperacin en cada base de datos.
El mecanismo de recuperacin compara cada base de datos con su diario de
transacciones. Si el registro del diario para un cambio en particular es ms reciente que
la pgina de datos, el mecanismo de recuperacin vuelve a aplicar el cambio desde el
diario de transacciones. Si estaba realizndose una transaccin cuando se produjo el
fallo, el mecanismo de recuperacin revierte todos los cambios efectuados por la
transaccin. As se garantiza que toda la transaccin tenga xito o falle como unidad.
Al iniciarse, SQL Server recupera las bases de datos en este orden:
1.
2.
3.
4.
5.
6.

Recupera master .
Recupera sybsecurity .
Recupera model .
Crea t empdb (copiando model ).
Recupera sybsystemprocs .
Recupera las bases de datos de usuario, segn el orden de sysdatabases.dbid .

Los usuarios podrn conectarse con SQL Server en cuanto se hayan recuperado las
bases de datos del sistema, pero no podrn tener acceso a otras bases de datos hasta que
no se hayan recuperado.
Determinacin de si se muestran mensajes durante la recuperacin
La variable de configuracin print recovery information determina si SQL Server
muestra mensajes detallados sobre cada transaccin en la pantalla de la consola durante
la recuperacin. De forma predeterminada, los mensajes no se muestran. Para
mostrarlos, ejecute este comando:

sp_configure "print recovery information", 1

Uso de los comandos de volcado y carga


En caso de fallos de medios, como un fallo de disco, es posible restaurar las bases de
datos slo si se han realizado copias de seguridad peridicas de las bases de datos y sus
diarios de transacciones. La recuperacin completa depende del uso habitual de los
comandos dump database y dump transaction para volcar las bases de datos, y de
load database y load transaction para restaurarlas. Estos comandos se describen
brevemente a continuacin, y con mayor detalle en el Captulo 19, "Copia de seguridad
y restauracin de las bases de datos de usuario" y el Captulo 20, "Copias de seguridad y
restauracin de las bases de datos del sistema".
Warning! Nunca utilice los comandos de copia del sistema operativo para copiar un
dispositivo de base de datos. Cargar la copia en SQL Server provoca la corrupcin
masiva de la base de datos.
Verificacin de la consistencia de una base de datos: dbcc
Los comandos de volcado pueden ejecutarse con xito aunque la base de datos est
corrupta. Antes de realizar una copia de seguridad de una base de datos, utilice los
comandos dbcc para verificar su consistencia. Consulte el Captulo 17, "Verificacin de
la consistencia de las bases de datos", para obtener ms informacin.
Volcados peridicos de una base de datos: dump database
El comando dump database crea una copia de toda la base de datos, incluyendo tanto
los datos como el diario de transacciones, pero no trunca el diario.
dump database permite v olcados dinmicos . Los usuarios pueden continuar
modificando la base de datos mientras se realiza el volcado. Esta funcin facilita la
realizacin de copias de seguridad de las bases de datos de forma peridica.
El comando dump database se ejecuta en tres fases. Un mensaje comunica cundo
termina cada fase. Cuando el volcado finaliza, refleja todos los cambios efectuados
durante su ejecucin, excepto los iniciados durante la fase 3.
Volcados peridicos de un diario de transacciones: dump transaction
Utilice el comando dump transaction (o su abreviatura dump tran ) para efectuar
copias de seguridad peridicas de un diario de transacciones. dump transaction es
similar a las copias de seguridad incrementales proporcionadas por muchos sistemas
operativos. Este comando copia el diario de transacciones, que registra cualquier
cambio efectuado en una base de datos desde el ltimo volcado de la bases de datos o
del diario de transacciones. Una vez copiado el diario, dump transaction trunca la
parte inactiva.
dump transaction demora menos y precisa menos espacio de almacenamiento que una
copia de seguridad completa de la base de datos, y normalmente se ejecuta con mayor
frecuencia. Los usuarios pueden continuar modificando la base de datos mientras se

realiza el volcado. dump transaction slo puede ejecutarse si la base de datos guarda
su diario en un segmento aparte.
Despus de un fallo de medios, utilice la opcin with no_truncate de dump
transaction para realizar una copia de seguridad del diario de transacciones. As tendr
un registro del diario hasta el momento del fallo.
Copia del diario despus del fallo de un dispositivo: dump tran with no_truncate
Cuando un dispositivo de datos falla y no se puede tener acceso a la base de datos,
utilice la opcin with no_truncate del comando dump transaction para obtener una
copia actual del diario. Esta opcin no trunca el diario, y slo puede utilizarse si el
diario est en un segmento aparte y la base de datos master es accesible.
Restauracin de toda la base de datos: load database
Utilice el comando load database para cargar la copia de seguridad creada con dump
database . Se puede cargar el volcado en una base de datos existente, o crear una base
de datos nueva con la opcin for load . En este segundo caso, asigne al menos la misma
cantidad de espacio que se asign a la base de datos original.
Warning! No es posible cargar un volcado realizado en una plataforma distinta o
generado en un SQL Server anterior a la versin 10.0. Si la base de datos que se carga
incluye tablas con claves primarias de tablas de otras bases de datos, es necesario cargar
el volcado en una base de datos que tenga el mismo nombre que la volcada.
El comando load database define el estado de la base de datos como "fuera de lnea".
Nadie puede utilizar una base de datos mientras est fuera de lnea, lo cual impide que
los usuarios realicen cambios durante la carga de la base de datos y las sucesivas cargas
del diario de transacciones.
Desde la versin 11.0, el comando load database define una base de datos como "fuera
de lnea", para que ya no sea necesario utilizar las opciones no chkpt on recovery , dbo
use only y read only de sp_dboption antes de cargar una base de datos.
Despus de cargar la base de datos, SQL Server debe realizar otras dos tareas:

Poner a cero todas las pginas no usadas, si la base de datos en que se realiza la
carga es mayor que la volcada.
Terminar la recuperacin, aplicando los cambios del diario de transacciones a
los datos.

Dependiendo del nmero de pginas no asignadas o del nmero de transacciones


extensas, esto puede durar unos segundos o muchas horas para una base de datos muy
grande. SQL Server mostrar mensajes indicando que est poniendo pginas a cero o
que ha comenzado la recuperacin. Estos mensajes se envan normalmente a la memoria
intermedia; para poder verlos, ejecute este comando:
set flushmessage on

Aplicacin de cambios a la base de datos: load transaction


Una vez cargada la base de datos, utilice el comando load transaction (o su
abreviatura, load tran ) para cargar cada volcado de diario de transacciones en el orden
en que se realiz. Este proceso reconstruye la base de datos volviendo a ejecutar los
cambios registrados en el diario de transacciones.
Los usuarios no pueden realizar cambios en la base de datos entre los comandos load
database y load tran , debido al estado de fuera de lnea definido por load database .
Slo es posible cargar los volcados del diario de transacciones del mismo nivel de
versin de SQL Server que la base de datos asociada.
Cuando se haya cargado toda la secuencia de volcados del diario de transacciones, la
base de datos refleja todas las transacciones consignadas en el momento del ltimo
volcado del diario de transacciones.
Disponibilidad de la base de datos para los usuarios: online database
Una vez terminada la secuencia de carga, utilice el comando online database para
cambiar el estado de la base de datos a "en lnea", y ponerla a disposicin de los
usuarios. Una base de datos cargada con l oad database permanece inaccesible hasta
que se ejecute el comando online database .
Asegrese de haber cargado todos los diarios de transacciones requeridos antes de
ejecutar el comando online database .
El comando online database tambin actualiza las bases de datos de usuario, como se
describe en la siguiente seccin.
Desplazamiento de una base de datos a otro SQL Server
Los comandos dump database y load database permiten desplazar una base de datos
desde un SQL Server a otro, siempre que ambos SQL Server se ejecuten en la misma
plataforma de hardware y software. Sin embargo, es necesario tomar medidas para
garantizar que las asignaciones de dispositivos en el SQL Server de destino coincidan
con las del original. De lo contrario, los segmentos definidos por el sistema y por el
usuario en la nueva base de datos no coincidirn con los de la base de datos original.
Para preservar las asignaciones de dispositivos al cargar un volcado de base de datos en
otro SQL Server, utilice las mismas instrucciones que empleara para recuperar una base
de datos de usuario desde un dispositivo fallido. Consulte "Examen de las asignaciones
de dispositivos" para obtener ms informacin.
Actualizacin de una base de datos de un usuario nico
Es posible actualizar los volcados de base de datos y de diarios de transacciones de una
base de datos de usuario nico de la versin 10.0 de SQL Server a la versin actual de
SQL Server.

Note: La actualizacin de una base de datos de usuario nico slo puede realizarse en
bases de datos de la versin 10.0 o posterior de SQL Server.
Los pasos para actualizar una base de datos de usuario son los mismos que para la carga
de una base de datos normal:
1. Utilice load database para cargar el volcado ms reciente de la base de datos de
la versin 10.0. load database define el estado de la base de datos como "fuera
de lnea".
2. Emplee load transaction para cargar, por orden , todos los diarios de
transacciones de la versin 10.0 generados despus del ltimo volcado de la base
de datos. Asegrese de haber cargado todos los diarios de transacciones antes de
continuar con el paso 3.
3. Use online database para actualizar la base de datos a la versin actual de SQL
Server. Cuando la actualizacin finaliza, el estado de la base de datos cambia a
"en lnea", haciendo que la base de datos est disponible para los usuarios.
4. Utilice dump database en la base de datos recin actualizada para crear un
volcado consistente con la versin actual de SQL Server. Antes de ejecutar el
comando dump transaction es necesario utilizar dump database .
Para obtener informacin adicional sobre los comandos load database , load
transaction y online database en relacin con la actualizacin de una base de datos de
usuario, consulte el Manual de Referencia de SQL Server .
Uso de las opciones especiales de dump transaction
En ciertas circunstancias, el modelo descrito anteriormente no puede aplicarse. La Tabla
18-2 describe cundo usar las opciones especiales with no_log y with truncate_only ,
en lugar del comando dump transaction estndar.
Warning! Utilice los comandos dump transaction especiales slo como se indica en la
Tabla 18-2. En particular, utilice dump transaction with no_log como ltimo recurso y
slo despus de que dump transaction with no_truncate falle. El comando dump
transaction with no_log libera muy poco espacio en el diario de transacciones. Si
contina cargando datos despus de introducir dump transaction with no_log , es
posible que el diario se llene por completo, provocando el fallo de los sucesivos
comandos dump transaction . Utilice el comando alter database para asignar espacio
adicional a la base de datos.
Tabla 18-2: Cundo utilizar dump transaction with truncate_only o with no_log
Cuando

El diario est en el mismo segmento que los datos

No le interesa la recuperacin de transacciones


recientes (por ejemplo, en un entorno de desarrollo

Utilice
dump transaction with
truncate_only para truncar el
diario
dump database para copiar toda
la base de datos, incluyendo el
diario
dump transaction with
truncate_only para truncar el

inicial)

diario y
dump database para copiar toda
la base de datos

Su mtodo habitual de volcar el diario de


transacciones (el comando dump transaction
estndar o dump transaction with truncate_only )
falla porque no hay espacio suficiente para el diario

dump transaction with no_log


para truncar el diario sin registrar
el evento y
dump database inmediatamente
despus para copiar toda la base
de datos, incluyendo el diario

Uso de las opciones especiales de load para identificar archivos de volcado


Utilice la opcin with headeronly para proporcionar informacin de encabezado de un
archivo especificado o para el primer archivo de una cinta. Utilice la opcin with
listonly para devolver informacin sobre todos los archivos de una cinta. En realidad,
estas opciones no cargan bases de datos ni diarios de transacciones de la cinta.
Note: Estas opciones se excluyen mutuamente. Si especifica ambas, with listonly
prevalece.
Restauracin de una base de datos a partir de las copias de seguridad
La Figura 18-1 ilustra el proceso de restaurar una base de datos creada a las 4:30 p.m.
del lunes y volcada inmediatamente despus. Los volcados completos de la base de
datos se realizan diariamente a las 5:00 p.m. Los volcados del diario de transacciones se
realizan a las 10:00 a.m., medioda, 2:00 p.m. y 4:00 p.m. cada da:
Figure 18-36: Restauracin de una base de datos a partir de las copias de
seguridad
Si el disco con los datos falla el martes a las 6:00 p.m., siga estos pasos para restaurar la
base de datos:
1. Utilice dump transaction with no_truncate para obtener un volcado actual del
diario de transacciones .
2. Use load database para cargar el volcado ms reciente de la base de datos, en la
cinta 6. load database define el estado de la base de datos como "fuera de
lnea".
3. Use load transaction para aplicar el volcado ms reciente del diario de
transacciones, en la cinta 7.
4. Utilice online database para definir el estado de la base de datos como "en
lnea".
La Figura 18-2 ilustra cmo restaurar la base de datos cuando el dispositivo de datos
falla a las 4:59 p.m. del martes, justo antes de que el operador vaya a realizar el volcado
de la base de datos:

Figure 18-37: Restauracin de una base de datos: otra posibilidad


Siga estos pasos para restaurar la base de datos:
1. Utilice dump transaction with no_truncate para obtener un volcado actual del
diario de transacciones en la cinta 6 (la cinta que habra utilizado para el volcado
peridico de la base de datos) .
2. Utilice load database para cargar el volcado ms reciente de la base de datos, en
la cinta 1. load database define el estado de la base de datos como "fuera de
lnea".
3. Use load transaction para cargar las cintas 2, 3, 4 y 5 y el volcado ms reciente
del diario de transacciones, en la cinta 6.
4. Ejecute online database para definir el estado de la base de datos como "en
lnea".

Asignacin de responsabilidades para las copias de seguridad


Muchas organizaciones tienen un operador cuyo trabajo es realizar todas las
operaciones de copia de seguridad y restauracin. Slo un administrador del sistema,
propietario de base de datos u operador pueden ejecutar los comandos de volcado y
carga. El propietario de la base de datos slo puede volcar su propia base de datos. El
operador y el administrador del sistema pueden volcar y cargar cualquier base de datos.
Cualquier usuario puede ejecutar sp_volchanged para notificar al Backup Server
cundo se ha cambiado un volumen de cinta. En sistemas OpenVMS, el operador
responsable de cambiar los volmenes de cinta debe tener permiso para ejecutar el
comando REPLY.

Uso del Backup Server para copias de seguridad y recuperacin


Los volcados y cargas son realizados por un programa de Open Server, llamado Backup
Server, que se ejecuta en la misma mquina que SQL Server. Las copias de seguridad
pueden realizarse a travs de la red, usando un Backup Server en una computadora
remota y otro en la computadora local.
Backup Server:

Crea y carga desde "volcados listados". El listado de volcado permite utilizar


hasta 32 dispositivos de copia de seguridad en paralelo. Esto divide la base de
datos en partes aproximadamente iguales y realiza la copia de seguridad de cada
parte en un dispositivo distinto.
Crea y carga volcados simples que abarcan varias cintas.
Vuelca y carga a travs de la red a un Backup Server que se ejecuta en otra
mquina.
Vuelca varias bases de datos o diarios de transacciones en una sola cinta.
Carga un solo archivo desde una cinta que contiene muchos volcados de base de
datos o de diario.
Soporta opciones especficas de cada plataforma para el manejo de cintas.

Dirige las solicitudes de administracin de volmenes a la sesin en la que se


ejecut el comando de volcado o carga, o a la consola de su operador.
Detecta las caractersticas fsicas de los dispositivos de volcado para determinar
protocolos, tamaos de bloque y otras caractersticas.

Relacin entre SQL Server y los Backup Servers


La Figura 18-3 muestra dos usuarios que realizan actividades de copia de seguridad
simultneamente en dos bases de datos:

El usuario 1 est volcando la base de datos db1 a un Backup Server remoto.


El usuario 2 est cargando la base de datos db2 desde el Backup Server local.

Cada usuario ejecuta el comando correspondiente desde una sesin de SQL Server. SQL
Server interpreta el comando y enva llamadas de procedimientos remotos (RPC) al
Backup Server. Las llamadas indican qu pginas de la base de datos se vuelcan o se
cargan, qu dispositivos de volcado se utilizan, y otras opciones.
Mientras los volcados y cargas se ejecutan, SQL Server y Backup Server utilizan las
RPCs para intercambiar instrucciones y mensajes de estado. Backup Server (no SQL
Server) realiza todas las transferencias de datos para los comandos de volcado y carga.
Figure 18-38: Instalacin de SQL Server/Backup Server con un Backup Server
remoto
Cuando recibe las instrucciones de volcado del usuario 1, el Backup Server local lee las
pginas especificadas en los dispositivos de base de datos y las enva al Backup Server
remoto. Este guarda los datos en medios fuera de lnea.
Simultneamente, el Backup Server local ejecuta el comando de carga del usuario 2,
leyendo los datos de los dispositivos de volcado locales y escribindolos en el
dispositivo de base de datos.
Comunicacin con el Backup Server
Para utilizar los comandos de volcado y carga, SQL Server debe poder comunicarse con
su Backup Server. Estos son los requisitos:

Es necesario tener un Backup Server ejecutndose en la misma mquina que el


SQL Server (o en el mismo grupo, si se trata de OpenVMS).
El Backup Server debe estar enumerado en la tabla master..sysservers . La
entrada de Backup Server, SYB_BACKUP, se crea en sysservers cuando se
instala SQL Server. Use sp_helpserver para ver esta informacin. Para obtener
informacin sobre el cambio del Backup Server predeterminado, consulte el
Chapter 7, "Managing Remote Servers," de la Gua de Administracin de
Seguridad .
El Backup Server debe estar enumerado en el archivo de interfaces. La entrada
del Backup Server local se crea al instalar SQL Server. Si ha instalado un
Backup Server remoto en otra mquina, cree el archivo de interfaces en un

sistema de archivos compartido por ambas mquinas o copie la entrada a su


archivo de interfaces local.
El usuario que inicie el proceso de Backup Server debe tener permiso para
escribir en los dispositivos de volcado. El usuario "sybase", que normalmente
inicia SQL Server y Backup Server, puede leer de, y escribir en, los dispositivos
de base de datos.
SQL Server debe estar configurado para el acceso remoto. De forma
predeterminada, SQL Server se instala con el acceso remoto habilitado. Consulte
"Configuracin del servidor para acceso remoto" para obtener ms informacin.

Montaje de un nuevo volumen


Durante el proceso de copia de seguridad y restauracin, puede ser necesario cambiar
los volmenes de cinta. Si el Backup Server detecta un problema con el volumen
montado actualmente, solicita un cambio de volumen enviando mensajes al cliente o a
la consola de su operador. Despus de montar otro volumen, el operador debe notificar
al Backup Server ejecutando el procedimiento del sistema sp_volchanged en SQL
Server.
En sistemas UNIX, el Backup Server solicita el cambio de volumen cuando se llena la
cinta. El operador monta otra cinta y ejecuta sp_volchanged . La Figura 18-3 ilustra
este proceso.
En sistemas OpenVMS, el sistema operativo solicita el cambio de volumen cuando
detecta el final de un volumen o cuando la unidad especificada est fuera de lnea. El
operador utiliza el comando REPLY para contestar estos mensajes.
Tabla 18-3: Cambio de volmenes de cinta en un sistema UNIX
Secuencia Operador, usando isql
1
Ejecuta dump database

SQL Server

Backup Server

Enva la solicitud de
volcado a Backup
Server

Recibe el mensaje de
solicitud de volcado
desde SQL Server
Enva mensaje al
operador para montar
cinta

Espera la respuesta del


operador
4

Recibe la solicitud de
cambio de volumen desde
Backup Server

Monta las cintas


Ejecuta sp_volchanged
Verifica las cintas
Si las cintas estn bien,
comienza el volcado

Cuando la cinta se llena,


enva solicitud de cambio
de volumen al operador

Recibe la solicitud de
cambio de volumen desde
Backup Server
Monta las cintas
Ejecuta sp_volchanged
Contina el volcado
Cuando termina el
volcado, enva mensajes
al operador y a SQL
Server

Recibe mensajes
indicando que el
volcado ha
Recibe mensajes indicando
terminado
que termin el volcado
Extrae y etiqueta las cintas

Libera los bloqueos


Termina dump
database

Inicio y detencin de Backup Server


La mayora de los sistemas UNIX emplean la utilidad startserver para iniciar Backup
Server en la misma mquina que SQL Server. Consulte la gua de instalacin y
configuracin de SQL Server para obtener informacin sobre cmo iniciar SQL Server
en su sistema.
Use el comando shutdown para cerrar un Backup Server. Consulte el Captulo 4,
"Diagnosis de problemas en el sistema", y el Manual de Referencia de SQL Server para
obtener informacin sobre este comando

Configuracin del servidor para acceso remoto

La variable de configuracin remote access se define como 1 cuando se instala SQL


Server. Esto permite que SQL Server ejecute llamadas de procedimientos remotos al
Backup Server.
Por razones de seguridad, es conveniente inhabilitar el acceso remoto, excepto mientras
tienen lugar los volcados y cargas. Utilice los comandos siguientes para inhabilitar el
acceso remoto:
sp_configure "allow remote access", 0

Utilice los comandos siguientes para volver a habilitar el derecho de acceso remoto
antes de un volcado o carga:
sp_configure "allow remote access", 1

La variable de configuracin allow remote access es dinmica y no requiere reiniciar


SQL Server para tener efecto. Slo un oficial de seguridad del sistema puede definir la
variable allow remote access .

Eleccin de medios de copias de seguridad


Los dispositivos de volcado preferidos son las cintas, ya que permiten mantener fuera
de lnea una biblioteca de volcados de bases de datos y diarios de transacciones. Las
bases de datos de gran tamao pueden abarcar varios volmenes de cinta. En sistemas
UNIX, el Backup Server requiere dispositivos de cinta sin rebobinado para todos los
volcados y cargas.
Para obtener una lista de los dispositivos de volcado soportados, consulte la gua de
instalacin y configuracin de SQL Server.
Proteccin de las cintas de copia de seguridad contra sobrescritura
El parmetro de configuracin tape retention in days determina por cuntos das se
protegen las cintas de copia de seguridad para evitar que se escriba sobre ellas. Cuando
se instala SQL Server, tape retention in days tiene un valor de 0, es decir, es posible
escribir sobre las cintas inmediatamente despus de una copia de seguridad.
Utilice sp_configure para cambiar el valor de tape retention in days . El nuevo valor
tiene efecto la prxima vez que se arranque SQL Server:
sp_configure "tape retention in days", 14

Los comandos dump database y dump transaction tienen la opcin retaindays , que
anula el valor de tape retention in days para ese volcado.
Volcado a archivos o discos
En general, no es aconsejable realizar volcados a un archivo o a un disco. Si el disco o
computadora que contiene ese archivo falla, puede que no haya forma de recuperar los
volcados. En sistemas UNIX y PC, si la base de datos master es demasiado grande para

caber en un solo volumen de cinta, el volcado a un archivo o disco es la nica opcin, a


menos que haya un segundo SQL Server que pueda ejecutar solicitudes sp_volchanged
.
Los volcados a un archivo o disco pueden copiarse a cinta para almacenamiento fuera
de lnea, pero es necesario volver a copiar esas cintas a un archivo en lnea para que
SQL Server pueda leerlos. Backup Server no puede leer directamente desde la cinta un
volcado a un archivo de disco y luego copiado a cinta.

Creacin de nombres de dispositivo lgicos para los dispositivos locales


de volcado
Si se realizan volcados a, o cargas desde, dispositivos locales (es decir, si no se efectan
copias de seguridad a travs de una red a un Backup Server remoto), es posible
especificar dispositivos de volcado proporcionando sus ubicaciones fsicas o indicando
sus nombres de dispositivo lgicos. En el segundo caso, es conveniente crear nombres
de dispositivo de volcado lgicos en la tabla del sistema sysdevices de la base de datos
master .
Note: Si se vuelca a, o se carga desde, un Backup Server remoto, es necesario
especificar el nombre absoluto de la ruta de acceso del dispositivo de volcado. No puede
utilizarse un nombre lgico de dispositivo.
La tabla sysdevices almacena informacin sobre cada dispositivo de base de datos y de
copia de seguridad, incluyendo su physical_name (el nombre real del dispositivo o
archivo en el sistema operativo) y su device_name (o nombre lgico, conocido slo
dentro de SQL Server). En la mayora de las plataformas, SQL Server tiene uno o dos
alias para los dispositivos de cinta instalados en sysdevices . Los nombres fsicos de
estos dispositivos son nombres comunes de unidades de disco para la plataforma; los
nombres lgicos son tapedump1 y tapedump2.
Cuando cree guiones de copia de seguridad y procedimientos de umbral, utilice
nombres lgicos, no fsicos, siempre que sea posible. Los guiones y procedimientos que
hacen referencia a nombres reales de dispositivo deben modificarse cada vez que se
sustituye un dispositivo de copia de seguridad. Si los guiones y procedimientos hacen
referencia a nombres de dispositivo lgicos, puede bastar con omitir la entrada
sysdevices correspondiente al dispositivo fallido y crear una nueva entrada que asocie el
nombre lgico a otro dispositivo fsico.
Enumeracin de los nombres de los dispositivos actuales
Para enumerar los dispositivos de copia de seguridad de su sistema, ejecute la consulta
siguiente:
select * from master..sysdevices
where status = 16 or status = 24

Para enumerar los nombres fsicos y lgicos de los dispositivos de base de datos y de
copias de seguridad, utilice el procedimiento del sistema sp_helpdevice , como sigue:

sp_helpdevice tapedump1
device_name physical_name
description
status cntrltype device_number low
high
------ --------- ------------- -------- ------tapedump1 /dev/nrmt4
tape, 625 MB, dump device
16
3
0
0
20000

Adicin de un dispositivo de copia de seguridad


Utilice el procedimiento del sistema sp_addumpdevice para aadir un dispositivo de
copia de seguridad:
,

sp_addumpdevice{ "tape" | "disk"} ,


tapesize

logicalname

physicalname

physicalname puede ser el nombre absoluto o relativo de una ruta de acceso. Durante
los volcados y cargas, el Backup Server resuelve los nombres relativos de ruta de acceso
verificando el directorio de trabajo actual de SQL Server.
tapesize es la capacidad de la cinta, en megabytes. Los sistemas OpenVMS no tienen en
cuenta el parmetro tapesize si se especifica. Otras plataformas requieren este parmetro
para los dispositivos de cinta, pero no lo tienen en cuenta para dispositivos de disco. El
Backup Server utiliza el parmetro tapesize si el comando de volcado no especifica la
capacidad de la cinta.
El parmetro tapesize debe ser 1MB al menos, y debera ser ligeramente inferior a la
capacidad estimada del dispositivo.
Redefinicin del nombre lgico de un dispositivo
Para utilizar un nombre de dispositivo lgico existente para otro dispositivo fsico,
omtalo con sp_dropdevice y luego adalo con sp_addumpdevice . Por ejemplo:
sp_dropdevice tapedump2
sp_addumpdevice "tape", tapedump2, "/dev/nrmt8", 625

Planificacin de las copias de seguridad de las bases de datos de usuario


Una de las principales tareas al desarrollar un plan de copias de seguridad es determinar
con qu frecuencia realizar copias de seguridad de las bases de datos. La frecuencia de
las copias de seguridad determina cunto trabajo puede perderse en caso del fallo de un
medio. Esta seccin presenta algunas pautas sobre cundo volcar las bases de datos de
usuario y sus diarios de transacciones.
Planificacin de copias de seguridad peridicas
Vuelque cada base de datos de usuario inmediatamente despus de crearla (para
disponer de un punto de partida) y de acuerdo con una planificacin fija en adelante.
Las copias de seguridad diarias del diario de transacciones y las semanales de la base de
datos son el mnimo aconsejable. Muchas instalaciones con bases de datos grandes y

activas vuelcan las bases de datos diariamente y los diarios de transacciones cada hora o
cada media hora.
En el caso de bases de datos interdependientes (aquellas en las que hay transacciones,
disparadores o integridad de referencia de una base de datos a otra), la copia de
seguridad debe realizarse al mismo tiempo para todas, cuando no haya modificaciones
entre las bases de datos cruzadas. Si una de esas bases de datos falla y debe volver a
cargarse, es necesario cargarlas a todas desde esos volcados simultneos.
Warning! Siempre vuelque ambas bases de datos inmediatamente despus de aadir,
cambiar o quitar una restriccin entre bases de datos cruzadas o de omitir una tabla que
contenga una restriccin entre bases de datos cruzadas.
Otras ocasiones donde hay que hacer copias de seguridad de bases de datos
Adems de los volcados peridicos, es conveniente volcar una base de datos de usuario
siempre que se actualiza su versin, se crea un ndice, se realiza una operacin no
registrada en el diario o se ejecuta el comando dump transaction with no_log o dump
transaction with truncate_only .
Volcado de una base de datos de usuario despus de actualizarla
Despus de actualizar una base de datos de usuario a la versin actual de SQL Server, es
necesario volcar la base de datos actualizada para crear un volcado compatible con la
versin actual de SQL Server. Antes de poder usar dump transaction , es necesario
ejecutar d ump database en las bases de datos actualizadas.
Volcado de una base de datos despus de crear un ndice
Cuando se aade un ndice en una tabla, el comando create index se registra en el
diario de transacciones pero SQL Server no anota los cambios mientras llena las pginas
del ndice con informacin.
Si el dispositivo de base de datos falla despus de crear un ndice, el comando load
transaction puede demorar tanto tiempo en reconstruir el ndice como el comando
create index precis para construirlo. Para evitar demoras prolongadas, vuelque cada
base de datos inmediatamente despus de crear un ndice en una de sus tablas.
Volcado de una base de datos despus de operaciones no registradas
SQL Server escribe los datos al disco para los siguientes comandos directamente, sin
aadir entradas (o, en el caso de bcp , aadiendo entradas mnimas) en el diario de
transacciones:

writetext no registrado
select into en una tabla permanente
Copia masiva rpida ( bcp a una tabla, sin disparadores ni ndices)

Dado que ninguno de esos cambios se registra en el diario, no es posible recuperarlos


desde un volcado del diario de transacciones, ni recuperar otros cambios realizados en la

base de datos despus de ejecutarse uno de estos comandos. Para garantizar que estos
comandos sean recuperables, ejecute d ump database inmediatamente despus de
cualquiera de estas operaciones.
Volcado de una base de datos cuando se trunc el diario
Los comandos dump transaction with truncate_only y dump transaction with
no_log quitan transacciones del diario sin realizar una copia de seguridad. Para
garantizar su recuperacin, es necesario volcar la base de datos cada vez que se ejecuta
alguno de esos comandos por falta de espacio de disco. Mientras no se haga as, SQL
Server no permite copiar el diario de transacciones. Consulte "Uso de las opciones
especiales de dump transaction" para obtener ms informacin sobre las restricciones de
dump transaction with truncate_only y dump transaction with no_log .
Si la opcin de base de datos trunc log on chkpt est definida como true y el diario de
transacciones contiene 50 filas o ms, SQL Server trunca el diario cuando ocurre un
punto de verificacin automtico. Luego, para garantizar la recuperacin, es necesario
volcar toda la base datos, no el diario de transacciones.

Planificacin de las copias de seguridad de master


Las copias de seguridad de la base de datos master se utilizan como parte del
procedimiento de recuperacin en caso de un fallo que afecte a la base de datos master .
Si no dispone de una copia de seguridad actual de master , tal vez tenga que reconstruir
las tablas del sistema vitales cuando sea necesario volver a poner en marcha las bases de
datos. Preprese para esa eventualidad realizando copias de seguridad de la base de
datos master con periodicidad y a menudo .
Volcado de master despus de cada cambio
Realice una copia de seguridad de la base de datos master con dump database cada vez
que la modifique. Aunque en master puede restringirse la creacin de objetos de base de
datos, existen procedimientos del sistema, como sp_addlogin y sp_droplogin,
sp_password y sp_modifylogin , que permiten que los usuarios modifiquen las tablas
del sistema de esa base de datos. Asegrese de realizar copias de seguridad de master
con frecuencia para registrar esos cambios.
Efecte una copia de seguridad de la base de datos master despus de cada comando
que afecte a los discos, almacenamiento, bases de datos o segmentos. Hgala tambin
despus de ejecutar cualquiera de los siguientes comandos o procedimientos del
sistema:

disk init , sp_addumpdevice y sp_dropdevice


Comandos de duplicacin de disco
El procedimiento del sistema de segmentos sp_addsegment , sp_dropsegment
o sp_extendsegment
create procedure o drop procedure
sp_logdevice
sp_configure
create database o alter database

Almacenamiento de guiones y tablas del sistema


Para mayor proteccin, guarde los guiones que contienen todos sus comandos disk init ,
create database y alter database , e imprima las tablas sysdatabases , sysusages y
sysdevices cada vez que ejecute uno de esos comandos.
Los cambios resultantes de estos comandos no pueden recuperarse automticamente con
buildmaster . Si conserva los guiones (archivos con instrucciones de Transact-SQL),
puede ejecutarlos para volver a aplicar los cambios. De lo contrario, deber ejecutar de
nuevo cada comando en la base de datos master reconstruida.
Tambin conserve una copia impresa de syslogins . Cuando recupere master desde un
volcado, compare la copia impresa con la versin actual de la tabla para verificar que las
IDs de usuario sean las mismas.
Truncado del diario de transacciones de la base de datos master
Dado que el diario de transacciones de la base de datos master est en los mismos
dispositivos que los datos, no es posible realizar una copia de seguridad de su diario de
transacciones por separado. El diario de la base de datos master no puede desplazarse.
Use siempre dump database para hacer la copia de seguridad de la base de datos
master . Utilice dump transaction con la opcin truncate_only peridicamente (por
ejemplo, despus de cada volcado de la base de datos) para purgar el diario de
transacciones de master .

Planificacin de las copias de seguridad de model


Mantenga un volcado actual de la base de datos model . Cada vez que modifique model ,
realice una copia de seguridad. Si model resulta daada y no dispone de una copia,
deber repetir todas las modificaciones para restaurar model .
Truncado del diario de transacciones de la base de datos model
model , como master , guarda su diario de transacciones en los mismos dispositivos que
los datos. Utilice siempre dump database para realizar las copias de seguridad de la
base de datos model y dump transaction con la opcin truncate_only para purgar el
diario de transacciones despus de cada volcado de la base de datos.

Planificacin de las copias de seguridad de sybsystemprocs


La base de datos sybsystemprocs slo almacena procedimientos del sistema. Es muy
fcil restaurarla ejecutando el guin installmaster , a menos que se hayan realizado
cambios en la base de datos.
Si se cambian los permisos en los procedimientos del sistema o se crean procedimientos
del sistema propios en sybsystemprocs , hay dos opciones de recuperacin:

Ejecute el guin installmaster y repita todos los cambios, volviendo a crear los
procedimientos o ejecutando nuevamente los comandos grant y revoke .
Realice una copia de seguridad de sybsystemprocs cada vez que la cambie.

Estas dos opciones de recuperacin se describen en el Captulo 20, "Copias de


seguridad y restauracin de las bases de datos del sistema".
Como otras bases de datos del sistema, sybsystemprocs almacena su diario de
transacciones en el mismo dispositivo que los datos. Utilice siempre dump database
para realizar la copia de seguridad de la base de datos sybsystemprocs . De forma
predeterminada, la opcin trunc log on chkpt est activada en sybsystemprocs , por lo
que no necesitar truncar el diario de transacciones. Si cambia esta opcin de base de
datos, asegrese de truncar el diario cuando vuelque la base de datos.
Si est trabajando en un sistema UNIX o en una PC, y slo hay un SQL Server que
pueda comunicarse con su Backup Server, asegrese de que todo el volcado de
sybsystemprocs quepa en un solo dispositivo de volcado. La sealizacin de los cambios
de volumen requiere el procedimiento del sistema sp_volchanged , y no es posible
utilizar este procedimiento en un servidor mientras la base de datos sybsystemprocs est
en el proceso de recuperacin.

Acumulacin de estadsticas de las copias de seguridad


Cuando termine este captulo, lea el Captulo 19, "Copia de seguridad y restauracin de
las bases de datos de usuario", y el Captulo 20, "Copias de seguridad y restauracin de
las bases de datos del sistema". Luego, practique los comandos de copia de seguridad y
carga.
Utilice dump database para realizar varias copias de seguridad de prctica de una base
de datos de usuario real, y dump transaction para copiar un diario de transacciones.
Recupere la base de datos con el comando load database y haga volcados sucesivos del
diario de transacciones con el comando load transaction .
Conserve estadsticas sobre cunto dura cada volcado y carga, y cunto espacio
requiere. Cuanto ms se aproxime a las condiciones de copias de seguridad reales, ms
valor tendrn sus previsiones.
Una vez desarrollados y probados los procedimientos de copia de seguridad,
consgnelos por escrito. Decida una planificacin razonable de las copias de seguridad y
resptela. Si desarrolla, documenta y prueba sus procedimientos de copia de seguridad
con anticipacin, estar mucho mejor preparado para volver a poner las bases de datos
en lnea cuando se produzca un desastre.

Chapter 19

Copia de seguridad y restauracin de las bases de datos de


usuario
Las copias de seguridad peridicas y frecuentes son la nica proteccin contra daos
causados en las bases de datos por el fallo de los dispositivos de base de datos.
Este captulo es el segundo de una serie de cuatro captulos dedicada a copias de
seguridad y recuperacin. Describe cmo utilizar los comandos de volcado y carga para

copias de seguridad, recuperacin y truncado de los diarios. Incluye los siguientes


temas:

Sintaxis de los comandos de volcado y carga


Especificacin de la base de datos y del dispositivo de volcado
Especificacin de un Backup Server remoto
Especificacin de la densidad, tamao de bloque y capacidad de la cinta
Especificacin del nombre de volumen
Identificacin de un volcado
Especificacin de dispositivos de volcado adicionales: clusula stripe on
Opciones de administracin de cintas
Anulacin del destino predeterminado de los mensajes
Obtencin de informacin sobre los archivos de volcado
Copia del diario despus de un fallo del dispositivo
Truncado de un diario que no est en un segmento aparte
Truncado del diario en entornos de desarrollo inicial
Truncado de un diario que no tiene espacio libre
Respuesta a las solicitudes de cambio de volumen
Recuperacin de una base de datos: instrucciones paso a paso
Actualizacin de volcados de bases de datos de usuario
Vnculos de cach y carga de las bases de datos

Tabla 19-1: Informacin adicional sobre copia de seguridad y recuperacin


Para obtener ms informacin sobre
Aspectos de copias de seguridad y
recuperacin a considerar antes de la
produccin

Consulte
Captulo 18, "Desarrollo de un plan de
copias de seguridad y recuperacin"

Copias de seguridad y restauracin de


bases de datos del sistema

Captulo 20, "Copias de seguridad y


restauracin de las bases de datos del
sistema"

Uso de umbrales para automatizar las


copias de seguridad

Captulo 21, "Administracin de espacio


libre con umbrales"

Sintaxis de los comandos de volcado y carga


Los comandos dump database , dump transaction , load database y load
transaction tienen sintaxis paralelas. Los volcados y cargas rutinarios requieren el
nombre de una base de datos y, al menos, un dispositivo de volcado. Los comandos
tambin pueden incluir las opciones siguientes:

at server_name para especificar el Backup Server remoto


density , blocksize y capacity para especificar las caractersticas de
almacenamiento de la cinta
dumpvolume para especificar el nombre de volumen de la etiqueta de la cinta
ANSI
file = file_name para especificar el nombre del archivo al que se vuelca o del que
se carga
stripe on stripe_device para especificar dispositivos adicionales de volcado

dismount , unload , init y retaindays para especificar la administracin de las


cintas
notify para especificar si los mensajes de Backup Server se envan al client que
inici el volcado o carga, o al operator_console

La Tabla 19-4 muestra la sintaxis para volcados rutinarios de bases de datos y diarios, y
para volcar el diario despus de un fallo del dispositivo. Adems, indica qu tipo de
informacin proporciona cada parte de las instrucciones dump database y dump
transaction .
Tabla 19-2: Sintaxis para volcados rutinarios y volcados de diario despus de un
fallo de dispositivo
Informacin proporcionada

Tarea
Volcado rutinario de
bases de datos o diarios

Volcado de diario
despus de un fallo de
dispositivo

Comando

dump { database |
transaction }

dump transaction

Nombre de la base de datos

database_name

database_name

Dispositivo de volcado

to stripe_device

to stripe_device

Backup Server remoto

[ at server_name ]

[ at server_name ]

Caractersticas del dispositivo de


cinta

[ density = density ,
blocksize =
number_bytes ,
capacity =
number_kilobytes ]

[ density = density ,
blocksize = number_bytes
,
capacity =
number_kilobytes ]

Nombre del volumen

[ , dumpvolume =
volume_name ]

[ , dumpvolume =
volume_name ]

Nombre del archivo

[ , file = file_name ]

[ , file = file_name ]

[ stripe on stripe_device
[ at server_name ]
[ density = density ,
Caractersticas de otros
blocksize =
dispositivos (hasta 31 dispositivos;
number_bytes ,
un conjunto de opciones por
dispositivo)
capacity =
number_kilobytes ,
file = file_name ,
dumpvolume =
volume_name ]]...
Opciones que se aplican a todo el
volcado

[ with {
density = density ,

[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes
,
capacity =
number_kilobytes ,
file = file_name ,
dumpvolume =
volume_name ]]...
[ with {
density = density ,

blocksize =
number_bytes ,
capacity =
number_kilobytes ,
file = file_name ,
[ nodismount |
dismount ],

blocksize = number_bytes
,
capacity =
number_kilobytes ,
file = file_name ,
[ nodismount | dismount
],

[ nounload | unload ],

[ nounload | unload ],

[ retaindays =
number_days ],

[ retaindays =
number_days ],

[ noinit | init ],
file = file_name ,
dumpvolume =
volume_name

[ noinit | init ],
file = file_name ,
dumpvolume =
volume_name ,
no_truncate

No truncar el diario
Destino de los mensajes

[ , notify = { client |
operator_console }]}]

[ , notify = { client |
operator_console }]}]

La Tabla 19-3 muestra la sintaxis para cargar una base de datos, aplicar las
transacciones del diario y obtener informacin sobre los encabezados y archivos de
volcado:
Tabla 19-3: Sintaxis para los comandos de carga
Informacin proporcionada

Tarea

Comando

load { database |
transaction }

Obtener informacin del


encabezado o archivo s in
cargar la copia de
seguridad
load { database |
transaction }

Nombre de la base de datos

database_name

database_name

Dispositivo de volcado

from stripe_device

from stripe_device

Backup Server remoto

[ at server_name ]

[ at server_name ]

Cargar una base de


datos o aplicar
transacciones recientes

[ density = density ,
Caractersticas del dispositivo
blocksize =
de cinta
number_bytes ]

[ density = density ,
blocksize = number_bytes ]

Nombre del volumen

[ , dumpvolume =
volume_name ]

[ , dumpvolume =
volume_name ]

Nombre del archivo

[ , file = file_name ]

[ , file = file_name ]

Caractersticas de otros
dispositivos (hasta 31
dispositivos; un conjunto de

[ stripe on stripe_device [ stripe on stripe_device


[ at server_name ]
[ at server_name ]
[ density = density ,
[ density = density ,

blocksize = number_bytes ,
file = file_name ,
dumpvolume =
volume_name ]]...

blocksize =
number_bytes ,
file = file_name ,
dumpvolume =
volume_name ]]...

opciones por dispositivo)

[ with {
[ density = density ,
blocksize =
number_bytes ,
dumpvolume =
volume_name ,
file = file_name ,
[ nodismount | dismount
],
[ nounload | unload ]

Administracin de la cinta

[ with {
[ density = density ,
blocksize = number_bytes ,
dumpvolume =
volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ]

Proporcionar informacin de
encabezado

[ , headeronly ]

Enumerar archivos de volcado

[ , listonly [= full ]]

Destino de los mensajes

[ , notify = { client |
operator_console }]}]

[ , notify = { client |
operator_console }]}]

La Tabla 19-4 muestra la sintaxis para truncar un diario:

Que no est en un segmento aparte


Sin realizar una copia de seguridad
Con insuficiente espacio libre como para terminar con xito un comando dump
transaction o dump transaction with truncate_only
Tabla 19-4: Opciones especiales de dump transaction
Informacin
proporcionada

Tarea
Truncar el diario
en el mismo
segmento que los
datos

Truncar el diario Truncar el diario


sin realizar una con espacio libre
copia
insuficiente

Comando

dump transaction

dump transaction dump transaction

Nombre de la
base de datos

database_name

database_name

database_name

with
truncate_only

with no_log

No copiar diario with truncate_only

El resto de este captulo proporciona mayores detalles sobre la informacin especificada


en los comandos de volcado y carga, y en los mensajes de cambio de volumen. Primero
se describen los volcados y cargas rutinarios, seguidos por los volcados del diario
despus de un fallo de dispositivo y por la sintaxis especial para truncar diarios sin
realizar una copia de seguridad.

Para obtener informacin sobre los permisos requeridos para ejecutar los comandos de
volcado y carga, consulte "Asignacin de responsabilidades para las copias de
seguridad".

Especificacin de la base de datos y del dispositivo de volcado


Como mnimo, todos los comandos de volcado y carga deben incluir el nombre de la
base de datos que se vuelca o carga. Los comandos que vuelcan o cargan datos (en lugar
de slo truncar un diario de transacciones) tambin deben incluir un dispositivo de
volcado.
Tabla 19-5: Indicacin del nombre de la base de datos y dispositivo de volcado

Base de datos
Dispositivo de
volcado

Copia de seguridad de una base de


datos o d iario
dump { database | tran }
database_name
to stripe_device

Carga de una base de datos o


d iario
load { database | tran }
database_name
from stripe_device

[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ]
[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days ,
[ noinit | init ],
[ notify = { client |
operator_console }]}]

[ at server_name ]
[ density = density ,
blocksize = number_bytes
dumpvolume = volume_name
file = file_name ]
[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name
,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name
,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
[ notify = { client |
operator_console }]}]

Reglas para especificar nombres de bases de datos


El nombre de las bases de datos puede especificarse como literal, variable local o
parmetro de un procedimiento almacenado.

Si se carga una base de datos desde un volcado:

La base de datos debe existir. Puede crearse una con la opcin for load de
create database , o cargarla en una base de datos existente. La carga de una
base de datos sustituye siempre toda la informacin de la base de datos
existente.
No es necesario dar el mismo nombre que tena la base de datos volcada. Por
ejemplo, es posible volcar la base de datos pubs2 , crear otra llamada
pubs2_archive y cargar el volcado en la nueva base de datos.
Warning! Nunca cambie el nombre de una base de datos que contenga claves
primarias para referencias desde otras bases de datos. Si tiene que cargar un
volcado desde una base de datos como esa y proporcionar otro nombre, omita
primero las referencias a ella desde las otras bases de datos.

Reglas para especificar dispositivos de volcado


Utilice las reglas siguientes al especificar el dispositivo de volcado:

El dispositivo de volcado puede especificarse como literal, variable local o


parmetro de un procedimiento almacenado.
No es posible volcar a o cargar del "dispositivo nulo" (en UNIX, /dev/null ; en
OpenVMS, cualquier dispositivo cuyo nombre comience con NL; no aplicable a
plataformas PC ).
Al volcar a o cargar desde un dispositivo local, se puede utilizar cualquiera de
las formas siguientes para especificar el dispositivo de volcado:
o Un nombre absoluto de ruta de acceso
o Un nombre relativo de ruta de acceso
o Un nombre lgico de dispositivo de la tabla del sistema sysdevices
El Backup Server resuelve los nombres relativos usando el directorio de trabajo
actual de SQL Server.

Al volcar o cargar a travs de la red:


o Debe especificarse el nombre absoluto de ruta de acceso del dispositivo
de volcado. (No es posible utilizar un nombre relativo de ruta ni un
nombre lgico de dispositivo de la tabla del sistema sysdevices .)
o El nombre de ruta debe ser vlido en la mquina donde se ejecuta el
Backup Server.
o Si el nombre incluye caracteres que no sean letras, nmeros o el guin de
subrayado (_), debe ir entre comillas.

Ejemplos
Los ejemplos siguientes utilizan un solo dispositivo para volcados y cargas. (No es
necesario usar el mismo dispositivo para volcados y cargas.)
En UNIX:
dump database pubs2 to "/dev/nrmt4"

load database pubs2 from "/dev/nrmt4"

En OpenVMS:
dump database pubs2 to "MTA0:"
load database pubs2 from "MTA0:"

En plataformas PC:
Para obtener ejemplos de plataformas PC, consulte la gua de instalacin y
configuracin de SQL Server.
Determinacin del dispositivo de cinta por Backup Server
Para depender menos del dispositivo y ser ms flexible, Backup Server proporciona un
mtodo que determina las caractersticas del dispositivo de cinta (colocacin de la cinta
para lectura, cierre, adicin, tamao de E/S, marcas de archivo y capacidad de sustituir
una marca de cinta) para una operacin de volcado.
Cuando se ejecuta un comando dump database o dump transaction , Backup Server
verifica si el tipo del dispositivo de volcado especificado es conocido (suministrado y
soportado internamente) por SQL Server. Si el dispositivo no es conocido, Backup
Server verifica la configuracin del dispositivo en el archivo de configuracin de cinta
(la ubicacin predeterminada es $SYBASE/backup_tape.cfg) . Si se encuentra la
configuracin, el comando dump contina.
Si la configuracin no se encuentra en el archivo de configuracin de dispositivos de
cinta, el comando dump falla con el siguiente mensaje de error:
Device not found in configuration file. INIT needs to be specified to
configure the device.

Esto implica que es necesario configurar el dispositivo. Ejecute dump database o


dump transaction con el calificador init para configurar el dispositivo. Usando
llamadas del sistema operativo, Backup Server intenta determinar las caractersticas del
dispositivo y, si tiene xito, guarda las caractersticas del dispositivo en el archivo de
configuracin de cinta.
Si Backup Server no puede determinar las caractersticas del dispositivo de volcado,
hace un volcado por cinta de forma predeterminada. El dispositivo no puede utilizarse si
la configuracin no es capaz de escribir al menos un archivo de volcado.
La configuracin de la cinta por Backup Server se aplica slo a las plataformas UNIX.
Archivo de configuracin de dispositivos de cinta
Formato
El archivo de configuracin de dispositivos de cinta contiene informacin sobre
dispositivos de cinta utilizada nicamente por el comando dump .

El formato del archivo es una entrada de dispositivo de cinta por lnea. Los campos se
separan con espacios en blanco o tabuladores.Creacin
Este archivo no se proporciona en el momento de la instalacin o actualizacin. Slo se
crea cuando Backup Server est preparado para escribir en el archivo ( dump database
o dump transaction con init ). Cuando Backup Server intenta escribir en este archivo
la primera vez, aparece el siguiente mensaje de advertencia:
Warning, unable to open device configuration file for reading.
Operating system error. No such file or directory.

Ignore este mensaje. Backup Server lo muestra y, a continuacin, crea el archivo y


escribe la informacin de configuracin en l.Edicin manual
Dado que Backup Server actualiza el archivo de configuracin, la nica interaccin del
usuario con el archivo tiene lugar cuando se recibe el siguiente mensaje de error:
Device does not match the current configuration. Please reconfigure
this tape device by removing the configuration file entry and issuing
a dump with the INIT qualifier.

Esto significa que, para un nombre de dispositivo, cambi la configuracin del


hardware de cinta. Elimine la lnea correspondiente a la entrada de ese nombre de
dispositivo y ejecute un comando dump con el calificador init .Ubicacin
predeterminada
El nombre predeterminado de ruta para el archivo de configuracin es
$SYBASE/backup_tape.cfg . Para cambiar la ubicacin predeterminada, utilice el men
Configuration de Backup Server en sybinit .

Especificacin de un Backup Server remoto


Utilice la clusula at server_name para enviar solicitudes de volcado y carga a un
Backup Server que se ejecuta en otra mquina a travs de la red.
Tabla 19-6: Volcado a, o carga desde, un Backup Server remoto
Copia de seguridad de una base de Carga de una base de datos o
datos o diario
diario
dump { database | tran }
database_name
to stripe_device
Backup Server
[ at server_name ]
remoto
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ]
[ stripe on stripe_device

load { database | tran }


database_name
from stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name ,
file = file_name ]
[ stripe on stripe_device
[ at server_name ]

[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days ,
[ noinit | init ],
[ notify = { client |
operator_console }]}]

[ density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
[ notify = { client |
operator_console }]}]

Esto es ideal para instalaciones que utilizan una sola mquina con varios dispositivos de
cinta para todas las copias de seguridad y cargas. Los operadores pueden estar asignados
a estas mquinas, preparados para atender todas las solicitudes de cambio de cinta.
El server_name debe aparecer en el archivo de interfaces en la computadora donde se
ejecuta SQL Server, pero no es necesario que aparezca en la tabla sysservers .
Los ejemplos siguientes vuelcan a, y cargan desde, el Backup Server remoto
REMOTE_BKP_SERVER.
En UNIX:
dump database pubs2
to "/dev/nrmt0" at REMOTE_BKP_SERVER
load database pubs2
from "/dev/nrmt0" at REMOTE_BKP_SERVER

En OpenVMS:
dump database pubs2
to "MTA0:" at REMOTE_BKP_SERVER
load database pubs2
from "MTA0:" at REMOTE_BKP_SERVER

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la gua de instalacin y
configuracin de SQL Server.

Especificacin de la densidad, tamao de bloque y capacidad de la cinta

En la mayora de los casos, Backup Server utiliza una densidad y tamao de bloque
predeterminados ptimos para el sistema operativo en cuestin; es aconsejable
utilizarlos . Las opciones density y blocksize permiten anular estos valores
predeterminados cuando no son adecuados para un dispositivo en particular. La opcin
capacity permite especificar la capacidad de la cinta en plataformas que no detectan
fiablemente la marca de fin de cinta.
Es posible especificar la densidad, tamao de bloque y capacidad de cada dispositivo de
volcado. Tambin pueden indicarse las opciones density , blocksize y capacity en la
clusula with , para todos los dispositivos de volcado. Las caractersticas que se
especifican para un dispositivo de cinta individual tienen prioridad sobre las indicadas
en la clusula with .
Tabla 19-7: Especificacin de la densidad, tamao de bloque y capacidad de la
cinta

Caractersticas de un solo
dispositivo de cinta

Copia de seguridad de una


base de datos o diario
dump { database | tran }
database_name
to stripe_device [ at
server_name ]

Carga de una base de


datos o diario
load { database | tran }
database_name
from stripe_device [ at
server_name ]

[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,

[ density = density ,
blocksize = number_bytes
,

dumpvolume =
dumpvolume = volume_name , volume_name ,
file = file_name ]
file = file_name ]
[ stripe on stripe_device ]
[ stripe on stripe_device ]
[ at server_name ]
[ at server_name ]
[ density = density ,
[ density = density ,
blocksize = number_bytes ,2 c blocksize = number_bytes
apacity = number_kilobytes ,
,
dumpvolume = volume_name , dumpvolume =
file = file_name ] ...]
volume_name ,
file = file_name ] ...]
[ with {
Caractersticas de todos
density = density ,
los dispositivos de volcado blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days ,
[ noinit | init ],
[ notify = { client |
operator_console }]}]

[ with {
density = density ,
blocksize = number_bytes
,
dumpvolume =
volume_name ,
file = file_name ,
[ nodismount | dismount
],
[ nounload | unload ],
[ notify = { client |
operator_console }]}]

Las secciones siguientes proporcionan mayores detalles sobre las opciones de density ,
blocksize y capacity .
Anulacin de la densidad predeterminada
Los comandos de volcado y carga utilizan la densidad de cinta predeterminada en el
sistema operativo. En la mayora de los casos, sa es la densidad ptima para los
volcados a cinta.
Cuando se vuelca a cinta en sistemas OpenVMS, la densidad predeterminada puede
anularse con la opcin density = density . Las densidades vlidas son 800, 1600, 6250,
6666, 10000 y 38000. No todas las densidades son vlidas en todas las unidades de
cinta; especifique un valor que sea correcto para su unidad.
Esta opcin no tiene efecto en las cargas de cintas de OpenVMS ni en los volcados y
cargas de plataformas UNIX y PC.
Note: Especifique la densidad de cinta slo cuando utilice la opcin init de
administracin de cintas. Para obtener ms informacin sobre esta opcin, consulte la
seccin "Reinicializacin de un volumen antes de un volcado".
Anulacin del tamao de bloque predeterminado
De forma predeterminada, los comandos de volcado y carga eligen el "mejor" tamao
de bloque para el sistema operativo en cuestin. Siempre que sea posible, emplee esos
valores predeterminados.
La opcin blocksize = number_bytes permite anular el tamao de bloque
predeterminado para un dispositivo de volcado en particular. Dicho tamao debe ser, al
menos, una pgina de base de datos (2048 bytes) y un mltiplo exacto del tamao de la
pgina de base de datos.
En los sistemas OpenVMS, puede especificarse un tamao de bloque slo para los
volcados. Emplee un tamao de bloque inferior o igual a 55.296.
En los sistemas UNIX, puede especificarse un tamao de bloque en los comandos de
volcado y de carga. Al cargar un volcado, es necesario especificar el mismo tamao de
bloque que se emple para realizar el volcado.
Especificacin de la capacidad de la cinta para los comandos de volcado
De forma predeterminada, los sistemas OpenVMS escriben hasta que llegan a la marca
fsica de fin de cinta y luego emiten una seal para que se efecte el cambio. En
plataformas UNIX que no puedan detectar fiablemente la marca de fin de cinta, es
necesario indicar cuntos kilobytes pueden volcarse a una cinta.
Si se especifica el nombre fsico de la ruta de acceso del dispositivo de volcado, hay que
incluir el parmetro capacity = number_kilobytes en el comando de volcado. Si se
especifica el nombre lgico del dispositivo de volcado, Backup Server utiliza el

parmetro size guardado en la tabla del sistema sysdevices , a menos que se anule con el
parmetro capacity = number_kilobytes .
La capacidad especificada debe ser de por lo menos cinco pginas de base de datos
(cada pgina requiere 2048 bytes). Es aconsejable especificar una capacidad
ligeramente inferior a la indicada para el dispositivo.
Una regla bsica para calcular la capacidad es utilizar el 70 por ciento de la capacidad
mxima indicada por el fabricante del dispositivo, y dejar el 30 por ciento para la
sobrecarga (espacios entre registros, marcas de la cinta, etc.). Esta regla bsica funciona
en la mayora de los casos, pero tal vez no en todos debido a las diferencias de
sobrecarga de un fabricante o dispositivo a otro.

Especificacin del nombre de volumen


Utilice la opcin with dumpvolume = volume_name para especificar el nombre del
volumen. Los comandos dump database y dump transaction escriben el nombre de
volumen en la etiqueta de la cinta SQL. Los comandos load database y load
transaction verifican la etiqueta. Si se carga el volumen errneo, Backup Server genera
un mensaje de error.
Es posible especificar un nombre de volumen para cada dispositivo de volcado.
Tambin puede especificarse un nombre de volumen en la clusula with para todos los
dispositivos. Los nombres de volumen especificados para dispositivos individuales
tienen prioridad sobre los indicados en la clusula with .
Tabla 19-8: Especificacin del nombre de volumen
Copia de seguridad de una
base de datos o diario
dump { database | tran }
database_name
to stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,

Carga de una base de


datos o diario
load { database | tran }
database_name
from stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,

Nombre de volumen para


dumpvolume =
dumpvolume = volume_name ,
un solo dispositivo
volume_name ,
file = file_name ]
[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,

file = file_name ]
[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
dumpvolume =
volume_name ,
file = file_name ]...]
[ with {
density = density ,

blocksize = number_bytes ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
Nombre de volumen para
dumpvolume =
dumpvolume = volume_name ,
volume_name ,
todos los dispositivos
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days ,
[ noinit | init ],
[ notify = { client |
operator_console }]}]

file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
[ notify = { client |
operator_console }]}]

Identificacin de un volcado
Cuando se vuelca una base de datos o un diario de transacciones, Backup Server crea un
nombre de archivo predeterminado para el volcado concatenando:

Los 7 ltimos caracteres del nombre de la base de datos


El nmero de ao (2 dgitos)
El da del ao (3 dgitos, de 1 a 366)
El nmero de segundos transcurridos desde la medianoche, en formato
hexadecimal

Este nombre predeterminado puede anularse usando la opcin file = file_name . El


nombre de archivo no puede superar los 17 caracteres y debe seguir las convenciones de
nombres de archivos del sistema de operativo en cuestin.
Es posible especificar un nombre de archivo para cada dispositivo de volcado. Tambin
puede especificarse un nombre para todos los dispositivos en la clusula with . Los
nombres de archivo especificados para dispositivos individuales tienen prioridad sobre
los indicados en la clusula with .
Tabla 19-9: Especificacin del nombre de archivo para un volcado

Nombre de archivo para


un solo dispositivo

Copia de seguridad de una


base de datos o diario
dump { database | tran }
database_name
to stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,

Carga de una base de


datos o diario
load { database | tran }
database_name
from stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
dumpvolume =
volume_name ,

file = file_name ]

file = file_name ]

[ stripe on stripe_device

[ stripe on stripe_device ]

Nombre de archivo para


todos los dispositivos

[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,

[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
dumpvolume =
volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
dumpvolume =
volume_name ,

file = file_name ,

file = file_name ,

[ nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days ,
[ noinit | init ],
[ notify = { client |
operator_console }]}]

[ nodismount | dismount
],
[ nounload | unload ],
[ notify = { client
| operator_console }]}]

Los ejemplos siguientes vuelcan el diario de transacciones de la base de datos


publications sin especificar un nombre de archivo. El nombre de archivo
predeterminado, cations930590E100 , identifica la base de datos, y la fecha y hora en
que se realiz el volcado.
Figure 19-39: Convencin predeterminada de nombre de archivo para los volcados
de bases de datos y de diarios de transacciones
Backup Server enva el nombre de archivo al destino predeterminado de los mensajes o
a la ubicacin indicada en la opcin notify del comando de volcado. Asegrese de
etiquetar cada cinta de copia de seguridad con el nombre de volumen y el de archivo
antes de guardarla.
Cuando se carga una base de datos o diario de transacciones, la clusula file = file_name
permite especificar qu volcado cargar desde un volumen que contiene varios volcados.
Al cargar el volcado desde un volumen con varios archivos, es necesario especificar el
nombre de archivo correcto.
En UNIX:
dump tran publications
to "/dev/nrmt3"
load tran publications
from "/dev/nrmt4"
with file = "cations930590E100"

En OpenVMS:

dump tran publications


to "MTA01"
load database mydb
from "MTA01:"
with file = "cations930590E100"

Los ejemplos siguientes utilizan una convencin de nombre de archivo definida por el
usuario. El nombre de archivo de 15 caracteres, mydb93jul201800 , identifica la base de
datos ( mydb ), la fecha (20 julio 1993) y la hora (18:00 o 6:00 p.m.) en que se realiz el
volcado. El comando de carga avanza la cinta hasta mydb93jul201800 antes de efectuar
la carga.
En UNIX:
dump database mydb
to "/dev/nrmt3"
with file = "mydb93jul201800"
load database mydb
from "/dev/nrmt4"
with file = "mydb93jul201800"

En OpenVMS:
dump database mydb
to "MTA01"
with file = "mydb93jul201800"
load database mydb
from "MTA01:"
with file = "mydb93jul201800"

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gu a de instalacin y
configuracin de SQL Server .

Especificacin de dispositivos de volcado adicionales: clusula stripe on


El listado de volcado permite utilizar varios dispositivos de volcado con un solo
comando de volcado o carga. Use una clusula stripe on adicional para especificar el
nombre (y, si lo desea, las caractersticas) de cada dispositivo.
Cada comando de volcado o carga puede tener un mximo de 31 clusulas stripe on
(para un mximo de 32 dispositivos de volcado):
Tabla 19-10: Uso de ms de un dispositivo de volcado
Copia de seguridad de
Carga de una base de
una base de datos o
datos o diario
diario
dump { database | tran load { database | tran
} database_name
} database_name

to stripe_device
[ at server_name ]
[ density = density ,
blocksize =
number_bytes ,
capacity =
number_kilobytes ,
dumpvolume =
volume_name ,
file = file_name ]

Caractersticas de un dispositivo de
cinta adicional (un conjunto de
opciones por dispositivo; hasta 31
dispositivos)

from stripe_device
[ at server_name ]
[ density = density ,
blocksize =
number_bytes ,
dumpvolume =
volume_name ,
file = file_name ]

[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize =
number_bytes ,
capacity =
number_kilobytes ,
dumpvolume =
volume_name ,
file = file_name ] ...]

[ stripe on
stripe_device
[ at server_name ]
[ density = density ,
blocksize =
number_bytes ,
dumpvolume =
volume_name ,
file = file_name ] ...]

[ with {
density = density ,
blocksize =
number_bytes ,
capacity =
number_kilobytes ,
dumpvolume =
volume_name ,
file = file_name ,
[ nodismount | dismount
],
[ nounload | unload ],
retaindays =
number_days ,
[ noinit | init ],
[ notify = { client |
operator_console }]}]

[ with {
density = density ,
blocksize =
number_bytes ,
dumpvolume =
volume_name ,
file = file_name ,
[ nodismount |
dismount ],
[ nounload | unload ],
[ notify = { client |
operator_console }]}]

Volcado a varios dispositivos


Backup Server divide la base de datos en partes aproximadamente iguales y enva cada
parte a un dispositivo distinto. Los volcados se realizan simultneamente en todos los

dispositivos, reduciendo el tiempo necesario para volcar una base de datos o diario de
transacciones en particular. Dado que cada cinta almacena slo una parte de la base de
datos, es menos probable que deban montarse nuevas cintas en un dispositivo en
particular.
Carga desde varios dispositivos
Para cargar una base de datos o un diario de transacciones, es posible utilizar hasta 32
dispositivos. El uso de varios dispositivos disminuye el tiempo de carga necesario y la
probabilidad de que haya que montar varias cintas en un dispositivo en particular.
Uso de menor cantidad de dispositivos para cargar que para volcar
Aunque uno de los dispositivos de volcado usados en el volcado no est disponible en la
carga, se puede cargar una base de datos o diario. Especifique menos clusulas de
listado en el comando de carga que las usadas en el comando de volcado.
Note: Cuando el volcado y la carga se realizan a travs de la red, es necesario utilizar el
mismo nmero de unidades para ambas operaciones.
Los siguientes ejemplos utilizan tres dispositivos para volcar una base de datos, pero
slo dos para cargarla.
En UNIX:
dump database
stripe on
stripe on
load database
stripe on

pubs2 to ""dev/nrmt0"
"/dev/nrmt1"
"/dev/nrmt2"
pubs2 from "/dev/nrmt0"
"/dev/nrmt1"

En OpenVMS:
dump database
stripe on
stripe on
load database
stripe on

pubs2 to "MTA0:"
"MTA1:"
"MTA2:"
pubs2 from "MTA0:"
"MTA1:"

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .
Despus de cargarse las dos primeras cintas, un mensaje notifica al operador que cargue
la tercera.
Especificacin de las caractersticas de dispositivos individuales
Utilice una clusula at server_name aparte para cada dispositivo de listado conectado a
un Backup Server remoto. Si no especifica el nombre de un Backup Server remoto, el
Backup Server local busca el dispositivo de volcado en la mquina local. Si es

necesario, tambin puede especificar caractersticas distintas ( density , blocksize ,


capacity , dumpvolume y file ) para los dispositivos de listado individuales.
Los siguientes ejemplos utilizan tres dispositivos de volcado, cada uno conectado al
Backup Server remoto REMOTE_BKP_SERVER.
En UNIX:
dump database pubs2
to "/dev/nrmt0" at REMOTE_BKP_SERVER
stripe on "/dev/nrmt1" at REMOTE_BKP_SERVER
stripe on "/dev/nrmt2" at REMOTE_BKP_SERVER

En OpenVMS:
dump database pubs2
to "MTA0:" at REMOTE_BKP_SERVER
stripe on "MTA1:" at REMOTE_BKP_SERVER
stripe on "MTA2:" at REMOTE_BKP_SERVER

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .

Opciones de administracin de cintas


Las opciones de administracin de cintas, que aparecen en la clusula with , se aplican a
todos los dispositivos utilizados para el volcado o la carga. Incluyen:

nodismount para mantener la cinta disponible para otros volcados o cargas.


unload para rebobinar y descargar la cinta despus del volcado o carga.
retaindays para impedir que se escriba sobre los archivos.
init para reinicializar la cinta, en lugar de aadir los archivos de volcado despus
de la ltima marca de fin de cinta
Tabla 19-11: Opciones de administracin de cintas
Copia de seguridad de una
base de datos o diario

Carga de una base de


datos o diario

dump { database | tran }


database_name
to stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes
,
dumpvolume =
volume_name ,
file = file_name ]

load { database | tran }


database_name
from stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes
dumpvolume =
volume_name
file = file_name ]
[ stripe on stripe_device
[ at server_name ]

[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes
,
dumpvolume =
volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes
,
dumpvolume =
volume_name ,
file = file_name ,
Opciones de
administracin de
cintas

[ density = density ,
blocksize = number_bytes
,
dumpvolume =
volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes
,
dumpvolume =
volume_name ,
file = file_name ,

[ nodismount | dismount ],
nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days , [ nounload | unload ],
[ noinit | init ],
[ notify = { client |
operator_console }]}]

[ notify = { client |
operator_console }]}]

Especificacin del desmontaje de cintas


En plataformas que soportan desmontajes lgicos, como OpenVMS, las cintas se
desmontan cuando termina un volcado o una carga. Utilice la opcin nodismount para
mantener la cinta montada y disponible para otros volcados o cargas. Este comando no
tiene efecto en los sistemas UNIX o PC.
Rebobinado de cintas
De forma predeterminada, los comandos de volcado y carga utilizan la opcin
nounload de administracin de cintas.
En sistemas UNIX, esto impide que la cinta se rebobine al terminar el volcado o la
carga y permite volcar otras bases de datos o diarios al mismo volumen, o cargar otras
bases de datos o diarios desde ese volumen. Utilice la opcin unload para que el ltimo
volcado en la cinta rebobine y descargue la cinta cuando se completa el comando.
En sistemas OpenVMS, las cintas siempre se rebobinan al terminar un volcado o carga.
Utilice la opcin unload para rebobinar la cinta y expulsarla de la unidad. (Esta accin
equivale al calificador /UNLOAD del comando DISMOUNT de OpenVMS.)
Proteccin de archivos de volcado contra sobrescritura
El parmetro de configuracin tape retention in days especifica el nmero de das que
deben transcurrir entre la creacin de un archivo de cinta y la hora en que otro volcado

puede sustituir dicho archivo. Esta variable de nivel de sistema, que se define con el
procedimiento del sistema sp_configure , se aplica a todos los volcados solicitados
desde un solo SQL Server.
Utilice la opcin retaindays = number_days para anular el parmetro tape retention in
days para el volcado de una sola base de datos o diario de transacciones. El nmero de
das debe ser un nmero entero positivo, o cero si se puede escribir en la cinta de
inmediato.
Note: tape retention in days y retaindays slo son significativos para discos,
cartuchos de 1/4 pulgada y medios de un solo archivo. En medios de varios archivos,
Backup Server slo verifica la fecha de vencimiento del primer archivo.
Reinicializacin de un volumen antes de un volcado
De forma predeterminada, cada volcado se aade a la cinta despus de la ltima marca
de fin de cinta. Los volmenes de cinta no se reinicializan, lo cual permite volcar varias
bases de datos a un solo volumen. (Los volcados nuevos slo pueden aadirse al ltimo
volumen de un volcado de varios volmenes.)
Utilice la opcin init para sustituir el contenido existente de la cinta. Si especifica init ,
Backup Server reinicializa la cinta sin verificar:

Las restricciones de acceso ANSI


Los archivos que an no han vencido
Los datos que no son de Sybase (cintas "exteriores" en OpenVMS)

La opcin predeterminada, noinit , verifica las tres condiciones y enva una solicitud de
cambio de volumen si alguna de ellas es cierta.
Los siguientes ejemplos inicializan dos dispositivos y sustituyen el contenido existente
por los nuevos volcados del diario de transacciones.
En UNIX:
dump transaction pubs2
to "/dev/nrmt0"
stripe on "/dev/nrmt1"
with init

En OpenVMS:
dump transaction pubs2
to "MTA0:"
stripe on "MTA1:"
with init

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .

Volcado de varias bases de datos a un solo volumen


Siga estos pasos para volcar varias bases de datos al mismo volumen de cinta:
1. Utilice la opcin init para la primera base de datos. Esto sustituye los volcados
existentes y sita el primer volcado al principio de la cinta.
2. Utilice la opcin predeterminada ( noinit y nounload ) para las siguientes bases
de datos. Esto las sita una tras otra en la cinta.
3. Use la opcin unload para la ltima base de datos. Esto rebobina y descarga la
cinta despus de volcar esa base de datos.
La Figura 19-2 ilustra qu opciones utilizar para volcar tres bases de datos a un solo
volumen de cinta.
Figure 19-40: Volcado de varias bases de datos al mismo volumen

Anulacin del destino predeterminado de los mensajes


Los mensajes de Backup Server informan al operador cundo cambiar los volmenes de
cinta y cmo se est procesando el volcado o la carga. El destino predeterminado de
estos mensajes depende de si el sistema operativo ofrece una funcin de terminal de
operador. La opcin notify , que aparece en la clusula with , permite anular el destino
predeterminado de los mensajes de un volcado o carga.
En sistemas operativos, como OpenVMS, que ofrecen una funcin de terminal de
operador, los mensajes de cambio de volumen siempre se envan al terminal de un
operador en la mquina donde se est ejecutando el Backup Server. (OpenVMS dirige
los mensajes a los terminales que estn habilitados para TAPES, DISKS o CENTRAL.)
Utilice notify = client para dirigir otros mensajes de Backup Server a la sesin de
terminal donde se inici la solicitud dump o load .
En sistemas como UNIX que no ofrecen una funcin de terminal de operador, los
mensajes se envan al cliente que inici la solicitud de volcado o carga. Utilice notify =
operator_console para dirigir los mensajes al terminal donde se inici el Backup Server
remoto.
Tabla 19-12: Anulacin del destino predeterminado de los mensajes
Copia de seguridad de una base de
datos o diario
dump { database | tran }
database_name
to stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ]
[ stripe on stripe_device

Carga de una base de datos o


diario
load { database | tran }
database_name
from stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes
dumpvolume = volume_name
file = file_name ]
[ stripe on stripe_device
[ at server_name ]

Destino de los
mensajes

[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days ,
[ noinit | init ],

[ density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],

[ notify = { client |
operator_console }]}]

[ notify = { client |
operator_console }]}]

Obtencin de informacin sobre los archivos de volcado


Si no est seguro del contenido de una cinta, utilice la opcin with headeronly o with
listonly del comando de carga para solicitar esa informacin.
Tabla 19-13: Enumeracin de los encabezados de volcado o nombres de archivo
Enumeracin de informacin sobre un
volcado
load { database | tran } database_name
from stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes
dumpvolume = volume_name
file = file_name ]
[ stripe on stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,

dumpvolume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
Enumerar informacin de
encabezados
Enumerar archivos en cinta

[ headeronly [, file = filename ]],


[ listonly [ = full ]],
[ notify = { client | operator_console }]}]

Note: Ni with headeronly ni with listonly cargan los archivos de volcado despus de
mostrar el informe.
Solicitud de informacin sobre los encabezados de volcado
with headeronly devuelve la informacin de encabezado para un solo archivo. Si no se
especifica un nombre de archivo, with headeronly devuelve informacin sobre el
primer archivo de la cinta.
El encabezado indica si el volcado es de una base de datos o de un diario de
transacciones, la ID de la base de datos, el nombre del archivo y la fecha del volcado.
En el caso de volcados de bases de datos, tambin se muestra el juego de caracteres, el
criterio de ordenacin y el nmero de pginas, y la ID del siguiente objeto. En el caso
de volcados de diarios de transacciones, se muestra la ubicacin del punto de
verificacin en el diario, la ubicacin del registro begin transaction ms antiguo y las
fechas antigua y nueva de la secuencia.
Los siguientes ejemplos devuelven la informacin de encabezado del primer archivo de
la cinta y luego del archivo mydb9229510945 .
En UNIX:
load database mydb
from "/dev/nrmt4"
with headeronly
load database mydb
from "/dev/nrmt4"
with headeronly, file = "mydb9229510945"

En OpenVMS:
load database mydb
from "MTA01:"
with headeronly
load database mydb
from "MTA01:"
with headeronly, file = "mydb9229510945"

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .
Este es un ejemplo de la salida de headeronly :
La id de sesin de Backup Server es: 44. Use este valor cuando
ejecute el procedimiento almacenado del sistema 'sp_volchanged'
despus de satisfacer cualquier solicitud de cambio de volumen de
Backup Server.
Backup Server: 4.28.1.1: Nombre de archivo de volcado
'mydb9232610BC8', nmero de seccin 0001 montado en dispositivo
'backup/SQL_SERVER/mydb.db.dump'
This is a database dump of database ID 5 from Nov 21 1992 7:02PM.
La base de datos contiene 1536 pginas; punto de verificacin
RID=(Rid pageid = 0x404; row num = 0xa); ID de objeto siguiente=3031;
ID de ordenacin=50, estado=0; ID de juego de caracteres=1.

Determinacin de la base de datos, dispositivo, nombre de archivo y fecha


with listonly devuelve una breve descripcin de cada archivo de volcado que haya en
un volumen. Incluye el nombre de la base de datos, el dispositivo usado para realizar el
volcado, el nombre de archivo, la fecha y hora en que se realiz el volcado, y la fecha y
hora en que puede sustituirse. with listonly = full proporciona un mayor detalle. Ambos
informes aparecen ordenados por la etiqueta de cinta de SQL.
Este es un ejemplo de la salida de load database with listonly :
Backup Server: 4.36.1.1: Dispositivo '/dev/nrst0':
Nombre de archivo: 'model9320715138 '
Fecha y hora de creacin: Monday, Jul 26, 1993, 23:58:48
Fecha y hora de expiracin: Monday, Jul 26, 1993, 00:00:00
Nombre de base de datos: 'model
'

y este es un ejemplo de la salida con with listonly = full :


Backup Server: 4.37.1.1: Dispositivo '/dev/nrst0':
id de rtulo: 'HDR1'
Nombre de archivo:'model9320715138 '
Cuenta de listados:0001
Cuenta de tipos de dispositivos:01
Nmero de volumen de archivo:0001
Posicin del listado:0000
Nmero de generacin:0001
Versin de generacin:00
Fecha y hora de creacin:Monday, Jul 26, 1993, 23:58:48
Fecha y hora de expiracin:Monday, Jul 26, 1993, 00:00:00
Cdigo de acceso:' '
Cuenta de bloques de archivos:000000
cadena de id de Sybase:
'Sybase 'Reservado:'
'
Backup Server: 4.38.1.1: Dispositivo '/dev/nrst0':
id de rtulo:'HDR2'
Formato de registro:'F'
Max. de bytes/bloques:55296
Longitud de registro:02048

Versin de formato de copia de seguridad:01


Reservado:'
'
Nombre de base de datos:'model
Longitud de desplazamiento de memoria intermedia:00
Reservado:'
'

'

Despus de enumerar todos los archivos de un volumen, el Backup Server enva una
solicitud de cambio de volumen:
Backup Server: 6.30.1.2: Dispositivo /dev/nrst0: Catalogacin de
volumen completa.
Backup Server: 6.51.1.1: OPERADOR: Monte el siguiente volumen a
investigar.
Backup Server: 6.78.1.1: EJECUTE sp_volchanged
@session_id = 5,
@devname = '/dev/nrst0',
@action = { 'PROCEED' | 'RETRY' | 'ABORT' },
@fname = '

El operador puede montar otro volumen y generar seales de cambio de volumen con
sp_volchanged o utilizar sp_volchanged para terminar la operacin de bsqueda de
todos los dispositivos de listado.

Copia del diario despus de un fallo del dispositivo


Normalmente, el comando dump transaction trunca la parte inactiva del diario despus
de copiarlo. Utilice la opcin with no_truncate para copiar el diario sin truncarlo.
La opcin no_truncate permite copiar el diario de transacciones despus del fallo del
dispositivo que contiene los datos, ya que utiliza punteros en las tablas del sistema
sysdatabases y sysindexes para determinar la ubicacin fsica del diario de
transacciones. Dicha opcin slo puede utilizarse si el diario est en un segmento aparte
y la base de datos master es accesible.
Warning! Use no_truncate slo si el fallo del medio hace inaccesible el segmento de
datos. Nunca utilice no_truncate en una base de datos en uso.
Copiar el diario con la opcin with no_truncate es el primer paso descrito en
"Recuperacin de una base de datos: instrucciones paso a paso". Para recuperar una
base de datos por completo, siga los pasos de esa seccin.
Tabla 19-14: Copia del diario despus del fallo de un dispositivo
dump transaction database_name
to stripe_device
[ at server_name ]
[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ]
[ stripe on stripe_device
[ at server_name ]

[ density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dump volume = volume_name ,
file = file_name ] ...]
[ with {
density = density ,
blocksize = number_bytes ,
capacity = number_kilobytes ,
dumpvolume = volume_name ,
file = file_name ,
[ nodismount | dismount ],
[ nounload | unload ],
retaindays = number_days ,
[ noinit | init ],

No truncar el diario no_truncate ,


[ notify = { client | operator_console }]}]
Se puede utilizar no_truncate con volcados de listado, inicializacin de cintas y
Backup Servers remotos. Este es un ejemplo:
dump transaction mydb
to "/dev/nrmt0" at REMOTE_BKP_SERVER
with init, no_truncate,
notify = "operator_console"

Truncado de un diario que no est en un segmento aparte


Si una base de datos no tiene un segmento aparte para el diario, no se puede utilizar d
ump transaction para copiar el diario y luego truncarlo. Para estas bases de datos, es
necesario:
1. Utilizar la opcin especial with truncate_only de dump transaction para
truncar el diario y evitar que agote el espacio.
2. Utilizar d ump database para copiar toda la base de datos, incluido el diario.
Dado que la opcin with truncate_only no copia datos, slo requiere el nombre de la
base de datos:
dump transaction

database_name

with truncate_only

El siguiente ejemplo vuelca la base de datos mydb , que no tiene un segmento aparte
para el diario, y luego trunca el diario:
dump database mydb to mydevice
dump transaction mydb with truncate_only

Truncado del diario en entornos de desarrollo inicial


En entornos de desarrollo inicial, el diario de transacciones se llena rpidamente debido
al proceso de crear, omitir y volver a crear procedimientos almacenados y disparadores,
y verificar las restricciones de integridad. Recuperar los datos puede ser menos
importante que garantizar que haya espacio adecuado en los dispositivos de base de
datos.
La opcin with truncate_only de dump transaction suele ser til en estos entornos, ya
que permite truncar el diario de transacciones sin realizar una copia de seguridad:
dump transaction

database_name

with truncate_only

Despus de ejecutar dump transaction with truncate_only , SQL Server requiere que
se vuelque la base de datos antes de permitir realizar un volcado rutinario del diario.

Truncado de un diario que no tiene espacio libre


Cuando el diario est muy lleno, es probable que no se pueda utilizar el mtodo habitual
para volcarlo. Si se ha utilizado dump transaction o dump transaction with
truncate_only , y el comando falla porque no hay suficiente espacio para el diario,
utilice la opcin especial with no_log de dump transaction :
dump transaction

database_name

with no_log

Esta opcin especial trunca el diario sin registrar la transaccin del volcado. Dado que
no copia datos, slo requiere el nombre de la base de datos.
Warning! Utilice dump transaction with no_log como ltimo recurso, y selo slo
una vez despus de que falle dump transaction with truncate_only . El comando
dump transaction with no_log libera muy poco espacio en el diario de transacciones.
Si contina cargando datos despus de introducir dump transaction with no_log , el
diario puede llenarse por completo, provocando el fallo de los comandos dump
transaction siguientes. Utilice el comando alter database para asignar espacio
adicional a la base de datos.
Todas las ejecuciones de dump tran with no_log se anotan en el diario de errores de
SQL Server. El mensaje incluye la ID del usuario que ejecuta el comando. Tambin se
envan mensajes al diario de errores, indicando el xito o fallo. no_log es la nica
opcin de volcado que genera mensajes en el diario de errores.
Peligros de utilizar with truncate_only y with no_log

with truncate_only y with no_log permiten truncar un diario con una carencia
desastrosa escaso de espacio libre. Ninguna de estas opciones proporciona un medio de
recuperar las bases de datos.
Despus de ejecutar dump transaction with truncate_only o with no_log , no hay
forma de recuperar transacciones consignadas despus del ltimo volcado rutinario.
Warning! Ejecute dump database ni bien pueda para garantizar la recuperacin de los
datos.
El siguiente ejemplo trunca el diario de transacciones de mydb y luego vuelca la base de
datos:
dump transaction mydb
with no_log
dump database mydb to ...

Provisin de suficiente espacio para el diario


Cada uso de dump transaction...with no_log se considera un error y se registra en el
diario de errores del servidor. Si cre las bases de datos con segmentos separados para
el diario, escribi un procedimiento de umbral de ltima oportunidad que vuelca el
diario de transacciones con suficiente frecuencia y asign suficiente espacio al diario y
la base de datos, no debera ser necesario usar esta opcin.
Sin embargo, algunas situaciones pueden provocar que el diario de transacciones se
llene demasiado, incluso con volcados frecuentes del diario. El comando dump
transaction trunca el diario quitando todas las pginas del principio del diario, hasta la
pgina situada justo antes de la que contiene un registro de transaccin no consignada
(denominada transaccin activa ms antigua). Cuanto ms tiempo permanezca sin
consignar esta transaccin activa, menos espacio habr disponible en el diario de
transacciones, ya que dump transaction no puede truncar pginas adicionales.
Esto puede suceder en situaciones donde las aplicaciones con transacciones muy largas
modifican tablas de una base de datos con un diario pequeo, lo cual indica que se
debera aumentar el tamao del diario. Tambin sucede cuando inadvertidamente
quedan transacciones no consignadas durante largos periodos de tiempo, como cuando
un begin transaction implcito utiliza el modo de transaccin encadenada o cuando un
usuario olvida completar la transaccin. Para determinar la transaccin activa ms
antigua en cada base de datos, consulte la tabla del sistema syslogshold .
Tabla syslogshold
La tabla syslogshold existe en la base de datos master . Cada fila de la tabla representa:

La transaccin activa ms antigua de una base de datos, o


El punto de truncado de Replication Server(R) para el diario de la base de datos.

Una base de datos puede carecer de filas en syslogshold , tener una fila que represente
una de las situaciones indicadas arriba o tener dos filas representando ambas
situaciones. Para obtener informacin sobre cmo un punto de truncado de Replication

Server afecta al truncado del diario de transacciones de la base de datos, consulte la


documentacin de Replication Server.
Si consulta syslogshold , obtendr una "instantnea" de la situacin actual en cada base
de datos. Dado que la mayora de las transacciones slo duran muy poco tiempo, el
resultado de la consulta puede ser inconsistente. Por ejemplo, la transaccin activa ms
antigua descrita en la primera fila de syslogshold puede terminar antes de que SQL
Server finalice la consulta de syslogshold . Sin embargo, cuando varias consultas
sucesivas de syslogshold producen la misma fila para una base de datos, la transaccin
puede impedir que un dump transaction trunque espacio en el diario.
Cuando el diario de transacciones llega al umbral de ltima oportunidad y dump
transaction no puede liberar espacio en el diario, se puede hacer una consulta en s
yslogshold y sysindexes para identificar la transaccin que impide el truncado. Por
ejemplo:
select H.spid, H.name
from master..syslogshold H, threshdb..sysindexes I
where H.dbid = db_id("threshdb")
and I.id = 8
and H.page = I.first
spid
name
------ ------------------------------------8 $user_transaction
(1 row affected)

Esta consulta utiliza la ID de objeto asociada con syslogs (8) en la base de datos
threshdb para que la primera pgina de su diario de transacciones coincida con la
primera pgina de la transaccin activa ms antigua en syslogshold .
Tambin se puede hacer una consulta en s yslogshold y sysprocesses de la base de datos
master para identificar la computadora principal y la aplicacin especficas que poseen
las transacciones activas ms antiguas. Por ejemplo:
select P.hostname, P.hostprocess, P.program_name,
H.name, H.starttime
from sysprocesses P, syslogshold H
where P.spid = H.spid
and H.spid != 0
hostname hostprocess program_name name
-------- ----------- ------------ ----------------------starttime
----------------------------eagle
15826
isql
$user_transaction
Sep 6 1995 4:29PM
hawk
15859
isql
$user_transaction
Sep 6 1995 5:00PM
condor
15866
isql
$user_transaction
Sep 6 1995 5:08PM
(3 rows affected)

Usando la informacin anterior, es posible notificar o destruir el proceso de usuario que


posee la transaccin activa ms antigua y continuar con el comando dump transaction

. Tambin pueden incluirse los tipos de consulta anteriores en los procedimientos de


umbral de la base de datos como mecanismo automtico de alerta. Por ejemplo, puede
decidirse que el diario de transacciones nunca alcance su umbral de ltima oportunidad.
Si lo hiciera, el procedimiento de umbral de ltima oportunidad ( sp_thresholdaction )
informar que la transaccin activa ms antigua est impidiendo el volcado del diario de
transacciones.
Note: Los registros iniciales del diario correspondientes a una transaccin pueden
residir en un cach de diario del usuario, que no es visible en syslogshold hasta que los
registros se vacen al diario (por ejemplo, despus de un punto de verificacin).
Para obtener ms informacin sobre la tabla del sistema syslogshold , consulte el
Suplemento de Referencia de SQL Server . Para obtener informacin sobre los
procedimientos de umbral de ltima oportunidad y de umbral, consulte el Captulo 21,
"Administracin de espacio libre con umbrales".

Respuesta a las solicitudes de cambio de volumen


En plataformas UNIX y PC, utilice el procedimiento del sistema sp_volchanged para
notificar al Backup Server cundo se han montado los volmenes correctos. En sistemas
OpenVMS, use el comando REPLY .
Para utilizar sp_volchanged , conctese con cualquier SQL Server que pueda
comunicarse con el Backup Server que realiz la solicitud de cambio de volumen y con
el SQL Server que inici el volcado o la carga.
Sintaxis de sp_volchanged
Utilice la sintaxis siguiente para sp_volchanged :
sp_volchanged
[
,fname

session_id, devname , action


[,
vname ] ]

Utilice los parmetros session_id y devname especificados en la solicitud de


cambio de volumen.
action especifica si se aborta ( abort ), se contina con ( proceed ), o se
reintenta ( retry ), el volcado o la carga.
fname especifica qu archivo cargar. Si no se especifica un nombre de archivo
con sp_volchanged , el Backup Server toma el parmetro file = file_name del
comando de carga. Si ni sp_volchanged ni el comando de carga especifican qu
archivo cargar, el Backup Server carga el primer archivo de la cinta.
El Backup Server escribe el vname en la etiqueta de la cinta ANSI cuando
sustituye un volcado existente, vuelca datos a una cinta completamente nueva, o
vuelca datos a una cinta cuyo contenido no es reconocible. Durante las cargas, el
Backup Server utiliza el vname para confirmar el montaje de la cinta correcta. Si
no se especifica un vname con sp_volchanged , el Backup Server utiliza el
nombre de volumen especificado en el comando de volcado o carga. Si ni
sp_volchanged ni el comando especifican un nombre de volumen, el Backup
Server no verifica este campo en la etiqueta de cinta ANSI.

Mensajes de cambio de volumen para volcados


Esta seccin describe los mensajes de cambio de volumen que aparecen al volcar una
base de datos o un diario de transacciones. Para cada mensaje, se indican las acciones de
operador posibles y la respuesta sp_volchanged adecuada.

Monte el siguiente volumen a investigar.Si, al aadirse un volcado a un volumen


existente, el Backup Server no encuentra la marca de fin de archivo, presenta el
mensaje anterior.
El operador puede
Abortar el volcado
Montar un nuevo volumen y continuar
con el volcado

Contestando
sp_volchanged session_id , devname ,
abort
sp_volchanged session_id , devname ,
proceed
[, fname [, vname ]]

Monte el siguiente volumen a escribir.El Backup Server presenta este mensaje


cuando llega al final de la cinta. Esto sucede cuando detecta la marca de fin de
cinta, vuelca el nmero de kilobytes especificado por el parmetro capacity del
comando de volcado, o vuelca el valor high especificado para el dispositivo en la
tabla del sistema sysdevices .
El operador puede
Abortar el volcado

Contestando
sp_volchanged session_id , devname
, abort

sp_volchanged session_id , devname


Montar el siguiente volumen y continuar
, proceed
con el volcado
[, fname [, vname ]]

El volumen en el dispositivo 'devname' tiene acceso restringido (cdigo


'access_code'). Los volcados que especifican la opcin init sustituyen el
contenido existente de la cinta. Backup Server presenta este mensaje si se intenta
volcar datos a una cinta con restricciones de acceso ANSI, sin especificar la
opcin init .
El operador puede
Abortar el volcado

Contestando
sp_volchanged session_id ,
devname , abort

sp_volchanged session_id ,
Montar otro volumen y reintentar el volcado devname , retry
[, fname [, vname ]]
sp_volchanged session_id ,
Continuar con el volcado, escribiendo sobre
devname , proceed
el contenido existente
[, fname [, vname ]]

El volumen del dispositivo 'devname' ha expirado y ser rescrito.Los volcados


que especifican la opcin init se escriben sobre el contenido existente de la
cinta. Durante los volcados a medios de un solo archivo, si no se especific la
opcin init y la cinta contiene un volcado cuya fecha de vencimiento ha pasado,
Backup Server muestra este mensaje.
El operador puede
Abortar el volcado
Montar otro volumen y reintentar el
volcado

Contestando
sp_volchanged session_id ,
devname , abort
sp_volchanged session_id ,
session_id , retry
[, session_id [, session_id ]]

sp_volchanged session_id ,
Continuar con el volcado, escribiendo sobre
session_id , proceed
el contenido existente
[, session_id [, session_id ]]

El volumen que se va a rescribir en 'devname' no ha expirado: la fecha de


creacin de este volumen es 'creation_date', la fecha de expiracin es
'expiration_date'. En medios de un solo archivo, el Backup Server verifica la
fecha de vencimiento de cualquier volcado existente a menos que se especifique
la opcin init . El Backup Server presenta este mensaje si el volcado an no ha
vencido.
El operador puede

Contestando

Abortar el volcado

sp_volchanged session_id ,
session_id , abort

Montar otro volumen y reintentar el


volcado

sp_volchanged session_id ,
session_id , retry
[, session_id [, session_id ]]

sp_volchanged session_id ,
Continuar con el volcado, escribiendo sobre
session_id , proceed
el contenido existente
[, session_id [, session_id ]]

El volumen que se va a rescribir en 'devname' tiene datos de rtulo no


reconocidos.Los volcados que especifican la opcin init se escriben sobre el
contenido existente de la cinta. Backup Server presenta este mensaje si se intenta
volcar datos a una cinta nueva o a una cinta con datos que no son de Sybase, sin
especificar la opcin init .
El operador puede

Contestando

Abortar el volcado

sp_volchanged session_id ,
session_id , abort

Montar otro volumen y reintentar el


volcado

sp_volchanged session_id ,
session_id , retry
[, session_id [, session_id ]]

sp_volchanged session_id ,
Continuar con el volcado, escribiendo sobre
session_id , proceed
el contenido existente
[, session_id [, session_id ]]
Mensajes de cambio de volumen para cargas
Los mensajes de cambio de volumen y las posibles acciones del operador durante las
cargas se discuten a continuacin:

Se encontr la seccin 'vname' del archivo de volcado 'fname' en lugar de la


seccin 'vname' de 'fname'. El Backup Server presenta este mensaje si no
encuentra el archivo especificado en un medio de un solo archivo.
El operador puede
Abortar la carga
Montar otro volumen e intentar cargarlo

Contestando
sp_volchanged session_id ,
session_id , abort
sp_volchanged session_id ,
session_id , retry
[, session_id [, session_id ]]

Cargar el archivo en el volumen montado


sp_volchanged session_id ,
actualmente, aunque no sea el archivo especificado session_id , proceed
(no es aconsejable)
[, session_id [, session_id ]]

Monte el siguiente volumen a leer.El Backup Server presenta este mensaje


cuando est preparado para leer la seccin siguiente del archivo de un volcado
de varios volmenes.
El operador puede

Contestando

Abortar la carga

sp_volchanged session_id , session_id , abort

Montar el volumen siguiente y


continuar con la carga

sp_volchanged session_id , session_id ,


proceed [, session_id [, session_id ]]

Monte el siguiente volumen a investigar.El Backup Server presenta este mensaje


si no encuentra el archivo especificado en un medio de varios archivos.
El operador puede

Contestando
sp_volchanged session_id , session_id ,
Abortar la carga
abort
sp_volchanged session_id , session_id ,
Montar otro volumen y continuar con
proceed
la carga
[, session_id [, session_id ]]

Recuperacin de una base de datos: instrucciones paso a paso

Los sntomas de un fallo de medios son tan variables como las causas. Si slo hay un
bloque defectuoso en el disco, puede parecer que la base de datos funciona
perfectamente durante algn tiempo despus de la corrupcin, a menos que se ejecuten
comandos dbcc con frecuencia. Si todo un disco o un controlador de disco presentan
problemas, no se podr utilizar ( use ) la base de datos. SQL Server los marca como
sospechosos y muestra un mensaje de advertencia. Si falla el disco que contiene la base
de datos master , los usuarios no podrn conectarse con el servidor, y los ya conectados
no podrn realizar ninguna accin que tenga acceso a las tablas del sistema de master.
Esta seccin describe qu hacer cuando un dispositivo de base de datos falla. El
procedimiento recomendado incluye estos pasos:
1. Obtenga un volcado actual de los diarios de todas las bases de datos que haya
en el dispositivo .
2. Examine el uso de espacio de todas las bases de datos del dispositivo .
3. Una vez reunida esa informacin de todas las bases de datos del dispositivo,
omtalas.
4. Omita el dispositivo fallido.
5. Inicialice nuevos dispositivos.
6. Vuelva a crear las bases de datos, una por vez.
7. Cargue el volcado ms reciente en cada base de datos.
8. Aplique cada volcado de diario de transacciones por orden de creacin.
Estos pasos se describen en detalle en las secciones siguientes.
Obtencin de un volcado actual del diario de transacciones
Utilice dump transaction with no_truncate para obtener un volcado actual de los
diarios de transacciones de todas las bases de datos del dispositivo fallido . Por
ejemplo, para obtener un volcado actual del diario de transacciones de mydb :
dump transaction mydb
to "/dev/nrmt0" at REMOTE_BKP_SERVER
with init, no_truncate,
notify = "operator_console"

Examen de las asignaciones de dispositivos


Los pasos siguientes son aconsejables para determinar qu dispositivos utiliza la base de
datos, cunto espacio hay asignado en cada dispositivo, y si el espacio se usa para datos,
diario o ambos. Esta informacin puede utilizarse para volver a crear las bases de datos
y garantizar que el diario, los datos y los ndices residan en dispositivos aparte, y para
preservar el alcance de los segmentos de usuario que se hubieran creado.
Note: Estos pasos tambin permiten preservar las correlaciones de segmentos cuando el
volcado de una base de datos se desplaza de un servidor a otro (en la misma plataforma
de hardware y software).
Si no se utiliza esta informacin para volver a crear las asignaciones de dispositivos de
las bases de datos daadas, SQL Server volver a correlacionar la tabla sysusages
despus de la ejecucin de load database para acabar con las discrepancias. Esto

significa que los segmentos de base de datos definidos por el sistema y por el usuario ya
no coincidirn con las asignaciones de dispositivos adecuadas. La presencia de
informacin incorrecta en sysusages puede provocar que el diario se almacene en los
mismos dispositivos que los datos, aunque los datos y el diario estuvieran separados
antes de la recuperacin. Tambin puede cambiar los segmentos definidos por el usuario
de manera imprevisible, y resultar en la creacin de una base de datos imposible de
crear con un comando create database estndar.
Siga estos pasos para examinar y registrar las asignaciones de dispositivos para todas las
bases de datos daadas:
1. En master , para examinar las asignaciones y usos de dispositivos de la base de
datos daada, utilice la consulta siguiente:
select segmap, size from sysusages
where dbid = db_id(" database_name

")

2. Examine la salida de la consulta. Cada fila con un segmap de "3" representa un


asignacin de datos; si tiene un segmap de "4", representa una asignacin de
diario. Valores ms altos indican segmentos definidos por el usuario; trtelos
como asignaciones de datos para preservar el alcance de estos segmentos. La
columna size indica el nmero de bloques de 2K de datos. Para hallar el nmero
de megabytes, divida dicho nmero por 512. Anote el orden, uso y tamao de
cada parte del disco.
Por ejemplo, esta salida:
segmap
------3
3
4
8
4

size
-------10240
5120
5120
1024
2048

se traduce en los tamaos y usos descritos en la Tabla 19-15.


Tabla 19-15: Ejemplo de asignacin de dispositivos
Asignacin de dispositivos

Megabytes

Datos

20

Datos

10

Diario

10

Datos (segmento definido por el usuario) 2


Diario

Note: Si la columna segmap contiene un 7, entonces los datos y el diario estn en el


mismo dispositivo, y slo es posible recuperar hasta el punto del volcado ms reciente
de la base de datos. No utilice la opcin log on de create database , pero asegrese de
asignar tanto (o ms espacio) que el total indicado por sysusages .

1. Ejecute sp_helpdb database_name para la base de datos. Esta consulta enumera


los dispositivos donde estn situados los datos y los diarios:
name
------mydb

db_size owner
------- -----46.0 MB sa

status
-------------no options set

dbid
---15

device_fragments
---------------datadev1
datadev2
datadev3
logdev1
logdev1

created
----------Apr 9 1991
size
-----20 MB
10 MB
2 MB
10 MB
4 MB

usage
-----------data only
data only
data only
log only
log only

Omisin de las bases de datos


Una vez realizados los pasos anteriores para todas las bases de datos del dispositivo
fallido , utilice el comando drop database para omitir cada base de datos.
Note: Si las tablas de otras bases de datos contienen referencias a tablas de la base de
datos que se intenta omitir, es necesario quitar las restricciones de integridad de
referencia con alter table antes de omitir la base de datos.
Si el sistema comunica errores porque la base de datos estaba daada cuando se ejecut
el comando drop database , utilice la opcin dropdb del comando dbcc dbrepair :
dbcc dbrepair (mydb, dropdb)

Consulte la Gua de Solucin de Problemas de SQL Server para obtener ms


informacin sobre dbcc dbrepair .
Omisin de los dispositivos fallidos
Despus de haber omitido cada base de datos, utilice sp_dropdevice para omitir el
dispositivo fallido. Consulte el Manual de Referencia de SQL Server para obtener
informacin sobre este procedimiento del sistema.
Inicializacin de nuevos dispositivos
Utilice disk init para inicializar los nuevos dispositivos de base de datos. Consulte el
Captulo 6, "Inicializacin de dispositivos de base de datos", para obtener informacin
completa.
Recreacin de las bases de datos
Utilice los pasos siguientes para volver a crear cada base de datos usando la informacin
de segmentos obtenida anteriormente.
Note: Si decidi no obtener informacin sobre el uso de los segmentos, utilice create
database...for load para crear una nueva base de datos que sea tan grande al menos
como la original.

1. Utilice el comando create database con la opcin for load . Duplique todas las
correlaciones y tamaos de fragmentos de dispositivo para cada fila de la tabla
sysusages correspondiente a la base de datos, hasta el primer dispositivo de
diario, inclusive . Asegrese de seguir el orden en que las filas aparecen en
sysusages . (El resultado de sp_helpdb se presenta en orden alfabtico por
nombre de dispositivo, no por orden de asignacin.) Por ejemplo, para volver a
crear las asignaciones de la base de datos mydb mostradas en la Tabla 19-15,
pgina 19-44, introduzca el comando:
create database mydb
on datadev1 = 20,
datadev2 = 10
log on logdev1 = 10
for load

Note: create database...for load impide temporalmente que los usuarios


utilicen la base de datos recin creada, y load database marca la base de datos
como fuera de lnea para uso general. Esto evita que los usuarios realicen
transacciones no registradas en el diario durante la recuperacin.

2. Utilice el comando alter database con la opcin for load para volver a crear las
restantes entradas por orden. Trate las asignaciones de dispositivos para
segmentos de usuario como si fueran asignaciones de datos.
En este ejemplo, para asignar ms espacio de datos a datadev3 y ms espacio de
diario a logdev1 , el comando es:
alter database mydb
on datadev3 = 2
log on logdev1=4
for load

Carga de la base de datos


Vuelva a cargar la base de datos usando load database . Si la base de datos original
contena objetos en segmentos definidos por el usuario ( sysusages indica un segmap
mayor de 4) y las nuevas asignaciones de dispositivos coinciden con las de la base de
datos volcada, SQL Server preserva las correlaciones de segmentos del usuario.
Si no cre las nuevas asignaciones de dispositivos para que coincidieran con las de la
base de datos volcada, SQL Server volver a correlacionar segmentos a las asignaciones
de dispositivos disponibles. Es posible que esta nueva correlacin tambin combine
diario y datos en el mismo dispositivo fsico.
Note: Si se produce otro fallo mientras se carga una base de datos, SQL Server no
recupera la base de datos cargada parcialmente, y lo notifica al usuario. Para reiniciar la
carga de la base de datos, repita el comando load .
Carga del diario de transacciones

Utilice load transaction para aplicar las copias de seguridad de los diarios de
transacciones en la misma secuencia en que se realizaron . Cargue primero el volcado
ms antiguo y finalice con el ms reciente.
SQL Server verifica las marcas horarias de cada base de datos y diario de transacciones
volcados. Si los volcados se cargan en el orden equivocado o si las transacciones de
usuario han modificado el diario de transacciones entre las cargas, falla la carga.
Una vez actualizada una base de datos, utilice comandos dbcc para verificar su
coherencia.
Puesta en lnea de las bases de datos
Despus de haber aplicado todos los volcados del diario de transacciones a una base de
datos, utilice el comando online database para habilitarla. En este ejemplo, el comando
para poner la base de datos mydb en lnea es:
online database mydb

Bases de datos replicadas


Las bases de datos replicadas no deben ponerse en lnea hasta que los diarios estn
drenados. Si intenta hacerlo antes, SQL Server muestra el siguiente mensaje:
Database is replicated, but the log is not yet drained. This database
will come online automatically after the log is drained.

Cuando el servidor de replicacin, por medio de LTM, drena el diario, el comando


online database se ejecuta automticamente.Actualizacin a la versin 11.0
Antes de actualizarlas a la versin 11.0, las bases de datos replicadas deben estar en
lnea, y no lo estarn hasta que sus diarios hayan sido drenados (lo cual ejecutar
automticamente el comando online database ).
Consulte la gua de instalacin y configuracin de SQL Server para obtener
instrucciones sobre el procedimiento de actualizacin para usuarios de SQL Server que
han replicado bases de datos.Secuencia de carga
La secuencia para cargar bases de datos replicadas es: load database , replicate , load
transaction , replicate , etc. Al final de la secuencia de carga, es necesario ejecutar el
comando online database para poner las bases de datos en lnea. Replication Server no
pone automticamente en lnea a las bases de datos fuera de lnea que estn en una
secuencia de carga. Es crucial no ejecutar el comando online database hasta que todos
los diarios de transacciones estn cargados.

Actualizacin de volcados de bases de datos de usuario


Cuando una instalacin de SQL Server se mejora con una nueva versin, todas las bases
de datos asociadas a ese servidor se actualizan automticamente.

Como resultado, los volcados de bases de datos y de diarios de transacciones creados


con cualquier SQL Server anterior deben ser actualizados antes de usarse con el SQL
Server actual.
SQL Server, versin 11.0, proporciona un mecanismo de actualizacin automtica, para
una base de datos a la vez, para actualizar un volcado de base de datos o diario de
transacciones desde cualquier SQL Server versin 10.0 a la versin actual de SQL
Server, haciendo compatible as el volcado. Este mecanismo es completamente interno
en la versin 11.0 de SQL Server, por lo que no requiere ningn programa externo, y
aporta la flexibilidad de actualizar volcados individuales conforme sea necesario.
Las siguientes tareas no estn soportadas por esta funcionalidad de actualizacin
automtica:

Carga de la base de datos master de un SQL Server, versin 10.0, a la versin


11.0.
Instalacin de procedimientos almacenados nuevos o modificados. Contine
utilizando installmaster .
Carga y actualizacin de volcados anteriores a la versin 10.0 de SQL Server.

Cmo actualizar un volcado a la versin 11.0 de SQL Server


El proceso de actualizar un volcado de base de datos de usuario o de diario de
transacciones a la versin actual de SQL Server comprende los pasos siguientes:
1. Utilice load database y load transaction para cargar el volcado que desea
actualizar.
SQL Server determina por el encabezado del volcado qu versin est cargando.
Despus de leer el encabezado y antes de que Backup Server comience la carga,
los comandos load database o load transaction marcan la base de datos como
fuera de lnea. Esto hace que la base de datos no est disponible para uso general
(las consultas y use database no estn permitidos), proporciona al usuario un
mayor control sobre las secuencias de carga, y elimina la posibilidad de que
otros usuarios interrumpan accidentalmente una secuencia de carga.
2. Una vez cargado satisfactoriamente el volcado, utilice el comando online
database , para activar el proceso de actualizacin.
No ejecute el comando online database hasta haber cargado todos los volcados
del diario de transacciones.
Antes de la versin 11.0 de SQL Server, una base de datos estaba disponible
automticamente al final de una secuencia de carga satisfactoria. Con la versin
11.0 de SQL Server, el usuario debe poner la base de datos en lnea despus de
una secuencia de carga satisfactoria usando el comando online database .
Para los volcados cargados desde la versin 10.0 de SQL Server, el comando
online database activa el proceso para actualizar los volcados recin cargados.

Despus de que la actualizacin termine satisfactoriamente, SQL Server pone la


base de datos en lnea, que queda lista para su uso.
Para volcados cargados desde la versin 11.0 de SQL Server, no se activa
ningn proceso de actualizacin. Aun as es necesario ejecutar el comando
online database para poner la base de datos en lnea, y hacerla disponible al
pblico. (El comando load database marca la base de datos como fuera de
lnea.)
Durante el proceso de actualizacin, cada paso produce un mensaje indicando lo
que va a hacer.
Un fallo en la actualizacin deja la base de datos fuera de lnea y genera un
mensaje indicando que la actualizacin fall y que el usuario debe corregir el
fallo.
Para obtener ms informacin sobre online database , consulte el Manual de
Referencia de SQL Server .
3. Despus de la ejecucin satisfactoria de online database , utilice el comando
dump database . La base de datos debe volcarse antes de que se permita un
dump transaction . No es posible ejecutar un comando dump transaction en
una base de datos recin creada o actualizada sin que haya habido un dump
database satisfactorio.
Bit de estado "base de datos fuera de lnea"
El bit de estado "base de datos fuera de lnea" indica que la base de datos no est
disponible para uso general. Utilice sp_helpdb para determinar si una base de datos est
fuera de lnea; en caso de que as sea, este bit est definido.
Cuando l oad database marca una base de datos como fuera de lnea, se define un bit
de estado en la tabla sysdatabases y permanece definido hasta la culminacin
satisfactoria de online database .
El bit de estado database offline funciona en combinacin con otros bits de estado
existentes, y aumenta el bit de estado "In recovery" para proporcionar control adicional.
El bit de estado database offline anula los siguientes bits de estado:

DBO use only


Read only

Los siguientes bits de estado anulan el bit de estado database offline :

Began upgrade
Bypass recovery
In load
Not recovered
Suspect

Use not recovered

Aunque la base de datos no est disponible para uso general, los comandos siguientes
estn permitidos por estar fuera de lnea:

dump database y dump transaction


load database y load transaction
alter database on device (para Secure SQL Server(TM), alter database set
maxhold no est permitido)
drop database
online database
diagnsticos de dbcc (sujetos a las restricciones de dbcc )

Identificadores de versin
La funcin de actualizacin automtica proporciona identificadores de versin para
SQL Server, bases de datos y formatos de registro de los diarios. Son:
ID de la versin de actualizacin de configuracin
Este identificador muestra la versin actual de SQL Server y se almacena en la tabla del
sistema sysconfigures . sp_configure muestra la versin actual de SQL Server como
"versin de actualizacin".
Indicador de versin de actualizacin
Este identificador muestra la versin actual de una base de datos y se guarda en los
encabezados de la base de datos y volcados. El mecanismo de recuperacin de SQL
Server utiliza este valor para determinar si la base de datos debe actualizarse antes de
hacerla disponible para uso general.
Los valores son:

0 para la versin 10.0 de SQL Server


1 para la versin 11.0 de SQL Server

Especificador de versin de compatibilidad de los diarios


Este identificador diferencia los diarios de System 10(TM) de los de System 11(TM)
mostrando el formato de los registros del diario de una base de datos, un volcado de
base de datos o un volcado de diario de transacciones. Esta constante se guarda en los
encabezados de base de datos y volcado, y la utiliza SQL Server para detectar el
formato de los registros del diario durante la recuperacin.

Vnculos de cach y carga de las bases de datos


Es necesario tener en cuenta los vnculos de cach para una base de datos y los objetos
de la base de datos si se vuelca y se carga una base de datos en un servidor con
diferentes vnculos de cach. Tal vez se desee cargar la base de datos en un servidor
diferente para las tareas de afinacin o desarrollo, o quiz se desee cargar una base de

datos omitida desde un servidor cuyos vnculos de cach han cambiado desde que se
realiz el volcado.
Cuando se pone en lnea una base de datos despus de la recuperacin, o despus de una
carga con el comando online database , SQL Server verifica todos los vnculos de
cach de la base de datos y sus objetos. Si no existe un cach, SQL Server escribe una
advertencia en el diario de errores, y el vnculo se marca en sysattributes como invlido.
Este es un ejemplo del mensaje en el diario de errores:
Cache binding for database '5', object '208003772', index '3' is
being marked invalid in Sysattributes.

Los vnculos de cach invlidos no se eliminan. Si se crea un cach con el mismo


nombre y se reinicia SQL Server, el vnculo se marca como vlido y el cach se utiliza.
Si no se crea un cach con el mismo nombre, se puede vincular el objeto a otro cach o
permitir que utilice el cach predeterminado.
En las secciones siguientes, que tratan temas de la vinculacin de cachs, el "servidor de
destino" es el servidor donde se carga la base de datos, y el "servidor original" es el
servidor donde se realiz el volcado.
Si es posible, vuelva a crear los cachs que tengan los mismos nombres en el servidor
de destino como vnculos del servidor original. Si est usando la base de datos de
destino para propsitos similares o para pruebas de rendimiento y desarrollo que puedan
implantarse luego en el servidor original, ser conveniente configurar los bancos de
memoria exactamente de la misma manera. Si est empleando la base de datos de
destino para apoyo de decisiones o para ejecutar comandos dbcc , configure los bancos
para que haya ms espacio en los bancos de memoria de 16K.
Bases de datos y vnculos de cach
La informacin de vinculacin de las bases de datos se guarda en master..sysattributes .
Ninguna informacin sobre la vinculacin de una base de datos se guarda en la propia
base de datos. Si se utiliza load database para cargar el volcado sobre una base de datos
existente que est vinculada a un cach, y no se omite la base de datos antes de ejecutar
el comando de carga, esto no afecta al vnculo.
Si la base de datos que se carga estaba vinculada a un cach en el servidor original, las
opciones son:

Vincular la base de datos en el servidor de destino a un cach configurado para


las necesidades de ese servidor.
Configurar los bancos del cach predeterminado de datos en el servidor de
destino para las necesidades de la aplicacin, y no vincular la base de datos a un
cach de datos con nombre.

Objetos de base de datos y vnculos de cach


La informacin de vnculos para objetos se guarda en la tabla sysattributes de la propia
base de datos. Si con frecuencia se carga la base de datos en el servidor de destino, la

solucin ms simple es configurar cachs con el mismo nombre en el servidor de


destino.
Si el servidor de destino no est configurado con cachs del mismo nombre que el
servidor original, vincule los objetos a los cachs adecuados en el servidor de destino
despus de poner la base de datos en lnea, o asegrese de que el cach predeterminado
est configurado para sus necesidades en ese servidor.
Verificacin de los vnculos de cach
El procedimiento del sistema sp_helpcache muestra los vnculos de cach para objetos
de base de datos, aunque los vnculos no sean vlidos.
Las siguientes instrucciones de SQL reproducen los comandos de vinculacin de cach
a partir de informacin de la tabla sysattributes de una base de datos de usuario:
/* crea instruccin bindcache para las tablas */
select "sp_bindcache "+ char_value + ", "
+ db_name() + ", " + object_name(object)
from sysattributes
where class = 3
and object_type = "T"
/* crea instruccin bindcache para los ndices */
select "sp_bindcache "+ char_value + ", "
+ db_name() + ", "
+ i.name
from sysattributes, sysindexes i
where class = 3
and object_type = "I"
and i.indid = convert(tinyint, object_info1)
and i.id = object

Chapter 20

Copias de seguridad y restauracin de las bases de datos del


sistema
Este captulo es el tercero de una serie de cuatro captulos sobre copias de seguridad y
recuperacin. Explica cmo restaurar las bases de datos master, model y sybsystemprocs
, y contiene los temas siguientes:

Introduccin
Sntomas de una base de datos master daada
Evitacin de cambios de volumen durante copias de seguridad y recuperacin
Recuperacin de la base de datos master
Recuperacin de la base de datos model
Recuperacin de la base de datos sybsystemprocs
Tabla 20-1: Informacin adicional sobre copias de seguridad y
recuperacin
Para obtener ms informacin sobre

Consulte

Aspectos de las copias de seguridad y


recuperacin a considerar antes de la
produccin

Captulo 18, "Desarrollo de un plan de


copias de seguridad y recuperacin"

Sintaxis de dump , load y


sp_volchanged

Captulo 19, "Copia de seguridad y


restauracin de las bases de datos de
usuario"

Uso de umbrales para automatizar las


copias de seguridad

Captulo 21, "Administracin de


espacio libre con umbrales"

Introduccin
El procedimiento de recuperacin de las bases de datos del sistema depende de la base
de datos especfica implicada y de los problemas que haya en el sistema. En general, la
recuperacin puede incluir:

El uso de load database para cargar las copias de seguridad de estas bases de
datos.
El uso de buildmaster , installmaster y installmodel para restaurar el estado
inicial de esas bases de datos.
Una combinacin de ambos.

Siga cuidadosamente las instrucciones de este captulo para comprender el


procedimiento de recuperacin pertinente que debe utilizar.

Sntomas de una base de datos master daada


Una base de datos master daada puede ser consecuencia de un fallo de medios en el
rea de almacenamiento de m aster o de la corrupcin interna de la base de datos. Una
base de datos master daada se comporta en una o ms de estas formas:

SQL Server no puede iniciarse.


Hay frecuentes o debilitadores fallos de segmentacin o errores de
entrada/salida.
dbcc (el verificador de consistencia de bases de datos) informa sobre el dao
durante una verificacin planificada de las bases de datos.

Evitacin de cambios de volumen durante copias de seguridad y


recuperacin
Cuando vuelque la base de datos master , asegrese de que todo el volcado quepa en un
solo volumen, a menos que haya varios SQL Server capaces de comunicarse con el
Backup Server. SQL Server debe iniciarse en modo de usuario nico antes de cargar la
base de datos master . Esto impide que otra conexin de usuario responda a los
mensajes de cambio de volumen de Backup Server durante la carga. Dado que master
suele tener un tamao pequeo, normalmente no habr problema alguno en poner su
copia de seguridad en un solo volumen de cinta.

Recuperacin de la base de datos master


Esta seccin describe el paso para recuperar la base de datos master en dos situaciones:

Cuando la base de datos est corrupta pero el dispositivo master no ha sido


daado. Este proceso no afecta a la base de datos model . La recuperacin de
model se trata ms adelante en este captulo.
Cuando el dispositivo master est daado y es necesario restaurar todo el
dispositivo. Estos procedimientos tambin pueden emplearse para desplazar la
base de datos master a un dispositivo master ms grande.

Es necesario adoptar procedimientos especiales debido a la naturaleza central y


controladora de la base de datos master y del dispositivo master. Las tablas de master
configuran y controlan todas las funciones, bases de datos y dispositivos de datos de
SQL Server. El proceso de recuperacin:

Restaura master al estado predeterminado en un servidor recin instalado.


Restaura master a la condicin en que estaba al realizar la ltima copia de
seguridad.
Ejecuta procedimientos muy especiales para recuperar los cambios realizados en
dispositivos y bases de datos desde la ltima copia de seguridad.

Durante las fases iniciales de la recuperacin de la base de datos master , no se podrn


usar los procedimientos almacenados del sistema.
Si en el dispositivo master hay bases de datos de usuario de las que no se han realizado
copias de seguridad, tal vez no pueda emplear estos procedimientos para recuperarlas.
Llame al Servicio de Asistencia Tcnica para obtener asistencia.
Sumario del procedimiento de recuperacin
Los administradores del sistema deben aplicar los pasos siguientes para restaurar una
base de datos master daada. Cada uno de estos pasos se trata en ms detalle en las
pginas siguientes.
1. Cree copias impresas de todas las tablas vitales del sistema necesarias para
restaurar discos, bases de datos y nombres de login.
2. Si hay otras bases de datos en el dispositivo master y son accesibles, vulquelas
con dump database .
3. Cierre SQL Server y utilice buildmaster para construir una nueva base de datos
master o un nuevo dispositivo master.
4. Reinicie SQL Server en modo de usuario nico con el comando startserver .
5. Si la base de datos master es mayor de 3MB, vuelva a crear sus asignaciones en
sysusages exactamente iguales . El tamao de master podra ser mayor por
causa de comandos alter database o porque actualizaciones anteriores de SQL
Server requeran una base de datos master ms grande.
6. Si el nombre de red de su Backup Server (el nombre en el archivo de interfaces)
no es SYB_BACKUP, cambie el nombre de red en sysservers .
7. Verifique que su Backup Server est ejecutndose.

8. Utilice load database para cargar el volcado ms reciente de la base de datos


master . SQL Server se detiene automticamente despus de cargar
satisfactoriamente master .
9. Reinicie SQL Server en modo de usuario nico con startserver .
10. Si ha aadido dispositivos de base de datos despus del ltimo volcado de
master , ejecute el comando disk reinit para reconstruir sysdevices .
11. Si ha ejecutado disk reinit , o si ha utilizado create database o alter database
despus del ltimo volcado, cree copias impresas de sysusages y sysdatabases ,
y luego ejecute el comando disk refit para reconstruir estas tablas del sistema, y
cierre SQL Server.
12. Verifique la consistencia: compare la copia impresa de sysusages y sysdatabases
con la versin nueva en lnea, ejecute dbcc checkalloc en cada base de datos y
examine las tablas importantes de cada una.
13. Si ha restaurado todo el dispositivo master, restaure la base de datos model .
14. Vuelva a cargar las bases de datos de usuario afectadas.
15. Si ha aadido nuevos nombres de login desde la ltima copia de seguridad de
master , verifique syslogins .
16. Si todo est correcto, detenga el servidor y utilice startserver para reiniciar SQL
Server y ponerlo a disposicin de los usuarios.
17. Vuelque la base de datos master .
Las secciones siguientes describen estos pasos con ms detalle.
Almacenamiento de copias de las tablas del sistema
Si puede conectarse con su servidor, guarde copias de las siguientes tablas del sistema
en un archivo de disco: sysdatabases , sysdevices , sysusages , sysloginroles y syslogins
. Dichas copias pueden utilizarse para garantizar que el sistema est restaurado por
completo al final de este proceso.
Utilice isql (use select * from tablename ) o bcp (copie las tablas en modo de carcter)
para realizar copias a archivos de disco. Si es posible, cree la copia de sysusages
ordenada por vstart :
select * from sysusages order by vstart

Para obtener ms informacin sobre los programas isql y bcp , consulte el Manual de
Programas de Utilidad de SQL Server para su sistema operativo.
Volcado de las bases de datos de usuario en el dispositivo master
Si hay bases de datos de usuario en el dispositivo master y son accesibles, utilice dump
database para volcarlas.
Construccin de una nueva base de datos master
Si slo est reconstruyendo la base de datos master , utilice una opcin especial de
buildmaster que nicamente afecte a master. Si reconstruye todo el dispositivo master,
utilice buildmaster sin tal opcin.

Warning! Cierre SQL Server antes de utilizar cualquier comando buildmaster . Si


emplea buildmaster en un dispositivo master que est en uso por SQL Server, fallar el
procedimiento de recuperacin cuando intente cargar la copia de seguridad ms reciente
de master .
Reconstruccin de la base de datos master solamente
Ejecute buildmaster -m (UNIX y PC) o buildmaster /master (OpenVMS) para
sustituir la base de datos master daada por una copia de una base de datos master
"genrica". D el nombre completo del dispositivo master y el tamao completo del
dispositivo.
Note: Para configurar SQL Server, es necesario dar a buildmaster un tamao tan
grande o mayor que el utilizado originalmente. Si anot esta informacin en la gua de
instalacin y configuracin de SQL Server, utilice ese tamao. Si el tamao
proporcionado es demasiado pequeo, al intentar cargar las bases de datos aparecern
mensajes de error.
Este ejemplo reconstruye la base de datos master en un dispositivo master de 17MB
(8704 pginas de 2K).
En plataformas UNIX:
buildmaster -d /dev/rsd1f -s8704 -m

En OpenVMS:
buildmaster /disk=dua0:[devices.master]d_master.dat/size=8704 /master

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .
Despus de ejecutar buildmaster , la contrasea de la cuenta predeterminada "sa"
vuelve a ser NULL.
Para obtener detalles sobre la utilidad buildmaster , consulte el Ma nual de los Pr
ogramas de Ut ilidad de SQL Server .
Reconstruccin de todo el dispositivo master
Si est reconstruyendo un dispositivo master daado o desplazando la base de datos
master a otro dispositivo, ejecute buildmaster sin utilizar la opcin "master".
Inicio de SQL Server en modo de recuperacin de master
Inicie SQL Server en modo de recuperacin de master con las opciones -m (UNIX y
PC) o /masterrecover (OpenVMS). Para obtener la sintaxis completa, consulte el Ma
nual de los Pr ogramas de Ut ilidad de SQL Server .

En plataformas UNIX:
startserver -f RUN_

server_name

-m

En OpenVMS:
startserver /server =

server_name

/masterrecover

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .
Cuando SQL Server se inicia en modo de recuperacin de master, permite la conexin
de un solo usuario (el administrador del sistema). Inmediatamente despus de ejecutarse
un comando buildmaster en la base de datos master , slo existe la cuenta "sa" y su
contrasea es NULL.
Este modo especial de recuperacin de master es necesario porque la base de datos
master genrica creada con buildmaster no coincide con la situacin real de SQL
Server. Por ejemplo, la base de datos no sabe de ninguno de los dispositivos de base de
datos. Cualquier operacin sobre la base de datos master podra imposibilitar la
recuperacin, o al menos complicarla mucho y hacerla ms lenta.
Un SQL Server iniciado en modo de recuperacin de master se configura
automticamente para permitir actualizaciones directas en las tablas del sistema.
Algunas otras operaciones (por ejemplo, el proceso de punto de verificacin) no estn
permitidas.
Warning! Los cambios ad-hoc en las tablas del sistema son peligrosos: algunos
cambios pueden impedir que SQL Server se ejecute. Efecte slo los cambios descritos
en este captulo, y hgalos siempre en una transaccin definida por el usuario.
Recreacin de las asignaciones de dispositivos para master
Observe la copia impresa de sysusages efectuada antes de ejecutar buildmaster , o la
copia ms reciente de esta tabla. Si tiene una sola lnea para la dbid 1, el tamao de la
base de datos master no ha cambiado, por lo que puede saltar este paso y continuar con
el siguiente, "Verificacin de la informacin de su Backup Server en sysservers".
Warning! Si se aument el tamao de master y hay bases de datos de usuarios en el
dispositivo master que no tienen copias de seguridad, la recuperacin ser difcil. Llame
al Servicio de Asistencia Tcnica para obtener asistencia antes de continuar.
Si hay ms de una fila para d bid 1 en la copia impresa de sysusages , debe aumentar el
tamao de master para poder cargar el volcado. Duplique el valor de vstart para cada
asignacin de master en sysusages. Esto es ms sencillo si dispone de una copia de
sysusages ordenada por vstart.

En los casos ms simples, las asignaciones adicionales para master slo requieren el uso
de alter database. En situaciones ms complejas, hay que asignar espacio a otras bases
de datos para reconstruir los valores exactos necesarios de vstart para recuperar master.
Adems de la base de datos master , tempdb ( dbid =2 ) y model ( dbid = 3) estn
situadas total o parcialmente en el dispositivo master. Tambin puede haber bases de
usuarios total o parcialmente en ese dispositivo.
Determinacin de las asignaciones que estn en el dispositivo master
Para determinar qu valores de vstart representan asignaciones en el dispositivo master,
observe la copia impresa de la tabla sysdevices , que muestra los valores inferior ( low )
y superior ( high ) para cada dispositivo (las filas de los dispositivos de cinta no se
incluyen en este ejemplo):
Figure 20-41: Determinacin de las asignaciones en el dispositivo master
Los nmeros de pgina del dispositivo master se hallan entre 0 y 8703, por lo que
cualquier asignacin de base de datos con valores de sysusages . vstart en esta extensin
representa asignaciones en el dispositivo master.
Un caso simple: slo fue alterada m aster
Verifique todas las filas correspondientes a master (excepto la primera) en la copia
impresa de la tabla sysusages . Esta informacin de sysusages , ordenada por vstart , es
un ejemplo:
Figure 20-42: Ejemplo de salida de sysusages
En este ejemplo, las cuatro primeras filas tienen valores entre 0 y 8703 para vstart . Slo
dbid 4 est en otro dispositivo.
buildmaster vuelve a crear las tres primeras filas, por lo que sysusages en la base de
datos master recin reconstruida debera coincidir con la copia impresa.
La cuarta fila muestra una asignacin adicional para master , con vstart = 3588 y size =
1024.
La Figura 20-3 muestra las asignaciones de almacenamiento para los datos de la
sysusages indicados arriba.
Figure 20-43: Asignaciones en un dispositivo master
En este caso, basta con ejecutar un comando alter database para aumentar el tamao de
la base de datos master . Para determinar el tamao que debe proporcionarse con este
comando, tome el valor de la columna size de la segunda asignacin de master y
divdalo por 512. En este ejemplo, la fila adicional de master indica una asignacin de
1024 pginas de datos, por lo que el parmetro correcto es 2, es decir, el resultado de
1024/512.

Utilice dicho resultado para el comando alter database . Conctese con el servidor
usando el login "sa". No olvide que buildmaster ha definido la contrasea de esa
cuenta como NULL. Ejecute el comando alter database . Para el ejemplo anterior,
utilice:
alter database on master = 2

Verifique los valores de size y vstart para la nueva fila de sysusages .


Una asignacin ms compleja
La salida de sysusages tendr ms asignaciones en el dispositivo master si:

El SQL Server actualizado perteneca a versiones anteriores de SQL Server.


Un administrador del sistema aument el tamao de master , model y/o tempdb
en el dispositivo master.
Se cre o alter una base de datos de usuario en el dispositivo master.

Es necesario restaurar estas asignaciones hasta la ltima fila correspondiente a la base


de datos master , dbid 1. Este es un ejemplo de sysusages que muestra asignaciones
adicionales en el dispositivo master, por orden de vstart :
Figure 20-44: Ejemplo de la salida de sysusages con asignaciones adicionales
Esta copia de sysusages muestra las asignaciones siguientes en el dispositivo master
(excluyendo las tres creadas por buildmaster ):

Una para master , dbid = 1, size = 512, vstart = 3588


Una para una base de datos de usuario, dbid = 5, size = 1024, vstart = 4100
(consulte la copia impresa de sysdatabases para averiguar el nombre de esta base
de datos)
Una para tempdb, dbid = 2, size = 1024, vstart = 5124
Otra asignacin para master, dbid = 1, size = 512, vstart = 6148

En esta salida, la asignacin final no est en el dispositivo master.


La Figura 20-5 muestra las asignaciones en el dispositivo master.
Figure 20-45: Asignaciones complejas en un dispositivo master
Para volver a crear todas las asignaciones, es necesario ejecutar un grupo de comandos
alter database y create database . Si su tabla sysusages enumera asignaciones
adicionales en el dispositivo master despus de la ltima asignacin para master, no es
necesario volver a crearlas.
Para determinar el tamao a utilizarse con los comandos create database y alter
database , divida el valor mostrado en la columna size de la salida de sysusages por
512.
Para reconstruir la asignacin, ejecute los comandos en este orden.

Para restaurar la primera asignacin a master, dbid 1, size = 512:


alter database master on default = 1

Para crear una base de datos de usuario, dbid 5, size = 1024:


create database userdb on default = 2

Para asignar ms espacio a tempdb, dbid 2, size = 1024:


alter database tempdb on default = 2

Para aadir la asignacin final a master, dbid 1, size = 512:


alter database master on default = 1

Slo es necesario restaurar todas las asignaciones hasta la ltima lnea inclusive del
dispositivo master . Cuando se carga la copia de seguridad de master , esta tabla se
restaura por completo desde el volcado.
Warning! Estos pasos borrarn los datos de una base de datos de usuario almacenada
en el dispositivo master. Si no se hicieron copias de seguridad de esa base de datos
desde su ltima modificacin, no contine. Es posible que el Servicio de Asistencia
Tcnica pueda recuperrsela.
En este punto, verifique cuidadosamente los valores actuales de sysusages con los
valores de su copia impresa:

Si todos los valores de vstart para master coinciden, contine en el paso


siguiente.
Si los valores no coinciden, casi con toda seguridad, el intento de cargar la base
de datos master fallar. Cierre el servidor y comience de nuevo ejecutando
buildmaster . Consulte "Construccin de una nueva base de datos master".
Si los valores de sysusages parecen correctos, contine en el paso siguiente.

Verificacin de la informacin de su Backup Server en sysservers


Conctese con el servidor como "sa", usando una contrasea nula.
Si el nombre de red de su Backup Server no es SYB_BACKUP, actualice s ysservers
para que su SQL Server pueda comunicarse con el Backup Server. Verifique el nombre
del Backup Server en el archivo de interfaces, y ejecute este comando en SQL Server:
select *
from sysservers
where srvname = "SYB_BACKUP"

Verifique el srvnetname en la salida de este comando. Si coincide con la entrada del


archivo de interfaces para el Backup Server de su servidor, salte este paso y contine en
el siguiente.

Si el srvnetname indicado por este comando no es el mismo que el nombre de su


Backup Server en el archivo de interfaces, deber actualizar sysservers. El ejemplo
siguiente cambia el nombre de red del Backup Server a PRODUCTION_BSRV:
begin transaction
update sysservers
set srvnetname = "PRODUCTION_BSRV"
where srvname = "SYB_BACKUP"

Ejecute este comando y asegrese de que haya modificado una sola fila. Ejecute el
comando select de nuevo y verifique que se haya modificado la fila correcta y que
contenga el valor correcto. Si el comando update modific ms de una fila, o si
modific la fila equivocada, ejecute un comando rollback transaction e intente la
actualizacin de nuevo.
Si el comando modific correctamente la fila del Backup Server, ejecute un comando
commit transaction .
Verificacin del funcionamiento de Backup Server
En plataformas UNIX y OpenVMS, utilice el comando showserver desde su sistema
operativo para verificar que Backup Server est funcionando, y reincielo si es
necesario. Consulte showserver y startserver en el manual de los programas de
utilidad de SQL Server.
En plataformas PC, consulte la gua de instalacin y configuracin de SQL Server para
obtener informacin sobre cmo verificar que Backup Server est funcionando, y
consulte el Ma nual de los Pr ogramas de Ut ilidad de SQL Server para obtener los
comandos que inician Backup Server.
Carga de una copia de seguridad de master
Cargue la copia de seguridad ms reciente de la base de datos master con load database
. Estos son ejemplos de los comandos de carga.
En plataformas UNIX:
load database master from "/dev/nrmt4"

En OpenVMS:
load database master from "MTA0:"

Consulte el Captulo 19, "Copia de seguridad y restauracin de las bases de datos de


usuario", para obtener informacin sobre la sintaxis del comando. Consulte la Gua de
instalacin y configuracin de SQL Server para obtener ejemplos de la plataforma PC.
Despus de que el comando load database se complete satisfactoriamente, SQL Server
se cierra automticamente. Observe si aparecen mensajes de error durante la carga y el
cierre.

Reinicio de SQL Server en modo de recuperacin de master


Utilice startserver para reiniciar SQL Server en modo de recuperacin de master.
Observe si aparecen mensajes de error durante la recuperacin.
Verifique las tablas sysusages, sysdatabases y sysdevices en el servidor recuperado
respecto de la copia impresa. Busque especialmente estos problemas:

Si algn dispositivo de la copia impresa no est incluido en la tabla sysdevices


restaurada, significa que se aadieron dispositivos despus de efectuada la
ltima copia de seguridad y ser necesario ejecutar disk reinit y disk refit .
Si alguna base de datos enumerada en la copia impresa no aparece en la tabla
sysdatabases restaurada, significa que se aadi una base de datos despus de
efectuada la ltima copia de seguridad de master . En tal caso, ser necesario
ejecutar disk refit .

Cargar la copia de seguridad de master restaura la cuenta "sa" a su estado anterior, y


restaura la contrasea de la cuenta "sa", si hubiera una. Si se utiliz s p_locklogin para
bloquear esta cuenta antes de realizar la copia de seguridad, la cuenta "sa" estar
bloqueada ahora. Realice el resto de estos pasos usando una cuenta que tenga el rol de
administrador del sistema.
Adicin de dispositivos de base de datos
Si ha aadido dispositivos de base de datos desde el ltimo volcado (es decir, si ha
ejecutado un comando disk init ), deber aadir cada nuevo dispositivo a sysdevices
con el comando disk reinit . Si guard los guiones con los comandos disk init
originales, utilcelos para determinar los parmetros del comando disk reinit
(incluyendo el valor original de vstart ). Si el tamao proporcionado es demasiado
pequeo o si utiliza un valor distinto para vstart , tal vez corrompa la base de datos.
Si no guard los guiones de disk init , observe la copia impresa de sysdevices ms
reciente para determinar algunos de los parmetros correctos para disk reinit . An as,
necesitar saber el valor de vstart si utiliz un vstart personalizado en el comando disk
init original.
Tabla 20-2: Uso de sysdevices para determinar los parmetros de disk reinit
Parmetro de
disk reinit

Datos de
sysdevices

Notas

name

name

Utilice el mismo nombre, en especial si dispone de


guiones que crean o alteran bases de datos, o aaden
segmentos.

physname

phyname

Debe ser la ruta completa del dispositivo.

vdevno

low
/16777216

No es necesario utilizar el mismo valor para vdevno ,


pero asegrese de usar un valor que ya no est en uso.

size

( high - low ) Es muy importante proporcionar la informacin


+1
correcta del tamao.

Si la base de datos sybsystemprocs est guardada en un dispositivo fsico aparte y no


est enumerada en sysdevices en este momento, asegrese de incluir un comando disk
reinit para sybsystemprocs .
Despus de ejecutar disk reinit , compare la tabla sysdevices con la copia que realiz
antes de ejecutar buildmaster .
disk reinit slo puede ejecutarse desde la base de datos master , y slo puede hacerlo
un administrador del sistema. El permiso para ejecutarlo no puede transferirse a otros
usuarios. Su sintaxis es:
disk reinit
name = " device_name ",
physname = " physical_name ",
vdevno =
virtual_device_number ,
size =
number_of_blocks
[, vstart =
virtual_address ,
cntrltype =
controller_number ]

Para obtener ms informacin sobre disk reinit , consulte la explicacin de disk init en
el Captulo 6, "Inicializacin de dispositivos de base de datos", o consulte el Manual de
Referencia de SQL Server .
Reconstruccin de sysusages y sysdatabase s
Si aadi dispositivos de base de datos, cre o alter bases de datos despus del ltimo
volcado de las bases de datos, utilice disk refit para reconstruir las tablas sysusages y
sysdatabases .
disk refit slo puede ejecutarse desde la base de datos master , y slo puede hacerlo un
administrador del sistema. El permiso para ejecutarlo no puede transferirse a otros
usuarios. Su sintaxis es:
disk refit

SQL Server se cierra automticamente despus de que disk refit reconstruye las tablas
del sistema. Examine la salida mientras se ejecuta y durante el cierre de disk refit para
determinar si ha habido errores.
Warning! Proporcionar informacin inexacta en el comando disk reinit puede
provocar problemas permanentes de corrupcin cuando se actualicen los datos. No
olvide verificar el SQL Server con dbcc despus de ejecutar disk refit .
Verificacin de SQL Server
Verifique SQL Server con cuidado:
1.
2.
3.
4.

Compare la copia impresa de sysusages con la nueva versin en lnea.


Compare la copia impresa de sysdatabases con la nueva versin en lnea.
Ejecute dbcc checkalloc en cada base de datos.
Examine las tablas importantes de cada base de datos.

Warning! Si encuentra discrepancias en sysusages , llame al Servicio de


Asistencia Tcnica para obtener ayuda.
Si encuentra otros problemas, vuelva a ejecutar disk reinit y disk refit , y verifique su
SQL Server de nuevo.
Restauracin de model
Si est restaurando la base de datos master solamente, puede saltar este paso.
Si est restaurando todo el dispositivo master, tambin debe restaurar model :

Cargue la copia de seguridad de model , si tiene una.


Si no tiene una copia de seguridad:
o Ejecute el guin installmodel :En plataformas UNIX:
cd $SYBASE/scripts
setenv DSQUERY
server_name
isql -Usa -P password
-S
installmodel

server_name

<

En OpenVMS:
set default sybase_system:[sybase.scripts]
define dsquery
server_name
isql/user="sa"/password=" password "
/input=installmodel

En plataformas PC:Para obtener ejemplos de la plataforma PC, consulte


la Gua de instalacin y configuracin de SQL Server .

Repita cualquier cambio que haya realizado en model .

Carga de las bases de datos de usuario


Si haba bases de datos guardadas en el dispositivo master y tuvo que ejecutar
comandos create database durante los pasos anteriores, vuelva a cargar las bases de
datos de usuario con los comandos de carga habituales.
Restauracin de las IDs de usuarios del servidor
Verifique la copia impresa de syslogins y la tabla syslogins restaurada. Busque en
especial lo siguiente:

Si aadi logins de servidor despus de la ltima copia de seguridad de master ,


vuelva a ejecutar los comandos sp_addlogin .
Si omiti logins de servidor, vuelva a ejecutar los comandos sp_droplogin .
Si bloque cuentas de servidor, vuelva a ejecutar los comandos sp_locklogin .
Si los usuarios o los administradores del sistema usaron el procedimiento
sp_modifylogin , puede haber otras diferencias.

Es muy importante asegurarse de que los usuarios reciban la misma suid . Si los valores
de suid no coinciden en las bases de datos, pueden provocar problemas con los
permisos, y tal vez los usuarios no puedan tener acceso a las tablas ni ejecutar
comandos.
Una tcnica efectiva para verificar los valores suid existentes es ejecutar un comando u
nion sobre las tablas sysusers de las bases de datos de usuario. Si los usuarios tienen
permiso para utilizar master , puede inclursela en este procedimiento .
Por ejemplo:
select
union
select
union
select
union
select

suid, name from master..sysusers


suid, name from sales..sysusers
suid, name from parts..sysusers
suid, name from accounting..sysusers

Si la lista resultante muestra que faltan valores de suid en el intervalo en que deben
repetirse los logins, ser necesario aadir marcadores de lugar para los valores saltados
y luego omitirlos con sp_droplogin o bloquearlos con sp_locklogin .
Reinicio de SQL Server
Una vez terminada la restauracin de la base de datos master , use el comando
shutdown para cerrar SQL Server. A continuacin, ejecute startserver para reiniciarlo
en modo multiusuario.
Copia de seguridad de master
Cuando haya restaurado por completo la base de datos master y haya ejecutado
verificaciones de integridad dbcc completas, realice una copia de seguridad de la base
de datos usando los comandos de volcado habituales.

Recuperacin de la base de datos model


Esta seccin describe la recuperacin de la base de datos model cuando es la nica base
de datos que debe restaurarse. Incluye instrucciones para estas situaciones:

m odel no sufri cambios, por lo que basta restaurar la base de datos model
genrica.
m odel fue modificada y hay una copia de seguridad.
m odel fue modificada y no hay una copia de seguridad.

Restauracin de la base de datos model genrica


buildmaster puede restaurar la base de datos model sin afectar a master.
Warning! Cierre SQL Server antes de utilizar un comando buildmaster .

En plataformas UNIX:
buildmaster -d

/devname

-x

En OpenVMS:
buildmaster /disk =

physicalname

/model

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .
Restauracin de model desde una copia de seguridad
Si puede ejecutar el comando use model satisfactoriamente, la base de datos model
puede restaurarse desde una copia de seguridad con el comando load database .
Si no puede utilizar la base de datos:
1. Siga las instrucciones anteriores y use b uildmaster para restaurar la base de
datos model .
2. Si cambi el tamao de model , vuelva a ejecutar los comandos alter database .
3. Cargue la copia de seguridad con load database .
Restauracin de model sin una copia de seguridad
Si ha modificado la base de datos model y no dispone de una copia de seguridad:

Siga los pasos anteriores para restaurar una base de datos model genrica.
Vuelva a ejecutar todos los comandos que ejecut para modificar model .

Recuperacin de la base de datos sybsystemprocs


La base de datos sybsystemprocs contiene los procedimientos del sistema que se utilizan
para modificar, e informar sobre las tablas del sistema. Si las verificaciones dbcc
peridicas de esta base de datos informan de algn dao, y no se dispone de una copia
de seguridad, es posible restaurarla usando installmaster . Si se conservan copias de
seguridad de sybsystemprocs, puede restaurarse con load database .
Restauracin de sybsystemprocs con installmaster
1. Verifique qu dispositivo lgico contiene actualmente la base de datos. Si an
puede utilizar sp_helpdb , ejecute este comando:
sp_helpdb sybsystemprocs
name
db_size
created
status

owner

dbid

------------------- ------------- ---------------- -----sybsystemprocs


10.0 MB sa
4
Aug 07, 1993
trunc log on chkpt
device_fragments
size
usage
free kbytes
------------------ ----------- ---------------- ----------sprocdev
10.0 MB
data and log
3120

La columna device_fragments indica que la base de datos est guardada en


sprocdev .
Si no puede utilizar s p_helpdb , esta consulta produce un informe de los
dispositivos usados por la base de datos y de la cantidad de espacio en cada
dispositivo:
select sysdevices.name, sysusages.size / 512
from sysdevices, sysdatabases, sysusages
where sysdatabases.name = "sybsystemprocs"
and sysdatabases.dbid = sysusages.dbid
and sysdevices.low <= sysusages.size + vstart
and sysdevices.high >= sysusages.size + vstart -1
name
---------------- ------sprocdev
10

2. Omita la base de datos:


drop database sybsystemprocs

Si el disco fsico est daado, utilice sp_dropdevice para omitir el dispositivo.


Si es necesario, ejecute disk init para inicializar un nuevo dispositivo de base de
datos. Consulte el Captulo 6, "Inicializacin de dispositivos de base de datos",
para obtener ms informacin sobre disk init .

3. Vuelva a crear la base de datos sybsystemprocs en el dispositivo, usando el


tamao devuelto por la consulta anterior:
create database sybsystemprocs
on sprocdev = 16

Note: Puede ser que el tamao requerido para la base de datos sybsystemprocs
sea distinto para su sistema operativo. Consulte la gua de instalacin y
configuracin de SQL Server para obtener el tamao correcto.

4. Ejecute el guin installmaster .


Warning! No ejecute el guin installmaster repetidamente sin antes omitir y
volver a crear la base de datos sybsystemprocs . Repetir la ejecucin de

installmaster puede cambiar la distribucin de los valores de ndice de forma tal


que la tabla sysprocedures requiera mucho ms espacio para almacenar la misma
cantidad de datos. Para evitar este problema, omita y vuelva a crear la base de
datos sybsystemprocs antes de ejecutar installmaster .
En plataformas UNIX:
cd $SYBASE/scripts
setenv DSQUERY
server_name
isql -Usa -P password
-S

server_name

< installmaster

En OpenVMS:
set default sybase_system:[sybase.scripts]
define dsquery
server_name
isql/user="sa"/password=" password "
/input=installmaster

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .
5. Si ha modificado los permisos en sybsystemprocs o si ha aadido sus propios
procedimientos a la base de datos, repita los cambios.
Restauracin de sybsystemprocs con load database
Si escribe procedimientos del sistema y los guarda en la base de datos sybsystemprocs ,
y se daa la base de datos, hay dos formas de recuperarlos:

Restaurar la base de datos desde installmaster , como se describi


anteriormente, y volver a crear los procedimientos ejecutando de nuevo los
comandos create procedure .
Conservar copias de seguridad de la base de datos y cargarlas con load database
.

Si decidi mantener una copia de seguridad de la base de datos, asegrese de que toda la
copia de seguridad quepa en un solo volumen de cinta o que ms de un SQL Server
pueda comunicarse con el Backup Server. Si un volcado abarca varios volmenes de
cinta, ejecute el comando de cambio de volumen usando el procedimiento del sistema
sp_volchanged , que est guardado en sybsystemprocs. Ese comando no puede
ejecutarse en medio de la recuperacin de una base de datos.
Estos son ejemplos de comandos de carga.
En UNIX:
load database sybsystemprocs from "/dev/nrmt4"

En OpenVMS:

load database sybsytemprocs from "MTA0:"

En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .

Chapter 21

Administracin de espacio libre con umbrales


Cuando se crea o altera una base de datos, se est asignando una cantidad finita de
espacio para sus segmentos de datos y de diario. Conforme se crean objetos y se
insertan datos, disminuye la cantidad de espacio libre en la base de datos.
Este captulo es el ltimo de una serie de cuatro captulos sobre copias de seguridad y
recuperacin, y explica cmo utilizar umbrales para controlar la cantidad de espacio
libre en un segmento de base de datos. Incluye los temas siguientes:

Seguimiento del espacio libre con el umbral de ltima oportunidad


Decisin de abortar o suspender los procesos
Reactivacin de procesos suspendidos
Adicin, cambio y eliminacin de umbrales
Creacin de un umbral adicional para el segmento de diario
Creacin de umbrales adicionales en otros segmentos
Creacin de procedimientos de umbral
Inhabilitacin de la contabilidad de espacio libre para segmentos de datos
Tabla 21-1: Informacin adicional sobre copias de seguridad y
recuperacin
Para obtener ms informacin sobre

Consulte

Aspectos de copias de seguridad y


Captulo 18, "Desarrollo de un plan
recuperacin que hay que plantearse antes de copias de seguridad y
de la produccin
recuperacin"
Captulo 19, "Copia de seguridad y
Sintaxis de dump , load y sp_volchanged restauracin de las bases de datos de
usuario"
Captulo 20, "Copias de seguridad y
Copias de seguridad y restauracin de las
restauracin de las bases de datos del
bases de datos del sistema
sistema"

Seguimiento del espacio libre con el umbral de ltima oportunidad


Un umbral siempre est asociado con un procedimiento almacenado, y acta como un
mecanismo disparador. Cuando el espacio libre disminuye por debajo de la cantidad
especificada por el umbral, SQL Server ejecuta el procedimiento almacenado.

Cada base de datos que guarda su diario de transacciones en un segmento tiene un


umbral de ltima oportunidad . El umbral es una estimacin del nmero de pginas
de diario libres que seran necesarias para realizar una copia de seguridad del diario de
transacciones. SQL Server ajusta automticamente el umbral de ltima oportunidad
cuando se asigna ms espacio al segmento de diario.
Cuando la cantidad de espacio libre en el segmento de diario disminuye por debajo del
umbral de ltima oportunidad, SQL Server ejecuta automticamente un procedimiento
almacenado especial llamado sp_thresholdaction . ( sp_modifythreshold permite
especificar un procedimiento distinto de umbral de ltima oportunidad.)
La Figura 21-1 ilustra un segmento de diario con un umbral de ltima oportunidad. El
rea sombreada representa espacio de diario que ya se ha utilizado; el rea en blanco
representa espacio de diario libre. En este ejemplo, an no se ha cruzado el umbral de
ltima oportunidad.
Figure 21-46: Segmento de diario con umbral de ltima oportunidad
Cruce del umbral
Conforme los usuarios ejecutan transacciones, disminuye la cantidad de espacio de
diario libre. Cuando la cantidad de espacio libre cruza el umbral de ltima oportunidad,
SQL Server ejecuta automticamente sp_thresholdaction :
Figure 21-47: Ejecucin de sp_thresholdaction cuando se alcanza el umbral de
ltima oportunidad
Control de la frecuencia con que se ejecuta sp_thresholdaction
SQL Server utiliza un valor de histresis , la variable global @@thresh_hysteresis ,
para controlar el grado de sensibilidad de los umbrales respecto de las variaciones en el
espacio libre. Cuando un umbral ejecuta su procedimiento, se desactiva. El umbral
permanece inactivo hasta que la cantidad de espacio libre en el segmento se eleva a
@@thresh_hysteresis pginas por encima del umbral. Esto impide que los umbrales
ejecuten sus procedimientos repetidamente en respuesta a fluctuaciones menores del
espacio libre.
Cuando el umbral de la Figura 21-2 ejecuta sp_thresholdaction , se desactiva. En la
Figura 21-3, el umbral se reactiva cuando la cantidad de espacio libre aumenta en
@@thresh_hysteresis pginas:
Figure 21-48: El espacio libre debe aumentar en @@thresh_hysteresis para
reactivar el umbral

Decisin de abortar o suspender los procesos


Por diseo, el umbral de ltima oportunidad concede suficiente espacio de diario libre
para registrar un comando dump transaction . Tal vez no haya espacio para registrar
ms transacciones de usuario sobre la base de datos.

Cuando se cruza el umbral de ltima oportunidad, SQL Server suspende los procesos de
usuario y muestra el mensaje:
El espacio disponible en el segmento de diario disminuy crticamente
en la base de datos 'mydb'. Todas las modificaciones futuras en esta
base de datos sern suspendidas hasta que el diario se vuelque con
xito y el espacio quede disponible.

Slo pueden ejecutarse los comandos que no se registran en el diario de transacciones (


select , readtext y writetext) y los que podran ser necesarios para liberar espacio de
diario adicional ( dump transaction , dump database y alter database ).
Aborto de procesos
Para abortar procesos de usuario en lugar de suspenderlos, utilice la opcin abort tran
on log full de sp_dboption y, a continuacin, el comando checkpoint . Por ejemplo,
para abortar procesos en mydb cuando se cruza el umbral de ltima oportunidad:
sp_dboption mydb, "abort tran on log full", true
use mydb
checkpoint

Reactivacin de procesos suspendidos


Cuando el comando dump transaction libera suficiente espacio de diario, los procesos
suspendidos se reactivan y terminan automticamente. Si writetext o select into
provocaron cambios que no se registraron en el diario en la base de datos despus de la
ltima copia de seguridad, el procedimiento de umbral de ltima oportunidad no puede
ejecutar un comando dump transaction . Cuando esto ocurra, realice una copia de la
base de datos con dump database y trunque el diario con dump transaction .
Si esto no libera suficiente espacio para reactivar los procesos suspendidos, tal vez sea
preciso aumentar el tamao del diario de transacciones. Utilice la opcin log on del
comando alter database para asignar espacio de diario adicional.
Como ltimo recurso, los administradores del sistema pueden usar el comando sp_who
para determinar qu procesos estn suspendidos y la siguiente instruccin para reactivar
los procesos en reposo:
select lct_admin("unsuspend",

db_id

Warning! Utilice la funcin l ct_admin no suspendida con extremo cuidado. Si


reactiva un proceso suspendido con lct_admin y no lo destruye de inmediato, el
proceso puede llenar el diario por completo antes de que termine el volcado.
Despus de ejecutarse este comando, las transacciones continan y pueden llenar por
completo el diario de transacciones. Para destruir los procesos suspendidos, ejecute
primero el comando kill y luego el comando arriba indicado. Consulte "Destruccin de
procesos" para obtener ms informacin.

Adicin, cambio y eliminacin de umbrales

El propietario de la base de datos o el administrador del sistema pueden crear umbrales


adicionales para controlar el espacio libre en cualquier segmento de la base de datos.
Cada base de datos puede tener hasta 256 umbrales, incluido el de ltima oportunidad.
Los procedimientos del sistema sp_addthreshold , sp_modifythreshold y
sp_dropthreshold permiten crear, cambiar y eliminar umbrales. Para impedir que los
usuarios afecten accidentalmente los umbrales de una base de datos equivocada, estos
procedimientos requieren que se especifique el nombre de la base de datos actual.
Visualizacin de informacin sobre umbrales existentes
Utilice el procedimiento del sistema sp_helpthreshold para obtener informacin sobre
todos los umbrales de una base de datos. Use sp_helpthreshold segment_name para
obtener informacin sobre los umbrales de un segmento en particular.
El ejemplo siguiente muestra informacin sobre los umbrales del segmento
predeterminado de una base de datos. Dado que "default" es una palabra reservada, es
necesario incluirla entre comillas. La salida de sp_helpthreshold muestra que en este
segmento hay un umbral definido en 200 pginas. El 0 de la columna "last chance"
indica que no se trata de un umbral de ltima oportunidad:
sp_helpthreshold "default"
segment name
free pages
--------------------default
200

last chance?
-----------0

threshold procedure
------------------space_dataseg

(1 row affected, return status = 0)

Adicin de un umbral
Utilice el procedimiento del sistema sp_addthreshold para crear nuevos umbrales. Su
sintaxis es:
sp_addthreshold

dbname, segname, free_space, proc_name

El dbname debe especificar el nombre de la base de datos actual. Los dems parmetros
especifican, respectivamente, el segmento cuyo espacio libre se est controlando, el
tamao del umbral en pginas de base de datos y el nombre de un procedimiento
almacenado.
Cuando la cantidad de espacio libre en el segmento cae por debajo del umbral, un
proceso interno de SQL Server ejecuta el procedimiento asociado. Este proceso tiene los
permisos del usuario que cre el umbral al ejecutar s p_addthreshold , menos los
permisos revocados desde entonces.
Los umbrales pueden ejecutar un procedimiento en la misma base de datos, en otra base
de datos de usuario, en sybsystemprocs o en master . Tambin pueden llamar a un
procedimiento remoto en un Open Server. sp_addthreshold no verifica si el
procedimiento de umbral existe al crearse el umbral.
Modificacin de un umbral

Utilice el procedimiento del sistema sp_modifythreshold para asociar un umbral con


un nuevo procedimiento de umbral, valor de espacio libre o segmento.
sp_modifythreshold omite el umbral existente y crea uno nuevo en su lugar. Su
sintaxis es:
sp_modifythreshold
[,
new_proc_name
[,
new_segname

dbname ,
segname
[,
new_free_space
]]]

free_space

donde dbname es el nombre de la base de datos actual, y segname y free_space


identifican el umbral que se desea modificar.
Por ejemplo, para ejecutar un procedimiento de umbral cuando el espacio libre en el
segmento cae por debajo de 175 pginas, en lugar de por debajo de 200 pginas:
sp_modifythreshold mydb, "default", 200, NULL, 175

En este ejemplo, NULL acta como marcador de lugar para que new_free_space se
halle en el lugar correcto en la lista de parmetros. El nombre del procedimiento de
umbral no se cambia.
La persona que modifica el umbral se convierte en su nuevo propietario. Cuando la
cantidad de espacio libre en el segmento cae por debajo del umbral, SQL Server ejecuta
el procedimiento de umbral con los permisos que tena el propietario al ejecutar s
p_modifythreshold , menos los que se hayan revocado desde entonces.
Especificacin de un nuevo procedimiento de umbral de ltima oportunidad
sp_modifythreshold permite cambiar el nombre del procedimiento asociado con el
umbral de ltima oportunidad, pero no es posible utilizarlo para cambiar la cantidad de
espacio libre ni el nombre de segmento para el umbral de ltima oportunidad.
sp_modifythreshold requiere que se especifique el nmero de pginas libres asociadas
con el umbral de ltima oportunidad. Utilice sp_helpthreshold para determinar este
valor.
El ejemplo siguiente muestra informacin sobre el umbral de ltima oportunidad y
luego especifica la ejecucin de otro procedimiento, sp_new_thresh_proc , cuando se
cruza el umbral:
sp_helpthreshold logsegment
segment name
free pages
last chance?
-------------------------------logsegment
40
1

threshold procedure
------------------sp_thresholdaction

(1 row affected, return status = 0)


sp_modifythreshold mydb, logsegment, 40, sp_new_thresh_proc

Omisin de un umbral
Utilice el procedimiento del sistema sp_dropthreshold para quitar un umbral de
espacio libre de un segmento. Su sintaxis es:

sp_dropthreshold

dbame, segname, free_space

El dbname debe especificar el nombre de la base de datos actual. Tambin es necesario


indicar el nombre del segmento y el nmero de pginas libres, ya que puede haber
varios umbrales en un segmento en particular. Por ejemplo:
sp_dropthreshold mydb, "default", 200

Creacin de un umbral adicional para el segmento de diario


Cuando se cruza el umbral de ltima oportunidad, todas las transacciones se abortan o
suspenden hasta que se libere suficiente espacio de diario. En un entorno de produccin,
esto puede tener un fuerte impacto sobre los usuarios. La adicin de un segundo umbral
correctamente ubicado en el segmento de diario puede minimizar las posibilidades de
cruzar el umbral de ltima oportunidad (y bloquear las transacciones de usuario).
El umbral adicional debera volcar el diario de transacciones con una frecuencia tal
como para que raramente se cruce el umbral de ltima oportunidad, pero no tanta como
para que la restauracin de la base de datos requiera cargar demasiadas cintas.
Esta seccin ayuda a determinar el mejor lugar para un segundo umbral de diario.
Comienza aadiendo un umbral al 50 por ciento de la capacidad del diario y ajusta este
umbral en funcin del uso del espacio en el sitio.
Adicin de un umbral de diario al 50 por ciento del espacio disponible
Utilice el procedimiento siguiente para aadir un umbral de diario al 50 por ciento de la
capacidad:
1. Utilice la consulta siguiente para averiguar la capacidad del diario en pginas:
select sum(size)
from master..sysusages
where dbid = db_id(" database_name"
and (segmap & 4) = 4

2. Utilice sp_addthreshold para aadir un nuevo umbral al 50 por ciento de la


capacidad del diario. Por ejemplo, si la capacidad es 2048 pginas, aada un
umbral a 1024 pginas:
sp_addthreshold mydb, logsegment, 1024, thresh_proc

3. Utilice la instruccin create procedure para crear un procedimiento de umbral


simple que vuelque el diario de transacciones a los dispositivos oportunos. Para
obtener ms informacin sobre la creacin de procedimientos de umbral,
consulte "Creacin de procedimientos de umbral".
Prueba y ajuste del nuevo umbral

Utilice el comando dump transaction para asegurarse de que el diario de transacciones


est menos del 50 por ciento lleno. Luego, utilice el procedimiento siguiente para probar
el nuevo umbral:
1. Rellene el diario de transacciones simulando acciones rutinarias de los usuarios.
Emplee guiones automatizados que realicen transacciones tpicas a la velocidad
proyectada.
Cuando se cruce el umbral del 50 por ciento, el procedimiento de umbral volcar
el diario de transacciones. Dado que no es un umbral de ltima oportunidad, las
transacciones no se suspendern ni abortarn; el diario continuar creciendo
durante el volcado.
2. Mientras se desarrolla el volcado, utilice sp_helpsegment para controlar el uso
de espacio en el segmento de diario. Anote el tamao mximo del diario de
transacciones justo antes de que termine el volcado.
3. Si qued un espacio considerable en el diario cuando el volcado termin, quiz
no precise volcar el diario de transacciones tan pronto:
Figure 21-49: Diario de transacciones con umbral adicional definido al 50
por ciento
Pruebe a esperar hasta que slo quede el 25 por ciento del espacio del diario:
Figure 21-50: El desplazamiento del umbral deja menos espacio despus del
volcado
Utilice sp_modifythreshold para ajustar el valor de free_space al 25 por ciento
de la capacidad del diario. Por ejemplo:
sp_modifythreshold mydb, logsegment, 512,
thresh_proc

4. Vuelque el diario de transacciones y pruebe el nuevo valor de free_space . Si se


cruza el umbral de ltima oportunidad antes de que termine el volcado, el dump
transaction est comenzando demasiado tarde:
Figure 21-51: El umbral adicional del diario comienza el volcado demasiado
tarde
El 25 por ciento del espacio no basta. Pruebe iniciar el volcado del diario cuando
queda el 37,5 por ciento de espacio libre:
Figure 21-52: El desplazamiento del umbral deja espacio suficiente para
terminar el volcado
Utilice sp_modifythreshold para cambiar el valor de free_space al 37,5 por
ciento de la capacidad del diario. Por ejemplo:
sp_modifythreshold mydb, logsegment, 768,
thresh_proc

Creacin de umbrales adicionales en otros segmentos

Tambin es posible crear umbrales en los segmentos de datos. Por ejemplo, podra
crearse un umbral en el segmento predeterminado usado para almacenar tablas e
ndices. Tambin se creara un procedimiento almacenado asociado para imprimir
mensajes en el diario de errores cuando el espacio del segmento default cae por debajo
de este umbral. Si se controla la presencia de estos mensajes en el diario de errores, es
posible aadir espacio al dispositivo de base de datos cuando sea necesario, antes de que
los usuarios tengan problemas.
El ejemplo siguiente crea un umbral en el segmento default de mydb . Cuando el
espacio libre en este segmento cae por debajo de 200 pginas, SQL Server ejecuta el
procedimiento space_dataseg :
sp_addthreshold mydb, "default", 200, space_dataseg

Determinacin de la ubicacin del umbral


Cada umbral nuevo debe estar al menos a 2 veces el nmero de pginas
@@thresh_hysteresis desde el umbral ms prximo:
Figure 21-53: Determinacin de dnde situar un umbral
Utilice este comando:
select @@thresh_hysteresis

para ver el valor de histresis de una base de datos.


En el ejemplo siguiente, un segmento tiene un umbral definido en 100 pginas. El valor
de histresis para la base de datos es 64 pginas. El siguiente umbral debe estar, como
mnimo, a 100 + (2 * 64), o 228 pginas.
select @@thresh_hysteresis
----------64
sp_addthreshold user_log_dev, 228,
sp_thresholdaction

Creacin de procedimientos de umbral


Sybase no suministra sp_thresholdaction ni otros procedimientos de umbral. Usted
debe crearlos por su cuenta para garantizar que estn adaptados a las necesidades de su
sitio.
Las acciones sugeridas para sp_thresholdaction incluyen escribir en el diario de errores
del servidor y volcar el diario de transacciones para aumentar el espacio del diario.
Tambin puede disearse un procedimiento de umbral que ejecute llamadas de
procedimientos remotos a un Open Server, y enve el correo electrnico a las personas
correctas cuando se cruza un umbral.
Esta seccin proporciona pautas para escribir procedimientos de umbral e incluye dos
ejemplos.

Declaracin de los parmetros del procedimiento


SQL Server pasa cuatro parmetros a un procedimiento de umbral:

@dbname , varchar(30) , que contiene el nombre de la base de datos.


@segmentname , varchar(30) , que contiene el nombre del segmento.
@space_left , int , que contiene el valor de espacio restante para el umbral.
@status , int , que tiene un valor de 1 para los umbrales de ltima oportunidad y
0 para otros umbrales.

Estos parmetros se pasan por posicin, no por nombre. El procedimiento puede utilizar
otros nombres para estos parmetros, pero debe declararlos en el orden y con los tipos
de datos indicados ms arriba.
Generacin de mensajes en el diario de errores
La ejecucin de un procedimiento de umbral no genera mensajes en el diario
automticamente. Si el procedimiento no contiene una instruccin print o raiserror , el
diario de errores no contendr ningn registro del evento de umbral. Para registrar el
nombre de la base de datos y del segmento, y el tamao del umbral en el diario de
errores, debe incluirse una instruccin print cerca del principio del procedimiento.
El proceso que ejecuta los procedimientos de umbral es un proceso interno de SQL
Server que no tiene una conexin asociada de terminal de usuario o de red. Si prueba los
procedimientos de umbral ejecutndolos directamente (es decir, usando execute
procedure_name ) durante una sesin de terminal, ver la salida de los mensajes print y
raiserror en la pantalla. Cuando los mismos procedimientos se ejecutan porque se
alcanza un umbral, los mensajes van al diario de errores. Los mensajes del diario
incluyen la fecha y hora.
Por ejemplo, si sp_thresholdaction incluye esta instruccin:
print "LOG DUMP: log for '%1!' dumped", @dbname

SQL Server escribe este mensaje en el diario de errores:


00: 92/09/04 15:44:23.04 server: background task message: LOG DUMP:
log for 'pubs2' dumped

Volcado del diario de transacciones


Si el procedimiento sp_thresholdaction incluye un comando dump transaction , SQL
Server vuelca el diario a los dispositivos indicados en el procedimiento. El comando
dump transaction trunca el diario de transacciones quitando todas las pginas desde el
principio del diario hasta la pgina situada justo antes de la que contiene un registro de
transaccin no consignada.
Cuando hay suficiente espacio de diario, las transacciones suspendidas se reactivan. Si
las transacciones se abortan, en lugar de suspenderse, los usuarios deben volver a
ejecutarlas.

En general, n o se recomienda el volcado a un disco, especialmente a un disco que est


en la misma mquina, o el mismo controlador de disco que el disco, de la base de datos.
Sin embargo, dado que los volcados iniciados por un umbral pueden ocurrir en
cualquier momento, tal vez convenga hacer un volcado al disco y luego copiar los
archivos resultantes a un medio fuera de lnea. (Para cargar los archivos, tendr que
volver a copiarlos al disco.)
La decisin depender de:

Si hay un dispositivo de volcado dedicado en lnea, que est cargado y


preparado para recibir datos volcados.
Si hay operadores disponibles para montar volmenes de cinta durante los
momentos en que la base de datos est disponible.
El tamao del diario de transacciones.
La cantidad de transacciones.
La planificacin peridica del volcado de las bases de datos y de los diarios de
transacciones.
El espacio de disco disponible.
Otros recursos de volcado y restricciones especficos del sitio.

Un procedimiento de umbral sencillo


El siguiente es un procedimiento sencillo que vuelca el diario de transacciones e
imprime un mensaje en el diario de errores. Dado que este procedimiento utiliza una
variable (@ dbname ) para el nombre de la base de datos, puede utilizarse con todas las
bases de datos de un SQL Server:
create procedure sp_thresholdaction
@dbname varchar(30),
@segmentname varchar(30),
@free_space int,
@status int
as
dump transaction @dbname
to tapedump1
print "LOG DUMP: '%1!' for '%2!' dumped",
@segmentname, @dbname

Un procedimiento ms complejo
El siguiente procedimiento de umbral realiza acciones diferentes dependiendo del valor
de los parmetros pasados. Su lgica condicional permite que se use con segmentos de
diario y de datos.
Este procedimiento:

Imprime un mensaje "LOG FULL" si la llamada al procedimiento fue resultado


de haberse alcanzado el umbral de ltima oportunidad del diario. El bit de estado
para el umbral de ltima oportunidad es 1, y para los dems umbrales, 0. La
prueba if (@status&1) = 1 devuelve el valor de verdadero slo para el umbral
de ltima oportunidad.

Verifica que el nombre de segmento proporcionado sea el segmento de diario.


La ID del segmento de diario siempre es 2, aunque se haya cambiado el nombre.
Imprime informacin del tamao "antes" y "despus" en el diario de
transacciones. Si el diario no se redujo significativamente, es posible que una
transaccin prolongada est llenando el diario.
Imprime la hora en que comenz y termin el volcado del diario de
transacciones, facilitando la recopilacin de datos sobre la duracin del volcado.
Imprime un mensaje en el diario de errores si el umbral no est en el segmento
de diario. El mensaje da el nombre de la base de datos y el del segmento, y el
tamao del umbral, para que se sepa que se est llenando el segmento de datos
de una base de datos.
create procedure sp_thresholdaction
@dbname
varchar(30),
@segmentname
varchar(30),
@space_left
int,
@status
int
as
declare @devname varchar(100),
@before_size int,
@after_size int,
@before_time datetime,
@after_time datetime,
@error int
/*
** si es el umbral de ltima oportunidad, da un mensaje LOG
FULL
** @status es 1 en el umbral de lt. oportunidad, 0 en los
dems
*/
if (@status&1) = 1
begin
print "LOG FULL: database '%1!'", @dbname
end
/*
** si el segmento es de diario, vuelca el diario
** el segmento de diario siempre es "2" en syssegments
*/
if @segmentname = (select name from syssegments
where segment = 2)
begin
/* obtiene la hora y el tamao del diario
** justo antes de que comience el volcado
*/
select @before_time = getdate(),
@before_size = reserved_pgs(id, doampg)
from sysindexes
where sysindexes.name = "syslogs"
print "LOG DUMP: database '%1!', threshold '%2!'",
@dbname, @space_left
select @devname = "/backup/" + @dbname + "_" +
convert(char(8), getdate(),4) + "_" +
convert(char(8), getdate(), 8)
dump transaction @dbname to @devname

/* verificacin de errores */
select @error = @@error
if @error != 0
begin
print "LOG DUMP ERROR: %1!", @error
end
/* obtiene hora y tamao del diario despus del volcado
*/
select @after_time = getdate(),
@after_size = reserved_pgs(id, doampg)
from sysindexes
where sysindexes.name = "syslogs"
/* imprime mensajes en el diario de errores */
print "LOG DUMPED TO: device '%1!", @devname
print "LOG DUMP PAGES: Before: '%1!', After '%2!'",
@before_size, @after_size
print "LOG DUMP TIME: %1!, %2!", @before_time,
@after_time
end
/* fin de la seccin 'if segment = 2' */
else
/* este es un segmento de dados, imprime un mensaje
*/
begin
print "THRESHOLD WARNING: database '%1!', segment '%2!'
at '%3!' pages", @dbname, @segmentname, @space_left
end

Ubicacin de un procedimiento de umbral


Aunque es posible crear un procedimiento de volcado del diario de transacciones para
cada umbral, es ms sencillo crear un solo procedimiento de umbral que ejecute todos
los umbrales de segmento de diario. Cuando la cantidad de espacio libre en un segmento
cae por debajo de un umbral, SQL Server lee la tabla systhresholds de la base de datos
afectada para obtener el nombre del procedimiento almacenado asociado. La entrada en
systhresholds puede especificar cualquiera de los elementos siguientes:

Una llamada de procedimiento remoto a un Open Server.


Un nombre de procedimiento calificado con un nombre de base de datos (por
ejemplo, sybsystemprocs.dbo.sp_thresholdaction ).
Un nombre de procedimiento no calificado.

Si el nombre del procedimiento no incluye un calificador de base de datos, SQL Server


mira en la base de datos donde se ha producido la escasez de espacio. Si no encuentra el
procedimiento y si su nombre comienza con los caracteres "sp_", SQL Server lo busca
en la base de datos sybsystemprocs , y luego en la base de datos master .
Si SQL Server no encuentra el procedimiento de umbral o no puede ejecutarlo, imprime
un mensaje en el diario de errores.

Inhabilitacin de la contabilidad de espacio libre para segmentos de datos


Utilice la opcin no free space acctg de sp_dboption y, a continuacin, el comando
checkpoint , para inhabilitar la contabilidad espacio libre en los segmentos que no son

de diario. No es posible inhabilitar la contabilidad de espacio libre en el segmento de


diario.
Cuando se inhabilita la contabilidad de espacio libre, slo los umbrales del segmento de
diario controlan el uso del espacio. Cruzar los umbrales en los segmentos de datos no
provocar la ejecucin de procedimientos de umbral. La inhabilitacin de la
contabilidad de espacio libre acelera el tiempo de recuperacin porque los recuentos de
espacio libre no se calculan de nuevo durante la recuperacin de ningn segmento,
excepto el de diario.
El ejemplo siguiente desactiva la contabilidad de espacio libre de la base de datos
production :
sp_dboption production,
"no free space acctg", true

Warning! Los procedimientos del sistema no pueden proporcionar informacin exacta


sobre la asignacin de espacio cuando la contabilidad de espacio libre est inhabilitada.

Glosario
administrador del sistema
Usuario autorizado para manejar la administracin del sistema de SQL Server, incluida
la creacin de cuentas de usuarios, asignacin de permisos y creacin de nuevas bases
de datos.

archivo de formato
Archivo creado mientras se copian datos desde una tabla de una base de datos de SQL
Server a un archivo del sistema operativo con bcp . El archivo de formato contiene
informacin sobre el formato de los datos que se estn copiando y puede utilizarse para
volver a copiarlos a una tabla de SQL Server, o para realizar copias adicionales.

base de datos
Conjunto de tablas de datos relacionadas y otros objetos de base de datos que se
organizan y presentan para servir un propsito especfico.

base de datos master


Controla las bases de datos de usuario y el funcionamiento de SQL Server en conjunto.
Hace el seguimiento de aspectos tales como cuentas de usuarios, procesos en curso y
mensajes de error del sistema.

base de datos model


Plantilla para las nuevas bases de datos de usuario. El programa buildmaster y el guin
installmodel crean model cuando se instala SQL Server. Cada vez que se ejecuta el

comando create database , SQL Server realiza una copia de model y la ampla al
tamao solicitado, si es necesario.

base de datos predeterminada


Base de datos con la que se conecta un usuario cuando hace el login.

base de datos temporal


Base de datos temporal de SQL Server, tempdb , que proporciona un rea de
almacenamiento para las tablas temporales y otras necesidades temporales de
almacenamiento de trabajo (por ejemplo, los resultados intermedios de group by y
order by ).

bases de datos del sistema


Bases de datos en un SQL Server recin instalado: master , que controla las bases de
datos de usuario y el funcionamiento del SQL Server; tempdb , utilizada para las tablas
temporales; model , que sirve como plantilla para crear nuevas bases de datos de
usuario; y sybsystemprocs , que almacena los procedimientos del sistema.

bloqueo
Proceso de restringir el acceso a los recursos en un entorno multiusuario para mantener
la seguridad e impedir problemas de acceso simultneo. SQL Server aplica
automticamente bloqueos a las tablas o pginas.

bloqueo compartido
Bloqueo creado por operaciones que no actualizan ("lecturas"). Otros usuarios pueden
leer los datos simultneamente, pero ninguna transaccin puede lograr un bloqueo
exclusivo sobre los datos hasta que se liberen todos los bloqueos compartidos.

bloqueo de demanda
Un bloqueo de demanda impide que se establezcan otros bloqueos compartidos en un
recurso de datos (tabla o pgina de datos). Cualquier nueva solicitud de bloqueo
compartido tiene que esperar a que termine la solicitud de bloqueo de demanda.

bloqueo insoluble
Situacin que se plantea cuando dos usuarios con un bloqueo sobre un dato, intentan
lograr un bloqueo sobre el dato del otro usuario. SQL Server detecta los bloqueos
insolubles y destruye el proceso de uno de los usuarios.

bloqueo intencionado
Indica la intencin de lograr un bloqueo compartido o exclusivo sobre una pgina de
datos.

bloqueos exclusivos
Bloqueos que impiden que otra transaccin obtenga un bloqueo hasta que se libere el
bloqueo original al final de una transaccin. Se aplican siempre en las operaciones de
actualizacin ( insert , update , delete ).

cadena hexadecimal
Cadena binaria codificada hexadecimalmente que comienza con el prefijo 0x y puede
incluir los dgitos 0 a 9 y las letras A a F en minsculas y maysculas. La interpretacin
de las cadenas hexadecimales depende de cada plataforma. En algunos sistemas, el
primer byte despus del prefijo es el ms significativo; en otros, el ltimo byte es el ms
significativo. Por ejemplo, la cadena 0x0100 se interpreta como 1 en algunos sistemas y
como 256 en otros.

comando
Instruccin que especifica una operacin que la computadora debe realizar. Cada
comando o instruccin de SQL comienza con una palabra clave, como insert , que
indica la operacin bsica a realizarse. Muchos comandos de SQL tienen una o ms
frases de palabras claves , o clusulas , que adaptan el comando para satisfacer una
necesidad en particular.

consulta
1. Solicitud de recuperacin de datos con una instruccin select .
2. Cualquier instruccin de SQL que manipule datos.

conversin de juego de caracteres


Cambio del sistema de codificacin de un juego de caracteres al entrar o salir de SQL
Server. La conversin se usa cuando SQL Server y un cliente utilizan juegos de
caracteres diferentes. Por ejemplo, si SQL Server utiliza ISO 8859-1 y un cliente usa la
pgina de cdigos 850, debe activarse la conversin de juego de caracteres para que
tanto el cliente como el servidor interpreten los datos de la misma manera.

copia de seguridad
Copia de una base de datos o un diario de transacciones, utilizada para la recuperacin
de un fallo de medios.

copia masiva
La utilidad bcp , que copia datos en y desde las bases de datos.

criterios de ordenacin

SQL Server los utiliza para determinar el criterio con que se ordenan los datos de tipo
alfanumrico. Tambin se denomina secuencia de intercalacin .

dbo
En una base de datos de propiedad de un usuario, SQL Server reconoce a ese usuario
como dbo . El propietario de una base de datos se conecta con SQL Server usando el
nombre de login y contrasea que tiene asignado.

definicin de datos
Proceso de configurar bases de datos y crear objetos de base de datos, como tablas,
ndices, reglas, valores predeterminados, procedimientos, disparadores y vistas.

diario de transacciones
Tabla del sistema ( syslogs ) donde se registran todos los cambios en la base de datos.

diccionario de datos
1. En SQL Server, las tablas del sistema que contienen descripciones de los objetos de
base de datos y de su estructura.
2. En SQL Toolset(TM), herramienta para inspeccionar objetos de base de datos.

disparador
Forma especial de procedimiento almacenado que tiene efecto cuando un usuario
ejecuta un comando de cambio como insert , delete o update en una tabla o columna
especificada. Los disparadores suelen utilizarse para aplicar la integridad de referencia.

dispositivo de base de datos


Dispositivo dedicado al almacenamiento de objetos que constituyen las bases de datos.
Puede ser cualquier parte del disco o un archivo del sistema de archivos utilizado para
almacenar bases de datos y sus objetos.

duplicacin de disco
Duplicado de un dispositivo de base de datos de SQL Server. Todas las escrituras en el
dispositivo que se duplica se copian a un dispositivo fsico aparte, convirtiendo el
segundo dispositivo en una copia exacta del dispositivo duplicado. Si falla uno de ellos,
el otro contiene una copia actualizada de todas las transacciones. El comando disk
mirror inicia el proceso de duplicacin de un disco.

escala
Nmero mximo de dgitos que un tipo de datos numeric o decimal puede guardar a la
derecha de la coma decimal. La escala debe ser inferior o igual a la precisin .

esquema
Consta de la coleccin de objetos asociados a un nombre de esquema e identificador de
autorizacin de esquema en particular. Los objetos son tablas, vistas, dominios,
restricciones, aserciones, privilegios, etc. Un esquema se crea usando una instruccin
create schema .

expresin
Clculo, datos de columna, funcin incorporada o subconsulta que devuelve valores.

fantasmas
Ocurren cuando una transaccin lee un conjunto de filas que satisfacen una condicin
de bsqueda, y luego una segunda transaccin modifica los datos (por medio de un
insert , delete , update , etc.). Si la primera transaccin repite la lectura con las mismas
condiciones de bsqueda, obtiene un conjunto distinto de filas.

funcin de fecha
Funcin que muestra informacin sobre fechas y horas, o manipula valores de fecha u
hora. Las cinco funciones de fecha son getdate, datename, datepart, datediff y
dateadd .

funcin del sistema


Funcin que devuelve informacin especial desde la base de datos, en particular desde
las tablas del sistema.

funciones incorporadas
Amplia variedad de funciones que toman uno o ms parmetros y devuelven resultados.
Las funciones incorporadas incluyen funciones matemticas, del sistema, de cadena,
texto, fecha, y una funcin de conversin de tipos.

ID de usuario
Nmero de identificacin por la que un usuario es conocido en una base de datos
especfica. Es distinta de la ID de usuario de servidor .

ID de usuario de servidor
El nmero de identificacin por el que SQL Server conoce a un usuario.

identificador
Cadena de caracteres utilizada para identificar un objeto de base de datos, como el
nombre de una tabla o columna.

identificador de autorizacin de usuario


Los "identificadores de autorizacin de usuario" estn asociados a cada esquema. Se
dice que todos los objetos son propiedad de, o han sido creados por, el identificador de
autorizacin de usuario asociado del esquema.

idioma predeterminado
1. El idioma predeterminado de un usuario es aquel en que se muestran las solicitudes y
mensajes de ese usuario. Puede definirse con sp_modifylogin o con la opcin language
del comando set .
2. El idioma predeterminado de SQL Server es el que se utiliza para mostrar solicitudes
y mensajes a todos los usuarios, a menos que un usuario elija otro idioma.

ndice agrupado
Indice en que el orden fsico y el orden lgico (indexado) son el mismo. El nivel de hoja
de un ndice agrupado representa las pginas de datos en s mismas.

ndice no agrupado
Indice que almacena valores de clave y punteros a los datos. El nivel de hoja apunta a
las pginas de datos, en lugar de contener los propios datos.

inicializacin de disco
Proceso de preparar una particin de base de datos, dispositivo exterior o archivo para
uso de SQL Server. Una vez inicializado, el dispositivo puede utilizarse para guardar las
bases de datos y sus objetos. El comando que inicializa un dispositivo de base de datos
es disk init .

instruccin
Una instruccin comienza con una palabra clave que indica la operacin o comando
bsico que se va a realizar.

int
Valor entero de 32 bits con signo.

invitado
Si el nombre de usuario "guest" existe en la tabla sysusers de una base de datos,
cualquier usuario con login vlido para SQL Server puede utilizar esa base de datos, con
privilegios limitados.

juego de caracteres

Conjunto de caracteres especficos (habitualmente estandarizados) con un esquema de


codificacin que define inequvocamente cada carcter. ASCII e ISO 8859-1 (Latin 1)
son dos juegos de caracteres comunes.

juego de caracteres de varios bytes


Juego de caracteres que incluye caracteres codificados usando ms de un byte. EUC JIS
y Shift-JIS son ejemplos de juegos de caracteres que incluyen varios tipos de caracteres
del japons representados por varios bytes.

kernel
Mdulo dentro de SQL Server que acta como interfaz entre SQL Server y el sistema
operativo.

lectura no repetible
Ocurre cuando una transaccin lee una fila y luego una segunda transaccin modifica
esa fila. Si la segunda transaccin consigna su cambio, las sucesivas lecturas efectuadas
por la primera transaccin producen resultados diferentes a la lectura original.

lectura sucia
Las "lecturas sucias" suceden cuando una transaccin modifica una fila y una segunda
transaccin lee esa fila antes de que la primera transaccin consigne el cambio. Si la
primera transaccin revierte el cambio, la informacin leda por la segunda transaccin
se torna invlida.

listado de volcado
Entrelazado de los datos de volcado entre varios volmenes de volcado .

livelock
Solicitud de un bloqueo exclusivo denegado repetidamente porque una serie de
bloqueos compartidos superpuestos contina interfiriendo. El SQL Server detecta la
situacin despus de cuatro negaciones y rechaza otros bloqueos compartidos.

llamadas de procedimientos remotos


1. Procedimiento almacenado ejecutado en un SQL Server distinto del servidor con
que est conectado el usuario.
2. En APT-SQL, son procedimientos almacenados ejecutados con la instruccin remote
. Los procedimientos almacenados ejecutados con remote pueden estar en un servidor
remoto o en el servidor local.

login

Nombre que un usuario utiliza para conectarse con SQL Server. Un login es vlido si
SQL Server tiene una entrada para ese usuario en la tabla del sistema syslogins .

lote
Una o ms instrucciones de Transact-SQL terminadas con una seal de fin de lote,
enviadas al SQL Server para procesamiento. El Report Workbench(R) y otros
programas cliente suministran seales de fin de lote automticamente a los lotes de
SQL.

mensaje de error
Mensaje que SQL Server presenta, normalmente en el terminal del usuario, cuando
detecta una condicin de error.

modificacin de datos
Adicin, eliminacin o cambio de informacin en la base de datos con los comandos
insert , delete y update .

motor
Proceso que ejecuta a un SQL Server comunicado con los procesos de otro servidor
usando memoria compartida. Un motor puede describirse como el valor de la capacidad
de procesamiento de una CPU. No representa una CPU en particular en una mquina.
Tambin es conocido como "motor servidor". Un SQL Server que se ejecute en una
mquina de un solo procesador siempre tendr un motor, el motor 0. Un SQL Server
que se ejecute en una mquina de varios procesadores puede tener uno o ms motores.
El nmero mximo de motores que se ejecutan en SQL Server puede modificarse
usando la variable de configuracin max online engines .

nivel de aislamiento
Tambin denominado "nivel de bloqueo", el nivel de aislamiento especifica los tipos de
acciones no permitidos mientras se ejecuta la transaccin actual. La norma SQL define
tres niveles de aislamiento para las transacciones de SQL. El nivel 1 impide las lecturas
sucias , y el nivel 2 tambin impide las lecturas no repetibles . El nivel 3 impide los
dos tipos de lecturas anteriores y las lecturas fantasmas ; equivale a ejecutar todos los
select con holdlock . El usuario controla el nivel de aislamiento con la opcin
transaction isolation level del comando set ; el nivel de aislamiento predeterminado es
el 1.

nivel de bloqueo
Vase nivel de aislamiento .

nivel de hoja

Nivel inferior de un ndice agrupado o no agrupado. En un ndice agrupado, el nivel de


hoja contiene las pginas de datos reales de la tabla.

nulo
Que no tiene un valor asignado explcitamente. NULL no equivale a cero ni a un
espacio en blanco. Un valor de NULL no se considera mayor que, menor que, ni
equivalente a ningn otro valor, incluso otro valor de NULL.

nmero de estado de error


Nmero vinculado a un mensaje de error de SQL Server que permite identificar
inequvocamente la lnea de cdigo de SQL Server en la que se produjo el error.

nmero de mensaje
Nmero que identifica inequvocamente un mensaje de error.

nmero de nivel de gravedad


Gravedad de una condicin de error: los errores con niveles de gravedad 19 y superiores
son errores fatales.

objeto de base de datos


Uno de los componentes de una base de datos: tabla, vista, ndice, procedimiento,
disparador, columna, valor predeterminado o regla.

optimizador
Cdigo de SQL Server que analiza consultas y objetos de base de datos y selecciona el
plan de consultas adecuado. El optimizador de SQL Server se basa en costos: estima el
costo de cada permutacin de accesos a la tabla en relacin al costo de CPU y al costo
de E/S.

pgina de cdigos
Vase juego de caracteres .

palabra clave
Palabra o frase reservada para uso exclusivo de Transact-SQL. Tambin se denomina
palabra reservada .

parmetro
Argumento de un procedimiento almacenado.

partes de asignacin de disco

Grupos de las unidades de asignacin a partir de los cuales SQL Server construye un
nuevo archivo de base de datos. El tamao mnimo de una parte de asignacin de disco
es una unidad de asignacin, o sea 256 pginas de 2K.

permiso
Autoridad para realizar ciertas acciones sobre ciertos objetos de base de datos o para
ejecutar ciertos comandos.

permisos para utilizar comandos


Permisos que se aplican a los comandos. Vase tambin permisos sobre objetos .

permisos sobre objetos


Permisos que regulan el uso de ciertos comandos (los de modificacin de datos, ms
select , truncate table y execute ) en tablas, vistas, columnas o procedimientos
especficos. Vase tambin permisos para utilizar comandos .

precisin
Nmero mximo de dgitos decimales que pueden almacenarse en los tipos de datos
numeric y decimal . La precisin incluye todos los dgitos, tanto los situados a la
izquierda como a la derecha de la coma decimal.

precisin de visualizacin
Nmero de dgitos binarios significativos ofrecidos por el formato de visualizacin
predeterminado para los valores real y float . Internamente, los valores real y float se
almacenan con una precisin inferior o igual a la de los tipos de datos especficos de la
plataforma en que se construyen. Para los efectos de visualizacin, los nmeros reales
de Sybase tienen 9 dgitos de precisin; los de coma flotante, 17.

privilegio
Vase permiso .

procedimiento almacenado
Conjunto de instrucciones de SQL e instrucciones opcionales de control de flujo
almacenado bajo un nombre. Los procedimientos almacenados suministrados con SQL
Server se denominan procedimientos del sistema .

procedimientos del sistema


Procedimientos almacenados que SQL Server suministra para uso en la administracin
del sistema. Estos procedimientos son atajos para recuperar informacin de las tablas
del sistema, o mecanismos para realizar la administracin del sistema u otras tareas que
implican la actualizacin de tablas del sistema.

propietario de base de datos


Usuario que crea una base de datos. El propietario de una base de datos tiene control
sobre todos los objetos de esa base de datos. El nombre de login del propietario de la
base de datos es ''dbo''.

proteccin relativa al contexto


Proteccin que proporciona ciertos permisos o privilegios dependiendo de la identidad
del usuario. Este tipo de proteccin puede proporcionarse usando vistas y la funcin
incorporada user_id .

punto de verificacin
Punto en que se garantiza que todas las pginas de datos modificadas fueron escritas en
el dispositivo de base de datos.

recuperacin
Proceso de reconstruir una o ms bases de datos a partir de los volcados de bases de
datos y diarios. Vase tambin recuperacin automtica .

recuperacin automtica
Proceso que se ejecuta cada vez que SQL Server se detiene y reinicia. El proceso
garantiza la aplicacin de todas las transacciones terminadas antes del cierre del
servidor, y la reversin de todas las transacciones incompletas.

reglas de normalizacin
Reglas estndar del diseo de bases de datos en un sistema de administracin de bases
de datos relacionales.

sa
Vase administrador del sistema .

sector
Siempre que una tabla o un ndice requieren espacio, SQL Server asigna un bloque de 8
pginas de 2K, llamado sector, al objeto.

secuencia de intercalacin
Vase criterios de ordenacin .

segmento

Subconjunto con nombre de los dispositivos de base de datos disponibles para una base
de datos en particular. Es una etiqueta que seala uno o ms dispositivos de base de
datos. Los segmentos pueden utilizarse para controlar la ubicacin de tablas e ndices en
dispositivos de base de datos especficos.

sistema operativo
Grupo de programas que traduce los comandos del usuario a la computadora, para
permitir realizar tareas tales como crear archivos, ejecutar programas e imprimir
documentos.

SQL Server
Servidor en una arquitectura cliente-servidor de Sybase. SQL Server administra
mltiples bases de datos y usuarios, controla la ubicacin real de los datos en los discos,
mantiene la correlacin de la descripcin de datos lgicos con el almacenamiento de los
datos fsicos, y mantiene cachs de datos y de procedimientos en la memoria.

tabla del sistema


Una de las tablas de diccionario de datos. Las tablas del sistema controlan informacin
sobre el SQL Server en conjunto y sobre cada base de datos de usuario. La base de datos
master contiene algunas tablas del sistema que no estn en las bases de datos de usuario.

terminador de comando
La seal de fin de lote que enva el lote a SQL Server para el procesamiento.

tipo de datos
Especifica qu tipo de informacin contendr cada columna y cmo se guardarn los
datos. Entre los tipos de datos se incluyen char , int y money , por ejemplo. Los usuarios
pueden construir sus propios tipos de datos basados en los del sistema SQL Server.

transaccin
Mecanismo que garantiza que un grupo de acciones se trate como una sola unidad de
trabajo.

umbral de espacio libre


Umbral definido por el usuario. Especifica la cantidad de espacio en un segmento y la
accin que se toma cuando la cantidad de espacio disponible en ese segmento es inferior
al espacio especificado.

umbral de ltima oportunidad


Umbral predeterminado en SQL Server que suspende o destruye los procesos de usuario
si el diario de transacciones queda sin espacio. Este umbral deja espacio suficiente slo

para los registros de desasignacin de las pginas borradas por el volcado del propio
diario. Los eventos de umbral llaman un procedimiento definido por el usuario, cuyo
nombre predeterminado es sp_thresholdaction . Sybase no suministra este
procedimiento; debe escribirlo el administrador del sistema.

unidad de asignacin
Unidad lgica de 1/2 megabyte. El comando disk init inicializa un nuevo dispositivo de
base de datos para SQL Server y lo divide en partes de 1/2 megabyte, denominadas
unidades de asignacin.

valor predeterminado
Opcin elegida por el sistema cuando no se especifica ninguna otra opcin.

variable global
Variables definidas por el sistema, actualizadas continuamente por SQL Server. Por
ejemplo, @@error contiene el nmero del ltimo error generado por el sistema.

vista
Forma alternativa de ver los datos de una o ms tablas. Normalmente se crea como
subconjunto de las columnas de una o ms tablas.

volcado dinmico
Volcado realizado mientras la base de datos est activa.

volumen de volcado
Una sola cinta, particin o archivo utilizado para el volcado de una base de datos o de
un diario de transacciones. Un volcado puede abarcar muchos volmenes, y muchos
volcados pueden realizarse en un solo volumen de cinta.

You might also like