Preguntas y respuestas sobre SQLHorario de verano, memoria del servidor y mucho más

Editado por Nancy Michell

Horario de verano

P Dado los próximos cambios del horario de verano en Estados Unidos con el fin de cumplir con la directiva Energy Policy Act 2005, ¿debo actualizar SQL Server™?

R No. En este momento no hay actualizaciones específicas de SQL Server necesarias para la compatibilidad con los cambios del horario de verano. SQL Server depende del sistema operativo subyacente para los datos relacionados con la hora, lo que significa que, si el sistema operativo informa de las fechas y horas correctas, SQL Server informará y utilizará los mismos valores. Para cumplir los próximos cambios del horario de verano, será necesario que actualice su copia de Windows®, tal como se indica en support.microsoft.com/kb/928388. Esto será necesario en todos los sistemas operativos de Windows anteriores a Windows Vista™ (que ya incluye los cambios) para cumplir con los cambios del horario de verano, incluidas las versiones con SQL Server. (Australia también está experimentando algunos cambios. Consulte support.microsoft.com/kb/912475.)

Conexión con Windows Vista

P He instalado Windows Vista y no puedo conectar con SQL Server 2005 en mi sistema. Soy administrador local y solía conectarme sin problemas. ¿Qué ha sucedido?

R Este comportamiento está previsto en Windows Vista y SQL Server 2005 sin Service Pack 2 (SP2). Windows Vista cuenta con un modelo de seguridad nuevo (Control de cuenta de usuario) que, de hecho, encuentra su pertenencia al grupo de administradores locales y le pide que compruebe las operaciones que requieren privilegios administrativos. Si hace clic en el botón Permitir, sus credenciales, entre las que se incluyen el token de administrador, se envían a la aplicación. En el caso de SQL Server Management Studio (SSMS), no se le muestra un cuadro de diálogo, ya que la simple ejecución de la herramienta no requiere permisos administrativos. El problema es que, de forma predeterminada, la función de Administrador del sistema de SQL Server 2005 incluye el grupo Administradores locales del sistema operativo, que es lo que su cuenta utilizaba en el pasado para tener acceso a SQL Server. Puesto que Windows Vista no envía este permiso, no se obtiene acceso.

Se debe tener en cuenta que la ejecución de SQL Server 2005 sin SP2 no es compatible con Windows Vista y que el SP2 incluye una herramienta que agregará la cuenta automáticamente. Si aún está esperando el SP2, la corrección es bastante sencilla. Su cuenta de usuario individual de Windows se debe agregar a SQL Server, en su caso a la función de Administrador del sistema. Para esto, haga clic con el botón secundario en SQL Server Management Studio y seleccione Ejecutar como administrador. Conecte con SQL Server y agregue su cuenta de Windows a la función del Administrador del sistema. Consulte SQL Server Books Online (en inglés) para obtener más información sobre cómo funciona.

Réplica de transacciones con vistas

P Si tengo una vista publicada y la actualizo, sé que se replicará la transacción. Sin embargo, si actualizo la tabla de base de esta vista, ¿se replicará esta transacción? Del mismo modo, si tengo una tabla publicada y creo una vista de ella, y actualizo la vista en vez de la tabla de base, ¿se replicará la transacción?

R Si la tabla de base está configurada como artículo de una publicación (es decir, la tabla de base se ha configurado también para réplica), se replicará cualquier actualización de la tabla de base.

Cuándo se replica una vista, de forma predeterminada, todo lo que se replica como parte de una vista es la parte de esquema de la vista, o el código detrás de la vista, no los datos subyacentes (a menos que tenga una vista indizada). A continuación, aún sin réplica, cada vez que actualice una vista (en este caso, esto significa ejecutar una instrucción DML con la vista como objetivo), en realidad está actualizando los datos de la tabla subyacente, no la vista. Una vista es simplemente un almacenamiento lógico de una instrucción de consulta sin almacenamiento físico adjunto (de nuevo, a menos que utilice vistas indizadas).

Memoria máxima del servidor

P Tengo un equipo con Windows Server® 2003 y SQL Server 2000, con 5 GB de RAM. Digamos que utilizo el conmutador /3GB para aumentar mi espacio de direcciones virtuales de modo de usuario, el conmutador /PAE para cargar la versión de extensión de dirección física (PAE) del kernel de Windows, y establezco las extensiones de ventana de dirección (AWE) habilitadas como 1 (y habilito las páginas de bloqueo en la memoria). Con las AWE habilitadas, ¿configurará la opción de memoria máxima del servidor el tamaño de la memoria caché de datos o el tamaño de todas las memorias caché de búfer (datos, procesos, sesiones, etcétera)? Ya que sólo la memoria caché de datos puede hacer uso de la memoria asignada a las extensiones de ventana de dirección, si configuro la memoria máxima del servidor en 4 GB, ¿utilizará la memoria caché de datos únicamente 1 GB (la parte asignada por las extensiones), o puede utilizar este 1 GB adicional y continuar el uso o competir con el resto de consumidores de memoria en el espacio de direcciones estándar?

