Partilhar via


Bancos de dados temporários

O Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) cria um banco de dados temporário para armazenar dados temporários como:

  • Conjuntos de resultados provisórios que são criados durante uma consulta.
  • Tabelas de classificação provisórias que são criadas ao executar uma cláusula ORDER BY, GROUP BY, ou DISTINCT.

O banco de dados temporário é criado somente se ele for explicitamente especificado para ser criado. O nome deve ser especificado quando o mecanismo é iniciado. O banco de dados temporário é removido quando o mecanismo de banco de dados é encerrado. O encerramento anormal de um aplicativo SQL Server Compact 3.5 ou um problema de sincronização de arquivos deixa os arquivos de banco de dados temporário no sistema. Esses arquivos devem ser removidos manualmente.

Local do banco de dados temporário

Para operações que exigem um banco de dados temporário extenso, você deve especificar explicitamente um local para a criação de um banco de dados temporário. Se o local de um banco de dados temporário não for especificado, o local do banco de dados atual será usado como o local do banco de dados temporário. Você não especifica um nome para o banco de dados temporário; o nome de arquivo começa com "SQLCE", por exemplo: SQLCE334241234.tmp.

O local do banco de dados temporário deve ser especificado antes que o mecanismo seja iniciado e não pode ser alterado enquanto o mecanismo estiver em execução. Você pode alterar o local do banco de dados temporário quando o banco de dados for compactado. Para obter mais informações, consulte Oferecendo manutenção aos bancos de dados e Como compactar um banco de dados (programaticamente).

Especificando o local

Especifique o local do banco de dados temporário na cadeia de conexão com o banco de dados usando o parâmetro temp path, temp file directory ou ssce:temp file directory .

Dica

O local especificado para o banco de dados temporário já deve existir.

Para obter mais informações, consulte Como especificar o local do banco de dados temporário usando ADO.NET (programaticamente), Como especificar o local do banco de dados temporário usando os objetos de replicação e RDA e Como especificar o local do banco de dados temporário usando o OLE DB (programaticamente).

Você usa a cadeia de conexão com os objetos SqlCeConnection, SqlCeReplication e SqlCeRemoteDataAccess. Para o objeto SqlCeReplication, você deve incluir o local do banco de dados temporário para todos os métodos que usam a propriedade SubscriberConnectionString. A tabela a seguir lista esses métodos.

Apenas nativo Apenas gerenciado Nativo e gerenciado
  • repl.Initialize
  • repl.run
  • repl.Synchronize
  • repl.BeginSynchronize
  • repl.Addsubscription
  • repl.ReinitializeSubscription
  • repl.DropSubscription

Para o objeto SqlCeRemoteDataAccess, você deve incluir o local do banco de dados temporário para todos os métodos que usam uma propriedade LocalConnectionString. Esses métodos são:

  • RDA_Object.Pull (nativo e gerenciado)
  • RDA_Object.Push (nativo e gerenciado)

Aumento do banco de dados temporário

Bancos de dados extensos podem gerar grandes quantidades de dados temporários durante a execução normal. Quando o banco de dados temporário aumenta a ponto de não haver espaço de armazenamento suficiente no dispositivo de armazenamento padrão ou o limite máximo do banco de dados temporário é atingido, o aplicativo falha.

As seguintes operações causam o aumento no banco de dados temporário, particularmente quando um grupo de operações é absorvido em uma única transação explícita:

  • Instruções UPDATE e DELETE que afetam uma grande quantidade de dados.
  • Operações de classificação. A classificação pode não exigir o uso do banco de dados temporário quando há um índice que a satisfaça. Algumas operações de classificação podem criar alguns arquivos temporários adicionais para os buffers de classificação temporários. Esses arquivos são diferentes do banco de dados temporário. Há um banco de dados temporário para cada banco de dados, mas pode haver qualquer quantidade de arquivos de buffers de classificação temporários.

Para obter mais informações sobre as transações explícitas, consulte Tipos de transações.

Para impedir que grandes arquivos de banco de dados aumentem além dos limites de armazenamento do dispositivo, armazene os bancos de dados em uma placa de armazenamento em vez de armazená-los em uma RAM interna.