Compartir a través de


Bases de datos temporales

Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) crea una base de datos temporal para almacenar datos temporales como:

  • Conjuntos de resultados temporales creados durante una consulta.
  • Tablas de ordenación provisionales creadas al ejecutar una cláusula ORDER BY, GROUP BY o DISTINCT.

La base de datos temporal sólo se crea si se especifica explícitamente que se cree. El nombre debe especificarse cuando se inicia el motor. La base de datos temporal se quita cuando se cierra el motor de base de datos. Si una aplicación de SQL Server Compact 3.5 termina de manera anómala o se produce un problema de sincronización de archivos, en el sistema permanecen los archivos de la base de datos temporal. Deberán quitarse manualmente.

Ubicación de la base de datos temporal

Para operaciones que requieran una base de datos temporal grande, debe especificar explícitamente una ubicación para crear una base de datos temporal. Si no se especifica ninguna ubicación, se utilizará la de la base de datos actual. No tiene que especificar el nombre de la base de datos temporal: el nombre de archivo empieza por "SQLCE"; por ejemplo, SQLCE334241234.tmp.

La ubicación de la base de datos temporal debe especificarse antes de que el motor se inicie y no se puede cambiar mientras éste se ejecuta. Puede cambiar la ubicación de la base de datos temporal al compactar la base de datos. Para obtener más información, vea Realizar mantenimiento de bases de datos y Cómo compactar una base de datos (mediante programación).

Especificar la ubicación

La ubicación de la base de datos temporal se especifica en la cadena de conexión de la base de datos utilizando el parámetro temp path, temp file directory o ssce:temp file directory .

Nota

La ubicación que se indique para la base de datos temporal debe existir previamente.

Para obtener más información, vea Cómo especificar la ubicación de la base de datos temporal con ADO.NET (mediante programación), Cómo especificar la ubicación de la base de datos temporal mediante los objetos Replication y RDA y Cómo especificar la ubicación de la base de datos temporal utilizando OLE DB (mediante programación).

La cadena de conexión se utiliza con los objetos SqlCeConnection, SqlCeReplication y SqlCeRemoteDataAccess. Para el objeto SqlCeReplication, debe incluir la ubicación de la base de datos temporal para todos los métodos que utilicen la propiedad SubscriberConnectionString. En la tabla siguiente se enumeran estos métodos.

Sólo nativos Sólo administrados Nativos y administrados
  • repl.Initialize
  • repl.run
  • repl.Synchronize
  • repl.BeginSynchronize
  • repl.Addsubscription
  • repl.ReinitializeSubscription
  • repl.DropSubscription

Para el objeto SqlCeRemoteDataAccess, debe incluir la ubicación de la base de datos temporal de todos los métodos que utilicen una propiedad LocalConnectionString. Esos métodos son:

  • RDA_Object.Pull (nativo y administrado)
  • RDA_Object.Push (nativo y administrado)

Crecimiento de la base de datos temporal

Las bases de datos grandes pueden generar una gran cantidad de datos temporales durante el funcionamiento normal. Cuando la base de datos temporal crece hasta el punto de que no hay espacio suficiente en el dispositivo de almacenamiento predeterminado o se alcanza el límite máximo de la base de datos temporal, se produce un error en la aplicación.

Las siguientes operaciones pueden hacer que crezca la base de datos temporal, especialmente cuando un grupo de las operaciones se ajusta en una sola transacción explícita:

  • Instrucciones UPDATE y DELETE que afectan a muchos datos.
  • Operaciones de ordenación. Para la ordenación no es necesario utilizar la base de datos temporal si hay un índice que se ocupe de ello. Algunas operaciones de ordenación pueden crear algunos archivos temporales adicionales para los búferes de ordenación temporales. Estos archivos no tienen nada que ver con la base de datos temporal. Hay una base de datos temporal para cada base de datos, pero puede haber varios archivos de búfer de ordenación temporales.

Para obtener más información acerca de las transacciones explícitas, vea Tipos de transacciones.

Para evitar que los archivos de base de datos grandes superen la capacidad de almacenamiento del dispositivo, guarde las bases de datos en una tarjeta de almacenamiento en lugar de en la memoria RAM interna.