R La memoria máxima del servidor siempre limitará el tamaño del grupo de búferes; sin embargo, el único consumidor que puede utilizar la memoria asignada a las extensiones de ventana de dirección es la memoria caché de datos, nada más.

De este modo, para su primera pregunta, aun con las extensiones de ventana de dirección habilitadas, la memoria máxima del servidor sigue limitando todo el grupo de búferes, aunque los consumidores ajenos a la memoria caché de datos no utilizarán jamás la memoria asignada a las extensiones de ventana de dirección.

En el caso de la segunda pregunta, la memoria caché de datos utilizará memoria asignada a las extensiones de ventana de dirección más el resto de la memoria del grupo de búferes que considere apropiado SQL Server. No se limitará únicamente a la memoria de extensiones de ventana de dirección; resulta que es el único consumidor que puede hacer uso de la memoria de extensiones. Si no está seguro de lo que hace el conmutador /3GB, consulte Raymond Chen's blog (en inglés).

Creación de perfiles y rendimiento

P Tengo SQL Server 2005 reflejado en la producción. Al iniciar SQL Server Profiler en el equipo de base de datos y escribir los datos de traza en un archivo, se produce una caída drástica del rendimiento. ¿Por qué?

R La razón de la caída del rendimiento depende de dónde se ejecute Profiler. Si lo ejecuta interactivamente en el equipo servidor, la interfaz de usuario de Profiler consume memoria y CPU en el servidor, lo que afectará al rendimiento.

Si ejecuta Profiler interactivamente en una estación de trabajo, estará desplazando la información de eventos en toda la red. Esto afecta a la capacidad de proceso. Si esta es la misma red que usa para la creación de reflejo, comprobará que se produce una repercusión aquí también. Del mismo modo, si almacena el resultado de Profiler en un recurso compartido de red, estará desplazando los datos por toda la red y afectará de forma negativa al rendimiento.

Probablemente, la mejor manera de mitigar todo esto sea ejecutar Profiler de forma no interactiva en el servidor que ejecuta la instancia cuyo perfil se va a crear y, a continuación, dirigir el resultado a un archivo local. Aún se consumirán recursos del servidor, aunque este enfoque suele generar la menor repercusión. Esto funciona mucho mejor que la traza de Profiler (en memoria). La traza de archivos utiliza la memoria del sistema de manera más eficaz. Dispone de búferes mayores y los vacía en el disco de forma más eficaz. Tampoco depende de procesos externos (como SQL Server Profiler).

Por último, los datos de traza se escriben en un archivo de disco mientras Profiler sigue creando perfiles. El archivo de traza se comparte para que otros usuarios puedan consultar en tiempo real los datos de perfiles de forma remota. Si llama al archivo de traza interactivamente, significa que ha invocado manualmente a Profiler y que está viendo el resultado en la pantalla. Se pueden crear trazas mediante programación sin resultado visual, motivo por el que debería ejecutar las cosas de forma no interactiva.

Puede crear un recurso compartido al inicio de un directorio local para que otros usuarios puedan tener acceso a los archivos incluidos aquí (esto no suele crear problemas). Como se ha indicado anteriormente, no es buena idea enviar el resultado de traza a un archivo de un recurso compartido remoto, particularmente uno al que se tiene acceso a través de la misma canalización de red que se utiliza para la creación de reflejos.

También debe seleccionar el conjunto mínimo de eventos necesario para la investigación. Para la ubicación del archivo de traza, debería elegir la unidad de disco más rápida del sistema (preferiblemente distinta de las unidades de registro de transacciones y de base de datos de SQL Server). Si aún experimenta una degradación considerable del rendimiento, divida los eventos en dos o más trazas, cada una dirigida a un disco duro diferente. Incluso si las trazas están destinadas al mismo disco duro, podrá beneficiarse de una división, ya que cada traza contará con su propio conjunto de búferes. Consulte sp_trace_create y los temas relacionados en los libros en línea de SQL Server para obtener más información.

Problemas de clústeres

P Intento instalar SQL Server en un clúster con Windows Server 2003. Cada vez que lo intento, aparece un error que indica "El programa de instalación no pudo realizar las operaciones necesarias en los nodos del clúster". En sqlstp.log se indica:

Script file copied to '\\SERVER01\ADMIN$\SERVER01_MSSQLSERVER.iss' successfully.
Installing remote service (SERVER01)...
An error occured in the service create (SERVER01): 1069...

¿Qué puede estar sucediendo?

R Hay varias razones posibles para este error. El programa de instalación instala Windows NT® Service en todos los nodos seleccionados para administrar de forma remota el proceso de instalación en equipos individuales. Por lo tanto, tiene que ser consciente de ciertos inconvenientes que se puede encontrar.

