Professional Documents
Culture Documents
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.
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:
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.
[]
()
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.
device_name
pub_name
------------------New Age Books
Binnet & Hardley
Algodata Infosystems
(3 rows affected)
city
----------Boston
Washington
Berkeley
state
----MA
DC
CA
Llaves y comas: Elija una o ms opciones. Si elige varias, seprelas con comas.
{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
Definicin
expresin
expresin lgica
expresin
constante
expr_flotante
expr_entero
expr_numrica
expr_caract
expr_binaria
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
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:
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
select *
from sysobjects
where type = "TR"
go
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 .
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"
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.
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
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.
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:
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
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 .
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.
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
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.
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.
(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:
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.
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
"
select
select
select
select
select
*
*
*
*
*
from
from
from
from
from
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".
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:
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.
Chapter 4
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:
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!.
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
Nmero hexadecimal
%s
%S_ type
%c
Un solo carcter
%f
%ld
Decimal largo
%lf
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:
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:
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
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
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 :
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:
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.
Inmediatos.
alarm sleep
lock sleep
Inmediatos.
sleeping
runnable
Inmediatos.
running
infected
Un proceso, como un
procedimiento de umbral,
background
ejecutado por SQL Server, no por
un proceso de usuario.
log
suspend
spid
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
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}]
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:
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
Chapter 5
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.
Captulo
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.
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"
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...
Captulo 16,
"Creacin y uso
de segmentos"
Captulo 16,
"Creacin y uso
de segmentos"
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
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.
Chapter 6
Introduccin
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:
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.
]
OpenVMS)
En OpenVMS:
disk init
name = "user_disk",
physname = "disk$rose_1:[dbs]user.dbs",
vdevno = 2, size = 5120,
contiguous
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.
d_master
cntrltype
---------0
low
-----0
high
------9999
El contenido inicial de sysdevices depende del sistema operativo y suele incluir las
siguientes entradas:
Significado
Disco fsico
16
Dispositivo de volcado
32
Escrituras en serie
64
Dispositivo duplicado
Omisin de dispositivos
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.
logicalname
, {defaulton | defaultoff}
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
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.
Chapter 7
Introduccin
Cmo decidir qu duplicar
Condiciones que no inhabilitan la duplicacin
Comandos de duplicacin de 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 .
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"
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 .
"
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
Paso 1
Inicialice un nuevo dispositivo de prueba usando el comando:
disk init name = "test",
physname = "/usr/sybase/test.dat",
size=5120, vdevno=3
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"
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
Paso 4
Vuelva a duplicar el dispositivo de prueba:
disk remirror 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
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"
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
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
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:
Cach de datos
Cach de procedimientos (en funcin del valor del parmetro procedure cache
percent )
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
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).
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
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
Funcin
Crea u omite cachs con nombre y cambia su tamao o tipo.
sp_poolconfig
sp_bindcache
sp_cachestrategy
sp_logiosize
sp_spaceused
sp_estspace
sp_help
sp_helpindex
sp_helpdb
set showplan on
set statistics io on
select...
(prefetch...lru |
mru)
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".
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.
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
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.
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
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".
, "
memsize
[P|K|M|G]", "
config_pool
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
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
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"
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
sp_bindcache
Para vincular un ndice a titles , aada el nombre del ndice como tercer parmetro:
sp_bindcache pubs_cache, pubs2,
titles, titleind
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
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.
Run Size
---------10.00 Mb
Overhead
---------0.53 Mb
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
+3,03
62,39
- 10,53
Espacio restante
51,86
- 2,86
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.
sp_unbindcache
[,
indexname
dbname
[,[ owner
| "text only"] ]
.]tablename
512K
20 por ciento de las memorias intermedias del banco
------------ -----------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"
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.
"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
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"
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.
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
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
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".
Chapter 10
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:
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:
Arquitectura de destino
El producto de entorno de SMP est destinado a mquinas que tienen las siguientes
caractersticas:
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.
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
Chapter 11
Nombre nuevo
allow updates
calignment
cclkrate
cfgcprot
cguardsz
cindextrips
cmaxnetworks
cmaxscheds
cnalarm
number of alarms
cnblkio
cnlanginfo
cnmaxaio_engine
cnmaxaio_server
cnmbox
number of mailboxes
cnmsg
number of messages
coamtrips
cpreallocext
cpu flush
cschedspins
csortbufsize
csortpgcount
ctimemax
database size
default language
default language id
default sortorder id
default sortorder id
devices
number of devices
fillfactor
i/o flush
language in cache
locks
number of locks
total memory
mrstart
nested trigger
open databases
open objects
pre-read packets
procedure cache
recovery flags
recovery interval
remote access
remote connections
remote logins
remote sites
stack size
stack size
tape retention
time slice
time slice
upgrade version
upgrade version
user connections
Parmetros nuevos
N/A
N/A
configuration file
N/A
N/A
deadlock retries
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
partition groups
N/A
N/A
N/A
N/A
N/A
N/A
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)
Efecto
sp_configure
sp_configure "
parameter"
sp_configure "
parameter" , value
sp_configure "
parameter" , 0, "default"
sp_configure "
group_name"
sp_configure "
configuration file ", 0 , "
sub_command ", "
file_name "
Elementos de sintaxis
En la Tabla 11-1, se utilizan los siguientes elementos:
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:
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
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}
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
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
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
--------------
1
256
10
95
0
0
0
0
1
256
10
95
1
256
10
95
user_name
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
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:
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.
Margen de valores
1-32767
Estado
Dinmico
Nivel de visualizacin
Bsico
Rol requerido
0-365
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
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
Margen de valores
0-65535
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
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.
Margen de valores
0- 65535
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
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
N/A
Margen de valores
N/A
Estado
Calculado
Nivel de visualizacin
Bsico
Rol requerido
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:
1 (activado)
Valores vlidos
0 (desactivado), 1 (activado)
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
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
256
Margen de valores
0-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
10
Margen de valores
1-256
Estado
Esttico
Nivel de visualizacin
Bsico
Rol requerido
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
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
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
0-32767
Estado
Dinmico
Nivel de visualizacin
Intermedio
Rol requerido
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
Margen de valores
3-100
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
100
Margen de valores
1-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
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
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
30
Margen de valores
1- 2147483647
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
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
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
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
100
Margen de valores
1-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
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
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:
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
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
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
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:
Client-Library
8192
Client-Library
4096
Client-Library
4096
Total
24576
*3
73728
Calcule 2% de sobrecarga
* 0,02=1474
Sume la sobrecarga
+ 1474
75202
75776
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
20
Margen de valores
0-32767
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
20
Margen de valores
0-32767
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
10
Margen de valores
0-32767
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
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
0 (desactivado)
Valores vlidos
0 (desactivado), 1 (activado)
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
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
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
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
75
65
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
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
Estado
Slo lectura
Nivel de visualizacin
Completo
Rol requerido
Margen de valores
Depende de la plataforma
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
Margen de valores
0-2147483647
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
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
Depende de la plataforma
Margen de valores
3850-2147483647
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
Valor para s u
servidor
___________________
___________________
___________________
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
Margen de valores
1-32
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
1-32
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
1 (activado)
Valores vlidos
0 (desactivado), 1 (activado)
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
0 (desactivado)
Valores vlidos
0 (desactivado), 1 (activado)
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
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:
100
Margen de valores
1-65535
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
200
Margen de valores
1-2147483647
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
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
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
Margen de valores
0-100
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
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
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
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
5000
Margen de valores
1 - 9999999
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
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
Margen de valores
1-2147483647
Estado
Dinmico
Nivel de visualizacin
Intermedio
Rol requerido
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
10
Margen de valores
1-2147483647
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
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.
200
Margen de valores
2-2147483647
Estado
Dinmico
Nivel de visualizacin
Intermedio
Rol requerido
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
Estado
Dinmico
Nivel de visualizacin
Intermedio
Rol requerido
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
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
40
Margen de valores
0-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
Margen de valores
0-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
30
Margen de valores
0-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
0-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
12
Margen de valores
5-2147483647
Estado
Esttico
Nivel de visualizacin
Bsico
Rol requerido
500
Margen de valores
100-2147483647
Estado
Esttico
Nivel de visualizacin
Bsico
Rol requerido
Margen de valores
0-31
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
Margen de valores
0-32767
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
0 (desactivado)
Valores vlidos
0 (desactivado), 1 (activado)
Estado
Dinmico
Nivel de visualizacin
Intermedio
Rol requerido
2000
Margen de valores
0-2147483647
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
1024
Margen de valores
1-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
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
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
Margen de valores
0-32767
Estado
Dinmico
Nivel de visualizacin
Completo
Rol requerido
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
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
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
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
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
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.
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
___________________
___________________
___________________
15
Margen de valores
1-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
4096
Margen de valores
0-2147483647
Estado
Esttico
Nivel de visualizacin
Completo
Rol requerido
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!
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
Estado
Esttico
Nivel de visualizacin
Bsico
Rol requerido
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.
Margen de valores
0-32767
Estado
Dinmico
Nivel de visualizacin
Intermedio
Rol requerido
2048
Margen de valores
2048-2147483647
Estado
Esttico
Nivel de visualizacin
Intermedio
Rol requerido
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
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
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.
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
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
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.
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
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
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:
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
.
tab_name
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.
table_name
table_id
mientras que la consulta siguiente devuelve la fecha con los nombres de mes en italiano:
Chapter 13
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 .
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
Griego
Japons
Turco
Europa Occidental
Arabe, chino
(simplificado y
tradicional) o hebreo
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.
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.
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:
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.
Chapter 14
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.
dbcc
checktable(syslogs)
sp_logdevice
sp_helpdb
sp_spaceused
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
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:
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.
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
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
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.
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".
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.
loginame
[, true ]
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".
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:
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
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
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.
vstart
------4
2564
1540
16777216
33554432
1777216
3554432
67108864
50331648
67110912
67111424
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 diario
Datos y diario
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
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
Descripcin
reserved
data ,
index_size
unused
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
Chapter 15
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 .
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 .
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
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:
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.
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
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
Sirve para
Definir un segmento en una base de datos.
sp_extendsegment
sp_placeobject
sp_helpsegment
sp_helpdb
sp_help
sp_helpindex
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
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
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:
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:
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
segname
dbname,
devname
"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
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.
segname
dbname,
device
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".
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
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
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
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
name
status
--------------- -----system
0
default
1
logsegment
0
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.
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:
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
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:
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
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
Chapter 17
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 :
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:
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:
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
table_name
table_id
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).
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:
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:
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
***************************************************************
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.
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:
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
})
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
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
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.
Chapter 18
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 .
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
database_name,
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:
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 .
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:
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.
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
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
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:
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
Recibe la solicitud de
cambio de volumen desde
Backup Server
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
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
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
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
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
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)
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.
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.
Chapter 19
Consulte
Captulo 18, "Desarrollo de un plan de
copias de seguridad y recuperacin"
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
database_name
database_name
Dispositivo de volcado
to stripe_device
to stripe_device
[ at server_name ]
[ at server_name ]
[ density = density ,
blocksize =
number_bytes ,
capacity =
number_kilobytes ]
[ density = density ,
blocksize = number_bytes
,
capacity =
number_kilobytes ]
[ , dumpvolume =
volume_name ]
[ , dumpvolume =
volume_name ]
[ , 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 }
database_name
database_name
Dispositivo de volcado
from stripe_device
from stripe_device
[ at server_name ]
[ at server_name ]
[ density = density ,
Caractersticas del dispositivo
blocksize =
de cinta
number_bytes ]
[ density = density ,
blocksize = number_bytes ]
[ , dumpvolume =
volume_name ]
[ , dumpvolume =
volume_name ]
[ , file = file_name ]
[ , file = file_name ]
Caractersticas de otros
dispositivos (hasta 31
dispositivos; un conjunto de
blocksize = number_bytes ,
file = file_name ,
dumpvolume =
volume_name ]]...
blocksize =
number_bytes ,
file = file_name ,
dumpvolume =
volume_name ]]...
[ 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 ]
[ , listonly [= full ]]
[ , notify = { client |
operator_console }]}]
[ , notify = { client |
operator_console }]}]
Tarea
Truncar el diario
en el mismo
segmento que los
datos
Comando
dump transaction
Nombre de la
base de datos
database_name
database_name
database_name
with
truncate_only
with no_log
Para obtener informacin sobre los permisos requeridos para ejecutar los comandos de
volcado y carga, consulte "Asignacin de responsabilidades para las copias de
seguridad".
Base de datos
Dispositivo de
volcado
[ 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 }]}]
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.
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"
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.
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.
[ 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.
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
[ 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.
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:
file = file_name ]
file = file_name ]
[ stripe on stripe_device
[ 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 ,
[ 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 }]}]
En OpenVMS:
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 .
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 }]}]
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
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 .
[ 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 }]}]
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:
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 .
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 }]}]
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
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.
'
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.
[ 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 ],
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
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.
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 ...
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
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)
Contestando
sp_volchanged session_id , devname ,
abort
sp_volchanged session_id , devname ,
proceed
[, fname [, vname ]]
Contestando
sp_volchanged session_id , devname
, abort
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 ]]
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 ]]
Contestando
Abortar el volcado
sp_volchanged session_id ,
session_id , 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 ]]
Contestando
Abortar el volcado
sp_volchanged session_id ,
session_id , 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 ]]
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:
Contestando
sp_volchanged session_id ,
session_id , abort
sp_volchanged session_id ,
session_id , retry
[, session_id [, session_id ]]
Contestando
Abortar la carga
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 ]]
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"
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
")
size
-------10240
5120
5120
1024
2048
Megabytes
Datos
20
Datos
10
Diario
10
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
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
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
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
Began upgrade
Bypass recovery
In load
Not recovered
Suspect
Aunque la base de datos no est disponible para uso general, los comandos siguientes
estn permitidos por estar fuera de lnea:
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:
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.
Chapter 20
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
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.
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.
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
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:
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:"
Datos de
sysdevices
Notas
name
name
physname
phyname
vdevno
low
/16777216
size
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.
server_name
<
En OpenVMS:
set default sybase_system:[sybase.scripts]
define dsquery
server_name
isql/user="sa"/password=" password "
/input=installmodel
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
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.
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.
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 .
owner
dbid
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.
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:
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:
En plataformas PC:
Para obtener ejemplos de la plataforma PC, consulte la Gua de instalacin y
configuracin de SQL Server .
Chapter 21
Consulte
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.
db_id
last chance?
-----------0
threshold procedure
------------------space_dataseg
Adicin de un umbral
Utilice el procedimiento del sistema sp_addthreshold para crear nuevos umbrales. Su
sintaxis es:
sp_addthreshold
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
dbname ,
segname
[,
new_free_space
]]]
free_space
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
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
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
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
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:
/* 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
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.
comando create database , SQL Server realiza una copia de model y la ampla al
tamao solicitado, si es necesario.
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.
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.
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 .
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.
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
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.
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
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 mensaje
Nmero que identifica inequvocamente un mensaje de error.
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.
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.
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 .
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.
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.
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.