Perfecto :)

El día 3/11/06, Pepe Ballaga ® <[EMAIL PROTECTED]> escribió:
ya lo encontre,hare las pruebas y te dire despues. gracias por todo
----- Original Message -----
Sent: Thursday, November 02, 2006 6:32 PM
Subject: [dbms] RE: [dbms] RE: [dbms] duda con Assemblie y clr , permisos y ¿como hacer un backup desde la aplicacion?

 
Hola Andres, ojo con esto, no es cierto que hay limitaciones hacia el filesystem, solo que hay que definirle al Asembly un nivel se seguridad distinto al de SAFE y no se ha dado ninguna recomendacion de no usar los otros niveles (para eso tan :), solo que la idea seria que para que le voy a dar muchos permisos a un SP donde quizas no lo necesite, habra otros que si lo necesiran y esta bien darle esos permisos, de hecho yo tengo varias funciones en CLR una de ellas que de una ejecucion de cualquier SP que se le pase como param de entrada genere un archivo .xml en el disco como asi tambien SP para subir documentos e imagenes y funcionan lo mas bien, solo hay  que tener ese detalle de la seguridad que tiene 3 niveles (SAFE - External - Unsafe)
 

-----

Buenos Aires - Argentina

Microsoft MVP (Most Valuable Professional) SQL Server

Culminis Speaker - Microsoft Influencier

www.sqlgururs.org

 

 


De: [email protected] [mailto: [email protected]] En nombre de Andres G Vettori
Enviado el: Wednesday, November 01, 2006 12:27 PM
Para: dbms List Member
Asunto: [dbms] RE: [dbms] duda con Assemblie y clr , permisos y ¿como hacer un backup desde la aplicacion?

 

Por temas de seguridad los SPs CLR de SQL 2005 no tienen acceso al file system.

Fijate en la documentación que dice bien clarito cuales son las cosas "restringidas" para código que corre dentro de un SQL Server.

Hay forma de darle permisos, pero no te lo recomiendan.

Saludos,

Andrés.

 

From: [email protected] [mailto: [email protected]] On Behalf Of Pepe Ballaga ®
Sent: Wednesday, November 01, 2006 11:04 AM
To: dbms List Member
Subject: [dbms] duda con Assemblie y clr , permisos y ¿como hacer un backup desde la aplicacion?

 

Hola amigos en un assemblie que tengo necesito a partir de un parametro que le paso que es el nombre de un fichero que el me compacte ese fichero. pero no me lo hace. me dice que no tiene permisos (en la carpeta) para hacerlo. el fina es que desde mi aplicacion aspx el administrador del sistema puedda hacer un backup de la BD completa sin tener que cargar la interfase de SQL Server. la aplicacion llamara a un procedimiento almacenado:

 

ALTER PROCEDURE [dbo].[salva_database]

@path NVARCHAR(4000),

@database nvarchar(4000)

AS

declare @sql nvarchar(4000)

set @[EMAIL PROTECTED]'.bak'

backup database @database to disk = @sql

execute GZipCompress @sql

y este llamara al assemblie que contiene lo siguiente. el tema es que me da que no hay permisos de lectura escritura para hacer la siguiente operacion de compactar, pero sin embargo si me crea la salva. ¿alguna ayuda?. alguien sabe como hacer salvas de SQL server sin cargar la consola de SQL?. gracias

 

class Compactar

{

public bool GZipCompress(string filename)

{

FileStream infile;

bool bien = false;

try

{

// Open the file as a FileStream object.

infile = new FileStream(filename, FileMode.Open,

FileAccess.Read, FileShare.Read);

byte[] buffer = new byte[infile.Length];

// Read the file to ensure it is readable.

int count = infile.Read(buffer, 0, buffer.Length);

if (count != buffer.Length)

{

infile.Close();

throw new ApplicationException("Unable to read data from file" );

return bien =false ;

}

infile.Close();

FileStream ms = new FileStream(filename + ".gz" , FileMode.CreateNew);

// Use the newly created memory stream for the compressed data.

GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);

compressedzipStream.Write(buffer, 0, buffer.Length);

// Close the stream.

compressedzipStream.Close();

ms.Close();

ms.Dispose();

File.Delete(filename);

return bien = true;

} // end try

catch (InvalidDataException)

{

return bien = false;

}

catch (FileNotFoundException)

{

return bien = false;

}

catch (ArgumentException)

{

return bien = false;

}

catch (PathTooLongException)

{

return bien = false;

}

catch (DirectoryNotFoundException)

{

return bien = false;

}

catch (IOException)

{

return bien = false;

}

catch (UnauthorizedAccessException)

{

return bien = false;

}

catch (IndexOutOfRangeException)

{

return bien = false;

}

}

}

 

Por favor si conoces alguan herramienta para hacer backups en SQL Server sin necesidad de la consola de SQL pues gracias. nos leemos

 

 

Este es el error que me da cuando trata de compactar.

BACKUP DATABASE successfully processed 1851 pages in 3.026 seconds (5.009 MB/sec).

A .NET Framework error occurred during execution of user defined routine or aggregate 'GZipCompress':

System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version= 2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

System.Security.SecurityException:

at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)

at System.Security.CodeAccessPermission.Demand()

at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)

at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)

at compactar.compactar.GZipCompress(SqlString filename)

.




--
----------------------------------------------------
Microsoft MVP (Most Valuable Professional) SQL Server
Orador Culminis
(www.sqlgurus.org)
-------------------------------------------

Responder a