05 octubre 2010

Error 26: Una de las tantas causas (Varias Soluciónes)

Recientemente en un proyecto web que estoy realizando me apareció el no deseado error 26. Muchas son las causas, pero a veces no son las que se mencionan en general. Sin más resultados por mi propio conocimiento me dí a la tarea de ingresar a los foros de MSDN, en los que sin duda nos encontraremos con buenos asesores y foristas.

DESCRIPCIÓN DEL PROBLEMA

Cuando las conexiones a un servidor son rechazadas se muestra el error 26 de la siguiente manera:
Error de servidor en la aplicación '/...'.
--------------------------------------------------------------------------------
Error relacionado con la red o específico de la instancia mientras se establecía una conexión con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas. (provider: Interfaces de red SQL, error: 26 - Error al buscar el servidor o instancia especificado)

Mi caso en particular mediante un proyecto de Visual Studio (ó MVWD Microsoft Visual Web Developer) la cual describí de la siguiente manera.

DESARROLLO DE LA PROBLEMÁTICA (Foro en MSDN)

Tengo una aplicación web desarrollada en ASP.NET con VS2010. La he publicado en el IIS. Esta aplicación hace una conexión a una base de datos de SQL Server 2005. Mi aplicación web funciona con autenticación forms, así que tengo una página llamada Login.aspx. Esta página tiene 2 combos para seleccionar unos datos antes de indicar el usuario y contraseña en la misma página. Los combos se cargan correctamente mediante un connectioString que es el siguiente:


Esta misma cadena de conexión la establecí como una variable global en una clase de mi solución para usarla en objetos SqlConnection, copiándola para evitar errores de digitación, de la siguiente forma:

En una clase pública:
Public cnstr As String = "Data Source=192.168.x.x;Initial Catalog=BDSIR;Persist Security Info=True;User ID=xxxx;Password=xxxxxx"


En la página de inicio de sesión:
cnn = New SqlConnection(VariablesGlobales.cnstr)
cnn.Open()


El error, que a diferencia de otros similares, se presenta cuando le doy iniciar sesión, la página demora un rato y luego muestra el siguiente error:

Error de servidor en la aplicación '/...'.
--------------------------------------------------------------------------------
Error relacionado con la red o específico de la instancia mientras se establecía una conexión con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas. (provider: Interfaces de red SQL, error: 26 - Error al buscar el servidor o instancia especificado)

Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

La cuestión es que aveces logro que se conecte y se inicie la sesión cuando durante la solicitud de login le doy clic a otro enlace, luego cuando regreso a las páginas privadas aparezco logeado. En ese momento cuando ingreso a una de esas páginas me aparece un error de "no se ha establecido el tipo Culture", por el estilo, y solamente es recargar la página y funciona. Pero de este caso anterior solo se da una vez cada 20 intentos, por decir.

Este es el seguimiento de pila (Si es que a alguien le sirve verdaderamente esta información):
Seguimiento de la pila:

[SqlException (0x80131904): Error relacionado con la red o específico de la instancia mientras se establecía
una conexión con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. Compruebe que
el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas.
(provider: Interfaces de red SQL, error: 26 - Error al buscar el servidor o instancia especificado)]

System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4846887
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject) +4860189
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +90
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +376
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +221
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +4861315
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +433
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122
System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +87
System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +221
System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +815
System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +105
System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved) +42
System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +78
System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +60
System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +119
System.Web.UI.WebControls.Login.AttemptLogin() +115
System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +166
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
--------------------------------------------------------------------------------
Información de versión: Versión de Microsoft .NET Framework:2.0.50727.3082; Versión ASP.NET:2.0.50727.3082

He intentado cambiando la primera linea de login.aspx, cambiando el valor de AutoEventWireup por True, sin lograr nada.

< %@ Page Language="VB" MasterPageFile="~/design/Maestra.master" AutoEventWireup="true" CodeFile="Login.aspx.vb" Inherits="Default2" % >

También sé que no es un error del servidor que no permita conexiones remotas pues entonces no cargaría los combos. Adicional cuando estoy en mi máquina de desarrollo realizando las pruebas, NO SE GENERA ESE ERROR. Llega correctamente a la parte de:
FormsAuthentication.RedirectFromLoginPage(Login1.UserName,True)

De antemano, gracias por su atención y espero que esto nos sea útil a todos.


SOLUCIONES VARIAS

En los foros de MSDN me encontré con Enmanuell Grullard, forista desde el 2009 y colaborador de gran cantidad de foros, quien me guió durante el proceso de buscarle solución al error 26 de SQL Server Express. Entre ellas mencionaré las que él me sugirió por si alguien cae en este error también.

1. Cambio de IP

