Cómo: Cambiar la ubicación de base de datos temporal en SQL Server CE

Seleccione idioma Seleccione idioma
Id. de artículo: 317032 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Microsoft SQL Server 2000 Windows CE versión 1.1 (SQL Server CE) se crea una base de datos temporal que utiliza para almacenar datos temporales, como:

  • Provisionales datos creados durante una transacción antes de que finalice la transacción, incluidos datos de replicación.

    -o bien -

  • Conjuntos de resultados provisional que se crean durante una consulta.

Varios usuarios de SQL Server CE tienen grandes bases de datos que crear grandes volúmenes de datos temporales durante la sincronización. Bases de datos grandes que la aplicación SQL Server CE no debido de espacio de almacenamiento insuficiente en el dispositivo de almacenamiento de predeterminado para el archivo de base de datos principal y el archivo de base de datos temporal.

La base de datos temporal aumenta cada vez que una operación de ordenación se produce. Una operación de ordenación no está limitada a pero incluye:
  • Creación de índice
  • Ordenar por
  • Agrupar por
SQL Server CE implícitamente contiene instrucciones de lenguaje de manipulación de datos (DML) en una transacción; por lo tanto, grandes instrucciones DML (Update o DELETE) también producirá un error. Uso de una transacción explícita también hace que una base de datos crezca.

Puede eliminar una base de datos temporal siempre que el sistema operativo permite una eliminación. Si un archivo está abierto en SQL Server CE y SQL Server CE está utilizando el archivo, el sistema operativo no permite una eliminación.

De forma predeterminada, el sistema operativo crea archivos de base de datos temporal en la carpeta Temp en el dispositivo Windows CE. Después de quitar correctamente el motor de SQL Server CE, SQL Server CE elimina automáticamente el archivo temporal. Sin embargo, una terminación anómala de una aplicación de SQL Server CE puede dejar archivos en la carpeta Temp . Si los archivos permanecen en la carpeta Temp , debe realizar una limpieza periódica de los archivos temporales.

Incluso si mover el archivo de base de datos (sdf) de usuario a una tarjeta flash (para almacenar grandes bases de datos), se crean los archivos de base de datos temporal en la carpeta Temp . Esta creación de archivos temporales provoca problemas para clientes que almacenan grandes bases de datos y realizan consultas intensivas con las operaciones de ordenación.

Cuando se inicia el motor de Server CE, crea una base de datos temporal. La primera operación base de datos que hace que el motor de SQL Server CE iniciar debe incluir la ubicación de la base de datos temporal.

En este artículo se describe cómo puede cambiar la ubicación temporal de la base de datos de SQL Server CE.

Antes de cambiar la ubicación de tempdb en el código, debe aplicar la revisión mencionada en el siguiente artículo de Knowledge Base:

305349REVISIÓN: Propiedades de directorio archivo SSCE:Temp permite cambiar la ubicación de base de datos temporal para SQL Server CE

Cómo especificar una ubicación de Tempdb con ActiveX Data Objects para Microsoft Windows CE (ADOCE)

Cadenas de conexión que contienen una lista de valores de propiedad separados por punto y coma controlan las operaciones de ADOCE. Se puede especificar una ubicación temporal de la base de datos agregando la subcadena siguiente al final de la cadena de conexión:
";SSCE:Temp File Directory = temp_database_dir"  
la ubicación de la ruta temporal de la base de datos dentro de la cadena de conexión no es importante, siempre y cuando correctamente separar cada valor de propiedad con punto y coma.

Para ADOCE, debe incluir la ubicación de base de datos temporal para el método Connection.Open .

También puede especificar la ubicación de base de datos temporal en el origen de cadena para el método Engine.CompactDatabase de conexión.

Cómo especificar una ubicación de Tempdb para Remote Data Access y replicación

Acceso a datos remoto (RDA) y operaciones de replicación están controladas por cadenas de conexión que contienen una lista de valores de propiedad separados por punto y coma. Se puede especificar la ubicación temporal de la base de datos agregando la subcadena siguiente al final de la cadena de conexión:
";SSCE:Temp File Directory = temp_database_dir" 
la ubicación de la ruta temporal de la base de datos dentro de la cadena de conexión no es importante, siempre que cada valor de propiedad correctamente está separada por punto y coma.

Para RDA, debe incluir la ubicación de base de datos temporal para todos los métodos que utilizar una propiedad OLEDBConnectionString . Esto incluye:
  • El método RDA_Object.Pull .
  • El método RDA_Object.Push .
  • El método RDA_Object.SubmitSQL .
El siguiente fragmento de código parcial muestra cómo se utilizar la propiedad OLEDBConnectionString de RDA:
' Declare the SQL Server CE ActiveX Control RDA Object Control.
Dim ceRDA As SSCE.RemoteDataAccess

' Create the RDA Object
Set ceRDA = CreateObject("SSCE.RemoteDataAccess.1.0")

' Set RDA properties
ceRDA .InternetURL = "http://www.northwindtraders.com/sqlce/sscesa10.dll"
ceRDA .InternetLogin = "MyInternetLogin"
ceRDA .InternetPassword = "MyInternetPassword" 
ceRDA .LocalConnectionString = "Data Source=\NorthwindRDA.sdf;SSCE:Temp File Directory =\"

