none
Acceso denegado con Filestream. SQL Server 2008 R2 RRS feed

  • Pregunta

  • Hola a todos os comento mi caso a ver si alguno de vosotros puede decirm qué es lo que está ocurriendo.

    Tengo una aplicación con Sharepoint en la que hay un apartado que permite subir y bajar archivos, cosa que realizo con FileStream para guardarlos en base de datos SQL Server 2008 R2, en local me funciona perfectamente; pero cuando he ido a pasar esta nueva funcionalidad a la máquina de desarrollo del cliente, que teóricamente está configurada perfectamente para que todo funcione bien, me he encontrado con que cuando hago un sqlFileStream = new SqlFileStream(filePath, transactionToken, FileAccess.Read); ya sea tanto a la hora de subir como bajar un archivo (con el FileAccess modificado adecuadamente) me da un error de Acceso Denegado. Cuando subo el archivo la entrada en base de datos la crea, pero el campo de datos binarios está a 0x.

    ¿Falta algún parámetro de configuración? ¿O alguien sabe qué es lo que ocurre?

    Un saludo y muchísimas gracias por adelantado.
    lunes, 27 de agosto de 2012 10:55

Todas las respuestas

  • ¿La cadena de conexión está configurada con autenticación integrada o de SQL? FileStream sólo soporta la primera
    lunes, 27 de agosto de 2012 11:02
  • Ese es el tema por lo que estoy viendo, usa autenticación SQL, ahora la cuestión la tengo en cómo realizar la cadena de conexión, porque en local me he encontrado con que tengo 2 cadenas de conexión, una en un app.config que es integrada y otra en un webconfig de sharepoint con el mismo nombre que usa la de SQL:

    SQL:

    <add name="BibliotecaEntities" connectionString="metadata=res://*/BibliotecaArchivos.csdl|res://*/BibliotecaArchivos.ssdl|res://*/BibliotecaArchivos.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SRV-SQL;initial catalog=BibliotecaArchivos;User ID=ti;Password=1234;multipleactiveresultsets=True&quot;" providerName="System.Data.EntityClient" />

    Integrada:

    <add name="BibliotecaEntities" connectionString="metadata=res://*/BibliotecaArchivos.csdl|res://*/BibliotecaArchivos.ssdl|res://*/BibliotecaArchivos.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SRV-SQL;initial catalog=BibliotecaArchivos;integrated security=True;multipleactiveresultsets=True&quot;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/>

    Cuando uso la integrada me encuentro con que da un error inesperado y me sale el enlace de: Solucionar problemas de Microsoft SharePoint Foundation.

    lunes, 27 de agosto de 2012 11:38
  • Hola.

    Tu cuestión se encuadra más en Sharepoint que en SQL Server. Debes usar autenticación integrada, así que ese otro error, cuya naturaleza desconocemos, ¿cómo podríamos ayudarte a resolverlo? No se aporta información adicional del error y ni siquiera el enlace que pusiste funciona.

    Quizá lo más conveniente sería mover el hilo al foro de Sharepoint.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande


    lunes, 27 de agosto de 2012 12:16
  • Hola.

    Si pudieses mover entonces el hilo a Sharepoint te estaría muy agradecido, la verdad que no puedo ofrecer muchos más detalles del error porque no los hay, el enlace es una copia del mensaje/link que me aparece en el error que tampoco lleva a ningún sitio.

    En caso de que tenga que abrir un nuevo topic en sharepoint y dar este como cerrado ruego me lo indiques.

    Muchas gracias de nuevo.

    lunes, 27 de agosto de 2012 12:58
  • Hola.

    Lo muevo al foro http://social.technet.microsoft.com/Forums/es-ES/mosses/threads.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    lunes, 27 de agosto de 2012 13:42
  • Hola,

    ¿Cómo es la topología de tu instalación? Puede ser que se esté dando un problema de doble salto y tengas que implementar Kerberos.

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    lunes, 27 de agosto de 2012 17:56
  • ¿Qué tipo de autenticación estás utilizando'?
     

    “FILESTREAM requires that integrated security (i.e., Windows Authentication) be used. When an application using Win32 attempts to access FILESTREAM data, the Windows user is validated through SQL Server. If the user has Transact-SQL access to the FILESTREAM  data, access will be granted at the Win32 level also, as long as the transaction token is obtained in the security context of the Windows user who is performing the file open.”
     
    Saludos.


    Fernando A. Gómez F.
    fermasmas.wordpress.com
    Galería de ejemplos
    lunes, 27 de agosto de 2012 21:39
  • Hola,

    La topología de "desarrollo" del cliente es bastante sencilla, se trata de una máquina en la que se encuentra toda la aplicación con sharepoint y otra en la que está la base de datos de SQL Server 2008 R2.

    Un saludo.

    martes, 28 de agosto de 2012 6:28
  • En local funciona y me he encontrado, he heredado esta máquina de otro desarrollador, con que tengo dos cadenas de conexión, una con seguridad integrada y otra con SQL, como indico a continuación

    • SQL en un webconfig de sharepoint ubicado en la carpeta 80 dentro de wss:
    <add name="BibliotecaEntities" 
    connectionString="metadata=res://*/BibliotecaArchivos.csdl|res://*/BibliotecaArchivos.ssdl|res://*/BibliotecaArchivos.msl;provider=System.Data.SqlClient;provider
     connection string=&quot;data source=SRV-SQL;initial 
    catalog=BibliotecaArchivos;User
     ID=ti;Password=1234;multipleactiveresultsets=True&quot;" 
    providerName="System.Data.EntityClient" />

    • Integrada en un app.config:
    <add name="BibliotecaEntities" 
    connectionString="metadata=res://*/BibliotecaArchivos.csdl|res://*/BibliotecaArchivos.ssdl|res://*/BibliotecaArchivos.msl;provider=System.Data.SqlClient;provider
     connection string=&quot;data source=SRV-SQL;initial 
    catalog=BibliotecaArchivos;integrated 
    security=True;multipleactiveresultsets=True&quot;App=EntityFramework&quot;"
     providerName="System.Data.EntityClient"/>

    En el entorno de desarrollo del cliente estoy intentando implantar seguridad integrada en la cadena de conexión del webconfig de sharepoint localizado en la carpeta 80 dentro de wss, pero siempre que pongo la cadena de conexión con seguridad integrada al cargar la aplicación da un mensaje de error. La cadena de conexión que utilizo en el cliente es la siguiente:

    • Cliente:
    <add name="BibliotecaEntities" connectionString="metadata=res://*/BibliotecaArchivos.csdl|res://*/BibliotecaArchivos.ssdl|res://*/BibliotecaArchivos.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SRV-SQL;initial catalog=BibliotecaArchivos;integrated security=true;App=EntityFramework&quot;multipleactiveresultsets=True;" providerName="System.Data.EntityClient" />

    • Y el mensaje de error es el que sigue:

    Error inesperado.

    Página de mantenimiento de elementos web: Si tiene permiso, puede usar esta página para cerrar temporalmente elementos web o quitar la configuración personal. Para obtener más información, póngase en contacto con el administrador del sitio.

    Solucionar problemas de Microsoft SharePoint Foundation.

    Identificador de correlación: 3d14084e-ac6e-4281-bbfb-89114184e79c

    • Mientras que si uso esta otra cadena de conexión que tiene autenticación de SQL no da mensaje de error, se carga la página correctamente, pero por contra está el error de FileStream:
    <add name="BibliotecaEntities" connectionString="metadata=res://*/BibliotecaArchivos.csdl|res://*/BibliotecaArchivos.ssdl|res://*/BibliotecaArchivos.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SRV-SHARESQL;initial catalog=BibliotecaArchivos;User ID=ti;Password=1234;multipleactiveresultsets=True&quot;" providerName="System.Data.EntityClient" />

    martes, 28 de agosto de 2012 6:50