Algo que veo en tu connectionString que usted pone el nombre del Servidor con la IP  recomiendo que le ponga el nombre como se llama esa instancia ya que puede varios casos
1- Si deciden Cambiarle la Ip al servidor puede que la aplicaron no te funciones  pero si la pone con el nombre de la instancia aunque cambie la Ip te vas a funcionar toma en cuenta eso amigo..

Error de servidor en la aplicación '/sir'.
--------------------------------------------------------------------------------
Error relacionado con la red o específico de la instancia mientras se establecía una conexión 
con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. 

Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para
admitir conexiones remotas. (provider: Interfaces de red SQL, error: 26 - Error al buscar el 
servidor o instancia especificado) 

Ese Error es porque no Encuentra la IP que pudiste el conectionString cambiala por su nombre 

2. Verificación de funcionamiento en

Lo que me encuentro estraño es que si esta utilizando  la misma conection para lo combos no te deria funcionar por que esta utilizanado una intancia que no existe  eso es lo que dice cuando tenga logiarte con la pagina de login  ponle un brekpoint y dugeala y ve paso por paso y confirma si esoy la misma intancia  para el combo como para el login  .

Nota
verificate unos de estoy punto y dime cuales de eso tu cumple ?


Has cambiado la IP del servidor SQL o el nombre de máquina?

Has comprobado que SQL Server admite conexiones remotas?
Que los firewall de los clientes no están bloqueando el acceso?

3. Solución alternativa en MSDN

Bueno Días  Todavía no has podido Resolver tu problema ?
observa este enlace sobre una solución del Error 26 espero por fin pueda resolver
http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/9354bf59-15a2-49f4-bc1f-f45371e054fc/


4. Base de datos que crea VS
Buscando por ahiaver si sigue eso paso para solucionar tu problema

Detalles de la excepción: System.Data.SqlClient.SqlException: A-relacionados o una instancia específica de errores de red al establecer una conexión con SQL Server. El servidor no se encontró o no accesible. Compruebe que el nombre de instancia es correcta y que SQL Server está configurado para permitir conexiones remotas. (Provider: Interfaces de red SQL, error: 26 - Error al buscar el servidor / instancia especificado)

SQL Server (Express 2008) Estudio de Gestión
Microsoft Visual C # 2008 Express Edition
Microsoft Visual Web Developer 2008 Express Edition

Cuando se utiliza MVWD y crear un sitio web mvwd que se abre una base de datos utiliza el IDE
connectionString = "Data Source = MyServer \ SQLEXPRESS; Initial Catalog = MyDatabase; Integrated Security = True"
providerName = "System.Data.SqlClient"
en el archivo web.config si utiliza un control de cuadrícula aspx

