Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a resolver el problema que se produce al usar aplicaciones basadas en Servicios de instantáneas de volumen (VSS) para realizar copias de seguridad de las bases de datos de SQL Server.
Versión del producto original: SQL Server
Número de KB original: 2014054
Síntomas
Cuando se usan aplicaciones basadas en Volume Shadow Copy Services (VSS) para realizar copias de seguridad de las bases de datos de SQL Server, la operación de copia de seguridad puede producir un error si el nombre de la base de datos contiene espacios iniciales o finales o caracteres no imprimibles.
También puede producirse el mismo problema al intentar realizar una copia de seguridad de un volumen que contenga una de estas bases de datos.
Causa
Las aplicaciones de copia de seguridad basadas en VSS usan SQLServerWriter
(SQLWriter) para consultar la información del componente de metadatos del escritor para determinar qué archivos de base de datos deben realizar copias de seguridad. SQLWriter crea el componente de metadatos de escritor mediante la API de VSS y contiene tres conjuntos de datos:
- Información de identificación y clasificación del escritor
- Especificaciones de nivel de escritor
- Datos de componentes
Cuando un nombre de base de datos contiene espacios iniciales o finales o caracteres no imprimibles, es posible que este documento no se cree correctamente. Como resultado, las aplicaciones basadas en VSS no podrán realizar copias de seguridad de estas bases de datos ni de ningún volumen que contenga estas bases de datos.
Solución
Cambie el nombre de todas las bases de datos que contengan espacios iniciales o finales o caracteres no imprimibles en sus nombres. Puede usar la siguiente consulta para buscar la presencia de estos caracteres delante o al final de los nombres:
SELECT database_id AS DatabaseID, '##'+name+'##' AS DatabaseName FROM sys.databases
Salida de ejemplo:
DatabaseID DatabaseName
8 ##AdventureWorks## -- DB name is fine
15 ## DBWithLeadingSpace## -- DB name contains leading spaces
17 ##DBWithTrailingSpace ## -- DB name contains trailing spaces
Nota:
En la consulta anterior, si el nombre de la base de datos contiene caracteres no imprimibles, se pueden imprimir como espacios o como elementos no deseados.
Más información
Los escritores (como SQL Writer) agregan componentes mediante IVssCreateWriterMetadata::AddComponent, especificando la siguiente información de componente:
- Tipo
- Nombre
- Ruta de acceso lógica (si existe)
- Característica compatible
- Capacidad de selección
- Metadatos que usará el escritor durante la restauración
- Información de visualización
- Información de notificación
C (Servicio de instantáneas de volumen) son colecciones de archivos que forman una unidad lógica con fines de copia de seguridad y restauración. Todos los archivos de un componente (excepto los excluidos explícitamente) deben realizar copias de seguridad y restaurarse como una unidad.
Para obtener más información, consulte Metadatos de VSS.
Puede usar uno o varios de los métodos siguientes para identificar si tiene este problema:
Varias aplicaciones de copia de seguridad pueden generar mensajes personalizados sobre
SqlServerWriter
(o SQLWriter) que no se encuentran.Al ejecutar desde un símbolo del sistema en el equipo de SQL Server de destino, no verá
SqlServerWriter
en la salida.vssadmin list writers