4 votos

Cómo utilizar IDatabaseCompact.Compacto() se utiliza IWorkspace, sin permiso denegado

Estoy escribiendo un ArcMap Complemento con vb.net. Me sale un error al intentar compact mi IWorkspace(mdb), el error es:

COMException

Intentó abrir una base de datos, que ya estaba abierto por el usuario 'ADMIN' en el Equipo de 'XXXXXX'. Intente de nuevo cuando la base de datos disponible.

En ESRI.ArcGIS.De la Geodatabase.IDatabaseCompact.Compacto() en MyProject.Miclase.CompactGDB(IWorkspace pWS)

¿Cómo puedo acceder a ese espacio de trabajo, que he usado antes, para compactar?

El Código:

' CompactGDB
    Public Sub CompactGDB(ByVal pWS As IWorkspace)

        Dim pDatabaseCompact As IDatabaseCompact
        If (TypeOf pWS Is IDatabaseCompact) Then
            pDatabaseCompact = CType(pWS, IDatabaseCompact)
            If (pDatabaseCompact.CanCompact) Then
                Try
                    pDatabaseCompact.Compact()
                Catch ex As Exception
                    MessageBox.Show(ex.type & ex.Message & ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try

            End If
        End If

    End Sub

Tengo 8 otras funciones, que trabajo con mi área de trabajo.

Alguna sugerencia?

9voto

lepole Puntos 1588

Antes de llamar a la Compact() método asegúrese de que no hay ningún esclusas existentes en la base de datos. Si se trata de una geodatabase de archivos, a continuación, abra el gdb directorio en el Explorador de Windows y busque tipo de BLOQUEO de archivos que terminen en .de bloqueo. De geodatabase personal habrá una .ldb archivo en el directorio con el mismo nombre que el .mdb. Si usted tiene una capa o tabla de la geodatabase cargado en el mapa, a continuación, usted no será capaz de eliminar todos los bloqueos. Si otro usuario está accediendo a la geodatabase y, a continuación, usted no será capaz de eliminar todos los bloqueos. Si usted está usando arcobjects para acceder temporalmente a la geodatabase, entonces usted necesita utilizar buenas prácticas y cerrar cualquier geodatabase de recursos cuando el proceso de llamada termina. Esto incluye la liberación de todos los objetos COM cuando haya terminado con ellos.

Una forma para hacer esto utilice los métodos de la ComReleaser clase de ESRI.ArcGIS.Alimentador automático de documentos.Conexión.Espacio de nombres Local:

ComReleaser Clase

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X