Asumiendo que publicar un Sitio Web de Información de Servicios de Internet (por ejemplo, http:// localhost / MySite c: \ inetpub \ wwwroot \ MySite)
cambiar la entrada de la siguiente manera
connectionString = "Data Source =;. \ SQLEXPRESS Initial Catalog = MyDatabase; Integrated Security = True"
providerName = "System.Data.SqlClient"

SQL Server Management Studio en el Administrador de configuración probablemente va a correr 'NT AUTHORITY \ Servicio de red' LogOnAs
Usted también puede tener que realizar las siguientes adiciones
Utilice MyDatabase
ir
sp_grantlogin 'NT AUTHORITY \ Servicio de red'
ir

Cheque del Seguro&gt; inicios de sesión doble clic en 'NT AUTHORITY \ Servicio de red'
y ver las asignaciones de los usuarios para MyDatabase
Por último puede que tenga que ejecutar REFERENCIAS GRANT, SELECT, INSERT, DELETE, UPDATE ON "MyTable" A "público"
dependiendo de la naturaleza de su seguridad y el acceso a las tablas de la base de datos en la página web.

5. MI SOLUCIÓN PERSONAL

Saludos foristas,
Bueno pues hoy 4 de octubre de 2010 logré ingresar y evitar el error 26. Lo que realicé durante todo este proceso me encontré con infinidad de foros y de soluciones diferentes a problemas relacionados, incluso aprendí algo más acerca de las configuraciones de ASP.NET
Entre dichos foros o blogs, tengo que agradecer en parte al blog de jonas, con el que me acerqué mas a este asunto de que el Visul Studio tenga que crear un base de datos propia para administrar las configuraciones del sitio.

Primero que todo, utilicé el blog de Francisco Javier Carbajosa, donde habla sobre la Membresía de ASP.NET 2.0.


Allí cambié la configuracion de la etiqueta , quitando la conexión que crea por defecto el Visual Studio de LocalSqlServer, y luego creándola nuevamente con la configuración propia de mi proyecto.   
   
Dentro de la etiqueta < System.web >
< roleManager defaultProvider="AspNetWindowsTokenRoleProvider" / >
Y las conectionStrings de la siguiente manera:
< connectionStrings >
    < remove name="LocalSqlServer" >< /remove >
       < add name="LocalSqlServer" connectionString="Data Source=XX;Initial Catalog=BDSIR;Persist Security Info=True;User ID=xxxx;Password=xxxxxx"
    providerName="System.Data.SqlClient" / >
   
    < add name="bdsirConnectionString"
         connectionString="Data Source=XX;Initial Catalog=BDSIR;Persist Security Info=True;User ID=xxxx;Password=xxxxxx"
         providerName="System.Data.SqlClient"/ >
  < /connectionStrings >
 
Luego se me genero un error donde me decía que no encontraba un procedimiento propio de Visual Studio. (validate_Schema parecido el nombre).

Paralelamente ejecuté el ejecutable la aplicación aspnet_regsql.exe que describe mejor "jonas" en su blog, con la configuracion de mi base de datos y servidor

http://labloguera.net/blogs/jonas/default.aspx?p=2

Con esto logré evitar el error 26 y espero no se vuelva a generar por asuntos propios del VS. Al final tenía en mi web.config varias secciones comentadas, pero que no estoy seguro si realmente influyen:

< Configsections > dentro de < Configuration >
< modules > dentro de < system.webserver >


espero aclarar esas dudas. Y bueno por lo demás, estos son los cambios de los que estoy consiente de haber realizado y espero le sirva a muchos más.

Por cierto el asunto con la ASPNETDB.MDF.
Resulta que el dichoso archivo se crea automáticamente por el VS, no se porque en otro proyecto no ha pasado lo mismo, pero en el mio sí. Para poder publicar correctamente, había que ir al menú Ver > Explorador de servidores. Allí, dar clic a Conexiones de datos y luego en el archivo de base de datos ASPNETDB.MDF clic derecho y Eliminar. Ahora sí pude publicar.

Por todo esto no hubo necesidad de configurar nada en el servidor, ni tampoco dar acceso a una cuenta 'NT AUTHORITY \ Servicio de red'.

Muchas gracias y espero no encontrarme con una nueva excepción "Error 26" por ahora. Gracias Enmanuel.

04 junio 2010

Fondo en www.google.com

Creo que ya muchos al igual que yo, se nos hacia extraño que encontraramos buscadores paginas alternas  que ofrecian el mismo servicio de busquedas, pero con una apariencia más 'llamativa' que el fondo blanco de nuestro rey de los buscadores. La pagina en especial se las debo pues la vi recientemente en el equipo de un amigo y me llamó la atención el ver que google la página web tenia una imagen de un bosque. Parece que a Google le sonó la idea en algún momento y ahora se implementa inicialmente en EE UU.

Pero obviamente aqui está el truco para nosotros mis latinos. Ingresar a www.google.com/ncr Allí, en la esquina inferior izquierda, tendrás el enlace para cambiar el fondo. Puedes elegir entre imágenes de galerías públicas de Picasa, las de tus propias galerías en el servicio o subir una desde tu ordenador. Eso sí, las imágenes tienen que tener un tamaño superior a 800×600.


Según dicen, esta opción estará accesible para el resto de países dentro unos días.

02 octubre 2009

Semillero 1

SO: Windows

Lo primero de lo que les hablaré es sobre un buen CMS o Gestor de contenidos, algo asi como el administrador para realizar nuestra página web. En este caso el elegido es Joomla, que es libre con licencia GNU, osea libre, no hay nada por qué preocuaparse (No me hago responsable de usos indebidos diferentes a los que aquí se expongan, osea frescos).
Sigamos. Tal vez hayan escuchado hablar de él, pero no fue hasta que lo conocí personalmente que me gustó. Francamente no me parecía interesante interactuar con otro software diferente a los que conocía, pero bueno debemos avanzar en nuestro corto conocimiento y abrir nuestras posibilidades. Sencillamente exploremos.

Pack Joomla-1.5.14-spanish.zip
Mas sobre Joomla


Debes buscar la versión compatible con tu Sistema Operativo (SO) en este caso la version que termina en .zip y la versión más reciente o la que mejor manejes.Trabajaremos con la version 1.5.


Una vez descargado el archivo lo extraemos en una carpeta nueva llamada joomla y la carpeta, ahora llamada joomla, la colocamos dentro de la carpeta htdocs de Xampp. (Si no sabes sobre Xampp aquí te dejo una ayuda maked by me, que sirve perfectamente para esta primera entrega).



Entonces, teniendo instalado previamente Xammp, ingresamos desde nuestro navegador a
http://localhost/joomla donde joomla es el nombre de la carpeta que está dentro de htdocs. Aquí empezaremos la instalación de Joomla (NOTA: el que quiera leer todo lo que dice la instalación está en la libertad de hacerlo). Nos debe aparecer una ventana como la siguiente:

aqui
elegimos nuestro idioma, Español, y damos clic en siguiente (el botoncito verder arriba a la derecha de la pantalla o isquierda?... bno se encuentra igual). Luego aparece una ventana sobre Comprobación previa damos clic en siguiente. Luego, ventana de licencia, siguiente. Ahora una ventana de Configuración de la base de datos, sino has modificado nada en tu servidor Xammp colocaremos de Nombre de servidor localhost Nombre de usuario root y un nombre que quieras a una base de datos, por ejemplo bd_joomla.

Ahora, Configuración de FTP, siguiente si no desean nada de eso. Y llegamos a la Configuración Principal. Nombre del sitio web,un correo, y contraseña. sobre el correo pues el que deseen igual no hay forma de que si se te olvida la contraseña utilicen ese correo para decirtela. Asi que en este punto muy atentos WARNING, no hay forma de recuperar la contraseña a menos que tengas conocimiento de programación y la decifres desde la base de datos, que obviamente es una contraseña cifrada; ó que vuelvas a instalar joomla y pierdas todo.... hasta donde sé de esas formas, de más que habrán unas más sencillas, pero la más sencilla es que no olvides la contraseña. antes de dar en siguiente, damos clic en Instalar los datos de ejemplo predeterminados
y siguiente, esto es para agregar las primeras funciones básicas y ahorrarnos ese tiempo.

Finalmente,
Para continuar debe eliminar completamente el directorio de instalación.
Por motivos de seguridad, no podrá avanzar más allá de esta pantalla hasta que el directorio "installation" sea removido completamente. Esta es una característica de seguridad de Joomla!.




Listo entramos a Administración y a explorar. En http://localhost/joomla/administrator/index.php administramos nuestro sitio web.



MAS INFO
...

MODULOS JOOMLA
http://www.solojoomla.com/modulos-joomla-1.5.html
Módulos Joomla 1.5 Módulo Columnistas - Dual Modulo El portal para página de Inicio Modulo Joomla 1.5 RSS feeds reader Modulos para Community Builder Components joomla
http://www.solojoomla.com/componentes/index.php


Plugins
http://www.solojoomla.com/plugins/index.php

EXTENSIONES DE JOOMLA

Las extensiones de joomla son el conjunto de componentes, lenguajes, módulos,
plugins y plantillas, normalmente al buscar módulos están almacenados en un
centro de descargas de extensiones donde se agrupan por categorías y se
acostumbra a agrupar los componentes, módulos, mambots y plugins cuando se
buscan las funcionalidades, links de estos centros de descargas:

http://extensions.joomla.org/ (en inglés)

http://www.joomlaspanish.org/component/option,com_remository/Itemid,28/func,select/id,3/ (en español)

http://ayudajoomla.com/extensiones.html (en español)

http://www.descargasjoomla.com/extensiones.html (en español)



PLANTILLAS

Centro de descargas de plantillas:

En este enlace hay un listado de varios sitios donde se pueden descargar
plantillas de joomla:

http://www.joomlaspanish.org/foros/showthread.php?t=8914

PACKS PLANTILLAS

Hay paquetes de plantillas que prácticamente son sitios webs ya hechos, con
módulos, componentes e incluyendo la instalación, incluso con información de
ejemplo, orientadas a sitios webs específicos, como redes sociales, tiendas online,
etc. Enlaces:

http://www.taringa.net/posts/downloads/1508856/Varias-Template-Joomla.html

http://www.taringa.net/posts/downloads/2648824/Joomla-Templates-2009-
MegaPLantillas-parte1.html

Agradecimientos...

  • Al Semillero de software libre de la Universidad Adventista de Colombia
  • A Oscar Moreno por los enlaces, y a los buenos lectores que aprecien la autoría de los aportes.

Compratir con agradecimientos es mejor que un plagio sin ellos.

¿Preguntas?

25 septiembre 2009

Semillero...

Hola a todos, los saludo luego de un receso, pues ando en la contrucción del proyecto de Grado. En esta ocación quiero compartir con ustedes de una forma "acultural" lo que todos deberíamos ir cultivando: Conocimiento compartido. de que se trata? bueno, en la universidad Adventista de Colombia (UNAC) de la ciudad de Medellín, se ha venido desarrollando un proyecto denominado "semilleros UNAC".... que?... bueno esto de semilleros es un grupo de muchachos que les gusta investigar, correcto?. Esta inicitaiva busca que los jóvenes interactúen en los campos que más les llame la atención de forma investigativa.

y bla bla bla... la cuestión es que por lo mismo que me gusta el tema estaré compartiendo con ustedes lo que del semillero vayamos aprendiendo, y compartir con muchos que sé, al igual que yo, estarían emocionados con materiales así.

ahh por cierto, el semillero es sobre software libre.

De adelanto les dejaré un muy buen material para contruir nuestras propias páginas web.... free!