Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-08-2007
[JClink] JClink is offline
Miembro Premium
 
Registrado: ene 2006
Posts: 26
Poder: 0
JClink Va por buen camino
Question Backup sobre BD MSSQL remoto

Buenas,

Despues de haber leido distintos hilos acerca de como realizar backups de una base de datos sql server no he podido resolver un problema que me corroe.

Mi situacion es la siguiente:

Tengo varios PCs (Host1, Host2, Host3, ...) y en cada uno de ellos el programa que ataca a la base de datos sql. Ésta se encuentra en el Host1, y deseo realizar un backup de la base de datos desde el host2.

Hasta aqui parece la cosa normal, el problema me viene cuando abro mi opendialog y selecciono un nombre de fichero en una determinada ruta ubicada en Host2 (C:\prueba.dat).

[code]
str_path := 'C:\prueba.dat'; //valor sacado de un opendialog
SQLCommand.Text:='USE master IF (EXISTS (SELECT NAME FROM master.dbo.sysdevices WHERE (NAME=N''PIEBKP''))) BEGIN EXEC sp_dropdevice ''PIEBKP''' END EXEC sp_addumpdevice ''disk'', ''PIEBKP'', '''+str_path+'''' BACKUP DATABASE PIEpart TO PIEBKP WITH INIT';
SQLCommand.Execute;
[\code]
Al intentar hacer la anterior rutina el backup se guarda en el equipo en el que se encuentra la base de datos, es decir en Host1.

Mi pregunta es, ¿Como podría hacerlo para que me guardara el Backup en la ruta especificada pero en Host2? No se si se podrá hacer pero lo he intentado hacer con el sql enterprise manager desde host2 y si q me ha realizado el backup, por eso estoy confundido.


Gracias de antemano, un saludo a todos los foreros.

Última edición por JClink fecha: 14-08-2007 a las 16:14:59. Razón: cambio de etiquetas para el codigo delphi
Responder Con Cita
  #2  
Antiguo 14-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Question yo también

Pocas veces pido ayuda al foro... pero ya que está este problema, me uno al compañero para pedir ayuda sobre este problemita.

Lo que tuve que hacer una vez fue... sabiendo que el backup se realiza en el Server, la misma aplicación al terminar de hacer el respaldo me copiaba el archivo a donde le indicara con mi componente TSaveDialog... sin embargo, este solo es un parche puesto que me imagino que si debe haber algo (en SQL Server) que nos permita guardar el respaldo en el cliente.

Esto es más tema para SQL Server que para Delphi, pero si alguno lo sabe, me uno al compañero a pedir que alguien apoye con dicha información.
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #3  
Antiguo 14-08-2007
[JClink] JClink is offline
Miembro Premium
 
Registrado: ene 2006
Posts: 26
Poder: 0
JClink Va por buen camino
Gracias nuk3zito por la solucion, creo que de momento servirá pero si se alguien conociese otro metodo mas directo y desde el SGBD mucho mejor.

Saludos.
Responder Con Cita
  #4  
Antiguo 14-08-2007
[JClink] JClink is offline
Miembro Premium
 
Registrado: ene 2006
Posts: 26
Poder: 0
JClink Va por buen camino
Question

De repente me ha surgido una pregunta,

¿Como has copiado desde el server el archivo? Tendrias que tener la carpeta del server en la que lo guardaste compartida para poder copiarlo a otro pc.

En mi caso no tengo esa opcion. El asunto es que lo guarda el mssql pero desde codigo delphi no puedo copiar el archivo si no está como recurso compartido.

Imaginate que del server no tienes ningun permiso de escritura, unicamente acceso a la base de datos, ¿existe alguna rutina de mssql que te permita copiar y pegar archivos?

Gracias por vuestra paciencia...

Un saludo
Responder Con Cita
  #5  
Antiguo 14-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Talvez poniendo una unidad de red en el server (direccionando a cualquier otro directorio en otra compu).

