none
Aplicacion no funciona en debug, pero si desde el developStudio (cosa de fantasmas?) RRS feed

  • Pregunta

  • Hola a todos

    Me estoy volviendo loco, con este error y ya no sé por donde mirarlo. PLEASE HELP.
    Os cuento, tengo la aplicacion que accede a dos bases de datos con LinQ.
    Cuando lo ejecuto desde el developstudio va de vicio, pero si me voy a la carpeta bin/debug (o release) y ejecuto la aplicación me da un error en una excepcion no controlada.

    Segun detecto en el log del error es en la primera llamada de la primera conexexion a la BD, es una funcion muy simple tal como esta:

          using (InfoDb_LinQDataContext DBInfo = new InfoDb_LinQDataContext())
          {
    		String connectionString = "data source = PCDEVELOPER; initial catalog = INFO_DB; " +
                       "persist security info = True; Integrated Security = True; " +
                       "user id = 'sa';password='ifa98';";
          	DBInfo.Connection.ConnectionString = connectionString;
         
            List<Int16> retorno = new List<Int16>();
    
            var sel = (from e in DBInfo.Info
                  where e.ShopId == shop
                  select e.InfoId).Distinct();
    
            retorno.AddRange(sel);
            return retorno;
          }

    No entiendo que funcione bien desde el compilador con con f5 y no funcione ejecutando la version debbug ¿no es la misma?

    ¿alguna idea?.

    Un saludo y gracias. Os dejo el log del error por si ayuda en algo.

    ************* Texto de la excepción **************
    System.Data.SqlClient.SqlException: Error de inicio de sesión del usuario 'PCDEVELOPER\developer'.
      en System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
      en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
      en System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
      en System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
      en System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
      en System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
      en System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
      en System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
      en System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
      en System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
      en System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
      en System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
      en System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
      en System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
      en System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
      en System.Data.SqlClient.SqlConnection.Open()
      en System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)
      en System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()
      en System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()
      en System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
      en System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
      en System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
      en InfoMonitoring.clssDataMngmnt.listOfShops() en C:\Users\developer\Documents\Visual Studio 2008\Projects\INFO_Projects\InfoMonitoring\clssDataMngmnt.cs:línea 67
      en InfoMonitoring.FormMonitoring.loadAndShowINFOS() en C:\Users\developer\Documents\Visual Studio 2008\Projects\INFO_Projects\InfoMonitoring\FormMonitoring.cs:línea 79
      en InfoMonitoring.FormMonitoring.myInit() en C:\Users\developer\Documents\Visual Studio 2008\Projects\INFO_Projects\InfoMonitoring\FormMonitoring.cs:línea 65
      en InfoMonitoring.FormMonitoring.FormMonitoring_Load(Object sender, EventArgs e) en C:\Users\developer\Documents\Visual Studio 2008\Projects\INFO_Projects\InfoMonitoring\FormMonitoring.cs:línea 44
      en System.Windows.Forms.Form.OnLoad(EventArgs e)
      en System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
      en System.Windows.Forms.Control.CreateControl()
      en System.Windows.Forms.Control.WmShowWindow(Message& m)
      en System.Windows.Forms.Control.WndProc(Message& m)
      en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    jueves, 10 de junio de 2010 11:57

Respuestas

  • > ¿Por que tengo que ejecutar como administrador? no toca archivos de
    > sistema ni nada solo tiene conexiones net remoting y a la base de datos.
    >
     
    ¿De qué forma te autenticas a la base de datos? Se me ocurre que si te
    conectas mediante SSPI, la base de datos haya sido creada por un
    administrador y por tanto está en el rol de administrador. Cuando tu usaurio
    se conecta sin privilegios de administrador, no se encuentra en ese rol y
    SQL Server lanza la excepción.
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marcado como respuesta NewSpiker sábado, 12 de junio de 2010 17:21
    jueves, 10 de junio de 2010 16:15
  • ¿Por que tengo que ejecutar como administrador? no toca archivos de sistema ni nada solo tiene conexiones net remoting y a la base de datos.


    Fíjate con cuidado en tu cadena de conexión. Has indicado un UserId de sa, con su password, pero además has añadido "Integrated Security = True". Esto hace que se use la autenticación integrada en lugar del usuario sa. El usuario que estás usando ('PCDEVELOPER\developer', tal como indica el mensaje de error) no tiene permisos para hacer login en el sql server (cosa que también te dice el mensaje de error) y por eso te falla. Cuando ejecutas como administrador la autenticación integrada sí que te da acceso al servidor.

    Remedio: Una de dos, o quitas el Integrated_Security de la cadena de conexión, o (preferiblemente) concedes permiso de acceso al servidor a la cuenta de usuario que estás utilizando.

     

    • Marcado como respuesta NewSpiker sábado, 12 de junio de 2010 17:21
    sábado, 12 de junio de 2010 8:37

Todas las respuestas

  • Me respondo.

    Trabajo en windows 7.

    Y funciona bien si ejecuto la aplicacion en modo de Administrador.

    :(

    Toda la mañana perdida, intentando encontrar el error, y me viene la idea feliz nada más poner el mensage en el foro.

    ¿Por que tengo que ejecutar como administrador? no toca archivos de sistema ni nada solo tiene conexiones net remoting y a la base de datos.

    Bune un saludo y gracias

    jueves, 10 de junio de 2010 12:04
  • > ¿Por que tengo que ejecutar como administrador? no toca archivos de
    > sistema ni nada solo tiene conexiones net remoting y a la base de datos.
    >
     
    ¿De qué forma te autenticas a la base de datos? Se me ocurre que si te
    conectas mediante SSPI, la base de datos haya sido creada por un
    administrador y por tanto está en el rol de administrador. Cuando tu usaurio
    se conecta sin privilegios de administrador, no se encuentra en ese rol y
    SQL Server lanza la excepción.
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marcado como respuesta NewSpiker sábado, 12 de junio de 2010 17:21
    jueves, 10 de junio de 2010 16:15
  • Si lo que digo es cierto, solucionarías tu problema cambiando o agregando la
    base de datos a algún otro rol disponible para usuarios normales.
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    jueves, 10 de junio de 2010 16:16
  • ¿Por que tengo que ejecutar como administrador? no toca archivos de sistema ni nada solo tiene conexiones net remoting y a la base de datos.


    Fíjate con cuidado en tu cadena de conexión. Has indicado un UserId de sa, con su password, pero además has añadido "Integrated Security = True". Esto hace que se use la autenticación integrada en lugar del usuario sa. El usuario que estás usando ('PCDEVELOPER\developer', tal como indica el mensaje de error) no tiene permisos para hacer login en el sql server (cosa que también te dice el mensaje de error) y por eso te falla. Cuando ejecutas como administrador la autenticación integrada sí que te da acceso al servidor.

    Remedio: Una de dos, o quitas el Integrated_Security de la cadena de conexión, o (preferiblemente) concedes permiso de acceso al servidor a la cuenta de usuario que estás utilizando.

     

    • Marcado como respuesta NewSpiker sábado, 12 de junio de 2010 17:21
    sábado, 12 de junio de 2010 8:37
  • Gracias a todos.

    No he tenido la opción de probarlo, pero tiene pinta de que van por ahí los tiros. en cuanto m¡pueda me pongo con ello y lo confirmo, y por ahora marco las respuestas

    Muy agradecido

    sábado, 12 de junio de 2010 17:21