Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

FAQ: Al pasar al servidor de producción me deja de funcionar la seguridad y me da un error ¿por qué?

error-sql-server-produccion

Una pregunta frecuente que recibimos tanto en los cursos de campusMVP como en eventos es la de:

"¿Por qué cuando paso mi aplicación a producción de repente me deja de funcionar todo lo que tiene que ver con Membership, Roles, etc...? De hecho obtengo un error de que no se puede conectar a la base de datos..."

El problema que tienes con la base de datos es que, por defecto, el proveedor de SQL Server que viene con ASP.NET parte de la base (equivocada generalmente) de que vas a usar SQL Server Express Edition. Esta base de datos tiene la particularidad de que es capaz de adjuntar dinámicamente archivos .MDB (de datos SQL Server), es decir, sin necesidad de adjuntarlos. Si te fijas en la carpeta App_Data de tu aplicación debes de tener un archivoASP_NET.MDB que es el que se crea automáticamente para gestionar estos datos y luego adjuntarlo dinámicamente a la versión Express.

El problema es que si usas SQL Server "completo" o una versión anterior, lo de adjuntar archivos de forma dinámica no funciona. Y en un servidor de producción (aunque sea en un hosting) no suelen tener la versión Express.

Por fortuna es algo muy sencillo de solucionar, pero a mi modo de ver deberían haberlo puesto un poco más evidente.

Para ello existe una utilidad en la carpeta "C:\Windows\Microsoft .NET\Framework\v2.0.xxxx" o la análoga en tu equipo que se llama: aspnet_regsql.exe.

Ejecútala. Al hacerlo te sale un asistente que te permite crear la base de datos que necesita el proveedor en cualquier SQL Server. Le indicas el servidor y la BD y te crea las tablas y procedimientos que necesita.
Así creas la BD que necesitas donde tú quieras.

Esta utilidad viene con .NET, no con VS, así que no hay problema para usarla en cualquier equipo, incluso en el servidor.

Ahora sólo te resta indicar a los proveedores qué base de datos van a usar. La mejor forma de hacerlo es ir a web.config y añadir lo siguiente:

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" connectionString="server=TUServidor; 
    Integrated Security=SSPI; Database=TuBasedeDatos;" 
    providerName="System.Data.SqlClient" />
</connectionStrings>

De este modo eliminas la conexión por defecto de ASP.NET (que es la que apunta a la versión Express) y le indicas la cadena de conexión que necesites y el proveedor que necesites.

Con esto tu problema estará solucionado.

José M. Alarcón Aguín Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José M. Alarcón Aguín
Archivado en: Desarrollo Web | Trucos

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.