Pero si alguien se apiada y nos dice como es que se guarda directamente en nuestra PC Cliente por medio de las instrucciones de SQL Server, pues esa sería la mejor opción.
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #6  
Antiguo 15-08-2007
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
No existe manera de hacer un backup a un directorio local de una base de datos desde sql server. Si existiera esta posibilidad, podría suponer un grave fallo de seguridad, puesto que cualquier usuario con un conjunto mínimo de permisos (perteneciente al grupo de dd_backup por ejemplo) podría conectarse al servidor y llevarse la base de datos haciendo backup.

Es por esto que sql server se limita estrictamente a realizar el backup desde el lugar en que fue configurado para hacerlo. Esto según recuerdo, incluye rutas UNC de la red local, así que si compartes una carpeta cualquiera en la red, podrías en teoría, hacer que sql server hiciese backup en dicho recurso (de la forma \\maquina\directorio\backup)
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #7  
Antiguo 15-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Red face

Cita:
Empezado por hector Ver Mensaje
Es por esto que sql server se limita estrictamente a realizar el backup desde el lugar en que fue configurado para hacerlo. Esto según recuerdo, incluye rutas UNC de la red local, así que si compartes una carpeta cualquiera en la red, podrías en teoría, hacer que sql server hiciese backup en dicho recurso (de la forma \\maquina\directorio\backup)
Pues eso es lo que hago, guardo mis respaldos en una unidad de red, pero esperaba que si se pudiera en una PC X... pero ya veo que estamos en las mismas.

Saludos
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #8  
Antiguo 16-08-2007
[JClink] JClink is offline
Miembro Premium
 
Registrado: ene 2006
Posts: 26
Poder: 0
JClink Va por buen camino
Wink

Gracias Hector por la aclaración,

Entonces la solución sería crear una carpeta compartida en el equipo que contiene la bd mediante codigo delphi, crear dentro el backup, copiarla a nuestro equipo e inmediatamente despues borrar la carpeta compartida.

Un Saludo.
Responder Con Cita
  #9  
Antiguo 16-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Los respaldos ¿los harás desde cualquier PC? o normalmente siempre será desde una PC específicamente?

Si los harás desde cualquier PC, entonces si creo que debes hacer como has dicho... pero si siempre será desde una misma PC, mejor comparte alguna carpeta de esa PC y crea su unidad de red en el Server de SQL. no?
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #10  
Antiguo 17-08-2007
[JClink] JClink is offline
Miembro Premium
 
Registrado: ene 2006
Posts: 26
Poder: 0
JClink Va por buen camino
Question

En principio se hacen desde cualquier PC, y estoy probando a crearme una carpeta compartida en el PC que ejecuto la orden de backup, de esta forma al mssql le digo que me le haga en una ruta de red del tipo "\\HostX\Carpeta_Backup" y seguidamente copiar el archivo generado en la ruta especificada en el SaveDialog y borrar la carpeta anteriormente creada.

Por cierto, ¿alguien sabe como funciona lo de los permisos de carpeta?
Me doy cuenta que no tengo ni idea de como hacerlo.
Estoy utilizando la funcion CreateDirectory(lpPathName:PAnsiChar; lpSecurityAttributes):longBool;

El ultimo parametro no se exactamente como se utiliza.

Otra pregunta, ¿con que funcion se puede establecer una carpeta oculta, solo lectura, ... y esta clase de atributos?. Es que la anterior funcion me parece que establece el acceso a la carpeta (usuarios, grupos, dominios, ...) aunque no estoy seguro.

Gracias de antemano.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Información sobre MSSQL y Delphi, componentes, métodos, etc. Ronald HerNav MS SQL Server 5 08-03-2007 22:41:40
Como realizar un Backup a una Base de Datos de MSSQL desde mi aplicacion?? rjtostado MS SQL Server 4 12-05-2005 17:05:41
mssql scooterjgm MS SQL Server 4 17-09-2004 11:13:11
Consejo sobre componente para backup apicito Varios 0 10-05-2004 20:10:59
Dudas sobre Backup rogeriobeltran Firebird e Interbase 0 18-03-2004 22:09:30


La franja horaria es GMT +2. Ahora son las 04:55:51.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi