2008-08-19 19 views

Respuesta

15

La base de datos a menudo se ejecuta como un servicio en una cuenta sin acceso a la red. Si este es el caso, entonces no podrá restaurar directamente a través de la red. O la copia de seguridad debe copiarse a la máquina local o el servicio de la base de datos debe ejecutarse como un usuario con el acceso de red adecuado.

+2

O realice 'EXEC xp_cmdshell 'NET USE ...' antes del acceso a la red; ver las otras respuestas .. –

+1

https://www.mssqltips.com/sqlservertip/3499/make-network-path-visible-for-sql-server-backup-and-restore-in-ssms/ –

0

He tenido que hacer esto varias veces, y solo hay dos opciones que conozco. Copie el archivo localmente en el servidor SQL, o en el servidor SQL, cree una unidad de red asignada al recurso compartido que contiene el archivo de respaldo.

7

No puede hacer esto a través de la GUI de SSMS, pero puede hacerlo mediante un script. RESTABLECER BASE DE DATOS desde DISK = '\ unc \ path \ filename' Si necesita automatizar este proceso, la mejor manera es configurar un trabajo de SQL Server y ejecutarlo como usuario con acceso a la ubicación del archivo.

+1

Esto no es cierto . Puede restaurarlo a través de la red siempre que haya mapeado la unidad de red antes de abrir el cuadro de diálogo "Restaurar base de datos ...". –

+0

Este no fue el caso con las herramientas de SQL 2005 o SQL 2008 – baldy

0

Además, debe asegurarse de que el servicio de SQL Server se ejecuta como un usuario que tiene acceso a la red y permisos para el recurso compartido donde vive el archivo de copia de seguridad. 'Sistema local' no tendrá permisos para acceder a la red.

4

Asegúrese de que el usuario que ejecuta su SQL services en "Services.msc" es un directorio activo "Domain User", esto solucionará el problema.

0

Como nota al margen, si ejecuta SQL en una máquina virtual a menudo es menos complicado instalar temporalmente una nueva unidad en la máquina virtual con suficiente espacio para copiar sus archivos de copia de seguridad, realice la restauración desde esa nueva copia local, y luego elimine la unidad de temperatura.

Esto puede ser útil si detener/iniciar el servicio de SQL para cambiar su cuenta es un problema.

4

Puede usar SP xp_cmdshell para asignar la unidad networkdrive para el servidor sql, luego aparecerá en la ventana de exploración de archivos.

EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME' 

más información aquí: DB Restore from Network Drive

a mí me funcionó!

59

usted tiene pocas opciones para utilizar un archivo de red como fuente de reserva

  1. unidad de red/ruta, alojamiento de archivos, bajo el mismo usuario como MS-SQL Server.
  2. uso extendido xp_cmdshell procedimiento almacenado para asignar unidad de red desde el interior de MS SQL (tal manera, shell de comandos tendrá los mismos privilegies como la cuenta de usuario que ejecuta SSMS)
-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1 
GO 
-- Update currently configured values for advanced options. 
RECONFIGURE 
GO 
-- To enable xp_cmdshell 
EXEC sp_configure 'xp_cmdshell', 1 
GO 
-- Update currently configured values for advanced options. 
RECONFIGURE 
GO 
EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName' 

coche Posteriormente Z: será visibles en el estudio Gestión del servidor, o simplemente

RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK' 
GO 
+1

Llamar 'NET USE' con SQL Server el usuario del servicio actual resuelve el problema. Esta respuesta es realmente útil. –

+1

Esto es perfecto. Era la solución a nuestro problema: acceso completo a MSSQL, pero no acceso al servidor de archivos. Necesita una copia ¿Cómo? Esta es la solución. –

+0

¿Necesitará ejecutar algo como 'EXEC sp_configure 'xp_cmdshell', 0' luego para deshabilitar xp_cmdshell? (por razones de seguridad o lo que sea). –

0

Crear una unidad compartida en la máquina que tiene las copias de seguridad, por ejemplo server1 tiene las copias de seguridad en la carpeta de "copias de seguridad". Concede control total a la cuenta que ejecuta el Servidor SQL. En el servidor que desea restaurar para iniciar SSMS, vaya a restaurar la base de datos y seleccione "Desde dispositivo".En el cuadro de diálogo "Buscar archivo de copia de seguridad -" Servidor "" y elimine cualquier cosa en el campo "Ruta seleccionada" y en el campo "Nombre de archivo", proporcione la ruta completa para "\ server \ backups \ db.bak". Al menos me funcionó cuando migré del 05 al 08. No es el método preferido porque cualquier problema en la red puede causar un problema con la restauración.

Cuestiones relacionadas