Escenario:
Una Solución de granja o Farm solution, realizaba una conexión hacia el mismo servidor de SQL Server 2008 R2 donde estaban las bases de datos de SharePoint 2010, pero reportaba el siguiente mensaje:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Da... 8b06f50c-8cdf-49aa-a527-63b636efc09d
Lo extraño de esto es que si se ingresaba al servidor WFE de SharePoint 2010 y se ingresaba a la´solución desde el navegador habilitaba la conexión al servidor de SQL Server 2008 y desplegaba al información y luego los demás usuarios podían acceder a la solución sin problemas.
La solución:
Aunque al final fue obvia al principio no fue así, fuimos validando y descartando los problemas uno a uno. De la siguiente forma:
1) Se revisó el código línea por línea registrando en el visor de eventos cada paso para validar que si obtuviera la conexión y se determino que al momento de ejecutar el Query reportaba el error de arriba.
2) Se verificó que no estuvieran habilitados los Firewall de Windows Server 2008 r2 en ambos servidores.
3) Se verificó que la cuenta de SQL Server tuviese acceso a la base de datos.
4) No se verificó si los servicios de SQL Server estuviesen levantados ya que eran los mismos que usaba SharePoint y el portal estaba arriba y funcionando correctamente.
5) La conexión hacia la base de datos parecía correcta ya que era la instancia predeterminada es decir el nombre del servidor. El detalle estaba que este servidor de SQL Server tenía un alias porque no se conectaba por el puerto predeterminado de SQL Server 1433 sino uno personalizado 4050 por ejemplo y esto era todo el problema la conexión debía hacerse a través del alias.
En conclusión algo que debemos de verificar siempre es si la base de datos utiliza un alias y la rezón de porque lo hace ya que esto puede afectar nuestra conexión hacia la misma.
Juan Manuel Herrera O.
No hay comentarios.:
Publicar un comentario