' Push the tracked SQL Server CE table changes back to the SQL Server table
ceRDA .Push "Customers", "Provider=sqloledb;Data Source=SampleServer;Initial Catalog=Northwind;user id=SampleUser;password=SamplePassword" 
para replicación, debe incluir la ubicación de base de datos temporal para todos los métodos que utilizar una propiedad SubscriberConnectionString . Esto incluye:
  • El método REPL_Object.Initialize .
  • El método REPL_Object.AddSubscription .
  • El método REPL_Object.Run .
  • El método REPL_Object.ReinitializeSubscription .
  • El método REPL_Object.DropSubscription .
El siguiente fragmento de código parcial muestra cómo se utilizar la propiedad SubscriberConnectionString en duplicación:
' Declare the Replication Object.
Dim ceRepl As SSCE.Replication
   
' Create the Replication Object
Set ceRepl = CreateObject("SSCE.Replication.1.0")
 
' Set Internet properties
ceRepl.InternetURL = "http://www.northwindtraders.com/sqlce/sscesa10.dll"
ceRepl.InternetLogin = "MyInternetLogin"
ceRepl.InternetPassword = "MyInternetPassword"

' Set Publisher properties
ceRepl.Publisher = "SamplePublisher"
ceRepl.PublisherDatabase = "Nwind_SQLCEReplDemo"
ceRepl.Publication = "SQLCEReplDemo"
ceRepl.PublisherSecurityMode = DB_AUTHENTICATION
ceRepl.PublisherLogin = "MySqlPublisherLogin"
ceRepl.PublisherPassword = "MySqlPublisherPassword"
 
' Set Subscriber properties
ceRepl.SubscriberConnectionString = "data source=\NorthwindRepl.sdf;SSCE:Temp File Directory =\"
ceRepl.Subscriber = "SQLCE Sub #1"

 ' Create the new anonymous subscription
 ceRepl.AddSubscription CREATE_DATABASE  

Cómo especificar una ubicación de Tempdb para operaciones de OLEDB

Operaciones de OLEDB que pueda aceptar las propiedades de preparación para cargar el motor de SQL Server CE son:
  • IDBDataSourceAdmin::CreateDataSource
  • IDBProperties::SetProperties
Debe pasar la ubicación de base de datos temporal IDBDataSourceAdmin::CreateDataSource o IDBProperties::SetProperties como un elemento de las propiedades de conexión, en la misma manera que pase la ubicación de base de datos normal.

El nombre de la propiedad es: DBPROP_SSCE_TEMPFILE_DIRECTORY

La descripción de propiedad es: "SSCE:Temp archivo Directory"

La propiedad OLEDB establecida para el directorio tempfile es: DBPROP_SSCE_DBINIT

El valor de propiedad es: cadena que puede contener cualquier especificación de ruta de acceso válida.

Validación y control de errores

La aplicación de cliente comprueba la ubicación de base de datos temporal proporcionada cuando la aplicación pasa la ubicación en el sistema operativo. SQL Server CE no intenta pre-verify la cadena. Si proporciona una ruta de acceso UNC, el éxito de la ruta de acceso UNC es el sistema operativo. Si el sistema operativo puede controlar las rutas de acceso UNC y el directorio de destino está disponible, se realiza correctamente SQL Server CE a crear los archivos temporales en la ubicación especificada.

Si el nombre de directorio no es válido, o si el nombre de archivo no es válido, o si el directorio no se puede abrir para escritura, SQL Server CE fallará con este mensaje de error:
SSCE_M_INVALIDTEMPPATH 25090 "no es válida para este dispositivo la ubicación de carpeta archivo temporal que ha especificado"
Si la ubicación de base de datos temporal no es válido, SQL Server CE no intenta escribir en la base de datos temporal de la ubicación predeterminada. Los clientes de SQL Server CE que desee debe interceptar la nueva operación de conmutación por error automática, devuelven el valor en sus propios y se vuelva a intentar la operación de SQL Server CE sin la opción de base de datos temporal en su cadena de conexión.

Limitaciones de especificar una ubicación de Tempdb

Hay una base de datos temporal por cada instancia del motor de SQL Server CE. Por tanto, una única copia de la base de datos temporal es comunes para todas las conexiones a la misma instancia de motor de SQL Server CE.

Puede especificar la ubicación de base de datos temporal sólo una vez cuando se inicia SQL Server CE. Después de una instancia se está ejecutando y ya tiene una base de datos tempdb, SQL Server CE pasa por alto cualquier intento para elegir otra ubicación temporal de la base de datos. Debe utilizar la misma ubicación de base de datos temporal para cada operación en la aplicación que puede desencadenar el motor de base de datos para cargar, incluso las operaciones donde el escritor de aplicación es asegurarse de que el motor ya está cargado. Uso de la misma ubicación de base de datos temporal le protege de resultados inesperados de reestructuración subsiguiente de la aplicación y de los cambios en el funcionamiento interno de SQL Server CE. No debe crear aplicaciones que dependen de efectos de la forma que se cargan bases de datos temporales. Microsoft reserva el derecho de tal daños incidental operación de cambio futuro en instancias de que el motor y cuando resulte más de una instancia del motor de versiones de SQL Server CE, ambos para único y no es responsable de mantener la compatibilidad con el comportamiento actual.

Propiedades

Id. de artículo: 317032 - Última revisión: sábado, 26 de octubre de 2002 - Versión: 1.0
La información de este artículo se refiere a:
  • Service Pack 1 de Microsoft SQL Server 2000 Windows CE Edition 1.1
Palabras clave: 
kbmt kbgraphxlink kbhowto kbhowtomaster KB317032 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 317032
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com