2011-03-24 23 views
15

Estoy intentando escribir un contenedor para ayudar a nuestros clientes a restaurar una base de datos de SQL Server. De forma predeterminada, SQL Server se ejecuta como un servicio de red de usuario que tiene permisos muy limitados. Nuestros clientes a veces se confunden al no poder señalar un archivo de respaldo en cualquier ubicación y restaurarlo.Buscar carpeta temporal para el servicio de red del usuario?

Quiero copiar el archivo de la ubicación que eligen a una ubicación temporal a la que SQL Server puede acceder, pero me está costando encontrar una ubicación. No puedo simplemente llamar a Path.GetTempPath() porque eso me da la temperatura del usuario a la que SQL Server no puede acceder.

¿Hay alguna carpeta que pueda recuperar que siempre funcione?

Respuesta

25

La carpeta temporal para la cuenta de servicio de red se encuentra aquí:

% Windir% \ ServiceProfiles \ NetworkService \ AppData \ Local \ Temp

En XP/2003, la red de perfil de servicio de Windows está ubicado en el directorio general del perfil de usuario. En una máquina alemana es aquí:

C: \ Dokumente und Einstellungen \ NetworkService \ Informacion Local Einstellungen \ Temp

En un equipo Inglés que sería aquí:

C: \ Documents and Settings \ NetworkService \ Local Settings \ Temp

Puede encontrar la ruta al perfil en todas las versiones de Windows consultando este valor del registro:

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ S-1-5-20 \ ProfileImagePath

Eso no le da el nombre localizado de "Configuración local "en XP/2003, sin embargo.

De forma predeterminada, los administradores pueden escribir en el perfil de servicio de red. Usar su carpeta temporal para su propósito debería estar perfectamente bien.

+0

Eso se parece a lo que estoy buscando. Voy a intentar eso. –

+0

Problema, esa ruta no funciona en Windows XP. –

+0

Actualicé mi respuesta para incluir XP, también. –

0

¿Por qué no simplemente le das permiso a NETWORK_SERVICE a una carpeta específica y le dices a los usuarios que coloquen allí los archivos de copia de seguridad?

O ejecute:

BACKUP DATABASE [master] TO DISK='master.bak' 
GO 

de SSMS y ver donde el archivo se escribe a.

+1

No quiero tener que personalizar el sistema de cada cliente cambiando los permisos. A los administradores de sistemas no nos gusta que les pidamos que agreguen permisos a las carpetas y prefiero no hacerlo a menos que no tenga otra opción. –

Cuestiones relacionadas