|
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 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 ® 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) . |
- [dbms] Re: [dbms] RE: [dbms] duda con Assemblie y c lr , p... Pepe Ballaga ®
- [dbms] RE: [dbms] RE: [dbms] duda con Assemblie y c l... Maxi Accotto