Primero, puede que los usuarios de la cuenta de dominio tengan una directiva de grupo que rechaza el permiso de inicio de sesión como servicio. Recuerde que la directiva de dominio sobrescribe la directiva de equipo local. Cerciórese de que utiliza una cuenta sin estas restricciones.

Segundo, la cuenta de inicio de sesión del equipo donde ejecuta la instalación debe tener acceso de administración en todos los nodos a causa de lo siguiente: el proceso de instalación maestro requiere el acceso remoto al Registro para todos los equipos; el programa de instalación copia cnvsvc.exe en el directorio Windows del equipo remoto; o el programa de instalación utiliza API de Windows estándar que utilizan sólo el permiso de la cuenta que ha iniciado la sesión para tener acceso a equipos remotos. Por estas razones, debe iniciar la sesión como administrador en todos los modos de forma predeterminada.

Plan de recuperación ante desastres

P Estoy planteándome utilizar la creación de reflejos de base de datos (el modo asíncrono) o el trasvase de registros para implementar mi estrategia de recuperación ante desastres para mis bases de datos de SAP. Mis sitios de producción y recuperación ante desastres tendrán una conexión de 100 Mb de ancho de banda no dedicada a la sesión de creación de reflejos. La conexión se compartirá con diferentes sesiones de creación de reflejos o incluso con otros servidores de recuperación ante desastres.

Si hay un problema de red que evita que se envíe el registro a la base de datos reflejada, ¿se volverá a intentar?

Si se suspende la sesión de creación de reflejos, ¿hay algún período de retención? Y, además de las vistas de sistema, ¿existe alguna información de registro que pueda utilizar para supervisar el tráfico de creación de reflejos y la transmisión de registros?

R Empecemos por responder la pregunta siguiente: ¿Cuál es la lógica de reintento de la creación de reflejos de base de datos? Esto puede considerarse de dos modos: Primero, si hay un problema de red temporal, el estado de la sesión de creación de reflejos se desconecta. Existe un valor de tiempo de espera de red predeterminado de 10 segundos, lo que significa que no se puede enviar un registro desde la base de datos principal a la base de datos reflejada. En dichos casos, la entidad principal se seguirá ejecutando "expuesta" y la transacción se validará en el cliente. Una vez resuelto el problema de red, la sesión de creación de reflejos volverá a intentarlo automáticamente sin intervención del usuario. Intentará actualizarse usando los registros; primero se sincronizarán los socios y, a continuación, se sincronizará el estado.

Segundo, si se produce un problema de puesta al día, el estado de la sesión de creación de reflejos se suspende. Un problema de puesta al día significa que la base de datos reflejada no puede validar los registros en la base de datos. Los problemas de puesta al día suelen estar causados principalmente por un archivo físico que no se encuentra o por espacio en disco insuficiente. En dichos casos, la entidad principal se seguirá ejecutando expuesta y la transacción se validará en el cliente. Después de corregir el problema manualmente en el servidor reflejado, la sesión de creación de reflejo requiere intervención:

ALTER DATABASE <db> SET PARTNER RESUME; 

Con respecto a los períodos de retención, la respuesta es que, tanto si la sesión de creación de reflejo se desconecta como si se suspende, los registros se conservarán hasta que se restaure la sesión, y se refuerzan en el reflejo todos los registros desde el momento en que se suspendió la sesión hasta el momento en que se reanudó. Básicamente, aunque la sesión de creación de reflejos se desconecte o se suspenda, el registro de la entidad principal no se puede truncar, ya que se interrumpiría la cadena de puesta al día de registros. Esto significa que el registro de la entidad principal crecerá sin límites hasta que se restaure la sesión. Por tanto, no existe límite de retención en la sesión de creación de reflejos; la única restricción real es el espacio en disco que el servidor principal tiene para almacenar el registro, ya que este no se puede truncar.

Por último, no hay archivo de registro específico que pueda utilizar para supervisar la creación de reflejos. SQL Server 2005 ofrece una herramienta de GUI denominada Monitor de creación de reflejo de la base de datos para este propósito, que permite a los administradores del sistema ver y actualizar el estado y configurar umbrales de advertencia en varias métricas clave del rendimiento. Puede obtener una alerta de esta herramienta cuando no se realice correctamente el reflejo. La principal preocupación de rendimiento relacionada con la creación de reflejos de base de datos es el procesamiento oportuno de los registros. Para obtener más información acerca de la supervisión de la creación de reflejos de base de datos, consulte el artículo en msdn2.microsoft.com/fr-fr/library/ms365781.aspx (en inglés).

Agradecimiento especial a los siguientes profesionales de TI de Microsoft por la aportación de sus conocimientos técnicos: Chad Boyd, Sandu Chirica, Alan Doby, Kaloian Manassiev, Luciano Moreira, Ivan Penkov, Sivagaminathan Rajarethinam, Deborah To, Patrick Woodward, Buck Woody, Stanley Yau y Warren Young.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.