O disco do sistema fica sem espaço ao executar consultas pesadas do SQL no SQL Server 2012

14

Eu sou muito novo no SQL Server 2012, ficaria muito grato se alguém puder ajudar. Eu restaurei uma cópia de um grande banco de dados no SQL Server 2012 e tentei executar algumas consultas simples nele.

Estou tentando executar uma consulta SELECT em uma tabela de 136898115linhas de banco de dados . Esta SELECTconsulta possui apenas uma WHEREcláusula simples . Toda vez que executo essa consulta, ela falha porque o disco do sistema (a partição em que o Windows está instalado - C:\) fica sem espaço (essa partição possui apenas 6 GB de espaço livre) e não entendo o motivo. Eu defini meu tempdb para estar em uma unidade diferente, que possui mais de 14 terabytes de espaço livre. É claro que meu banco de dados também está localizado em uma unidade diferente.

O que faz com que minha partição do sistema fique sem espaço? É o arquivo de paginação?

royv
fonte
2
estou ficando sem espaço no sistema, estou executando o SSMS, mas é a mesma máquina. estou usando o SSMS no servidor SQL real.
royv
2
Geralmente, é recomendável não executar nenhum outro aplicativo em uma caixa Windows do SQL Server ( não SSMS) ou garantir que a configuração de memória máxima seja baixa o suficiente para permitir RAM livre suficiente. Veja a minha resposta aqui: dba.stackexchange.com/a/19776/2718
Jon Seigel

Respostas:

12

Os resultados da consulta do SSMS são armazenados em cache na unidade C: por padrão. Vá para Tool \ Options. Ver anexo. Mude isso para outro volume com mais armazenamento e você ficará bem.

insira a descrição da imagem aqui

Eric Higgins
fonte
1
Se você selecionar Resultados em arquivo, é aí que a caixa de diálogo Salvar como é aberta por padrão. Eu não acho que o SSMS salva os conjuntos de resultados em disco por padrão, mas posso estar errado.
21412 Jon Jones
1
Os resultados que você obtém na janela de consulta são armazenados em cache por minha postagem. Verifique sua unidade, execute uma consulta grande no SSMS e verifique novamente. Você verá perda de armazenamento na unidade C: se não tiver especificado o contrário.
Eric Higgins
1
isso é verdade. não está relacionado ao meu arquivo de paginação. movi meu arquivo de paginação para outra unidade e ainda assim minha unidade C: ficou sem espaço.
royv
11

Ok, eu descobri: Eric e eu estávamos certos!

  • O caminho na caixa de diálogo é como eu disse, apenas um caminho padrão para salvar os resultados da consulta.
  • Os resultados da consulta são armazenados em cache no disco (eu estava errado), mas na pasta temporária do perfil local ( C:\Users\<UserName>\AppData\Local\Tempno meu caso aqui). Eu verifiquei e não parece haver uma maneira óbvia de desativar esse cache.

Portanto, os tópicos são:

  • Evite executar o SSMS diretamente na caixa SQL
  • Não faça SELECT *uma tabela enorme no SSMS, a menos que o conjunto de resultados possa caber na pasta de perfil
  • Verifique se a configuração de memória máxima do SQL Server está definida corretamente (pode ou não ter contribuído para esse problema em relação ao crescimento do arquivo de paginação)
Jon Seigel
fonte
7

Eu apenas sofri o mesmo problema. Depois de ler as respostas acima, encontrei o seguinte.

Ferramentas | Opções não é a resposta. O meu foi definido como unidade Y: ainda assim, vi a minha consulta ser executada e o espaço na unidade C: mergulhar de 2,9 GB para 5,04 MB (antes de encerrar a consulta).

Então eu pensei que provavelmente os resultados do cache (como eles são muito grandes com cada linha retornada contendo um grande pedaço de XML) para o diretório Temp, que foi o que Jon disse, mas não tinha certeza de como você mudaria isso.

O que fiz para alterar onde os arquivos temporários são gravados foi abrir minhas variáveis ​​de ambiente e editar as variáveis ​​de usuário TEMP e TMP (que foram definidas como C: \ Temp) para gravar em Z: \ Temp.

Posso confirmar que, após essa alteração, observei a consulta criar um arquivo muito grande no meu diretório Z: \ Temp.

Nick Ryan
fonte
Ótimas informações quando há um processo pelo qual você precisa passar para atualizar o espaço em HD da sua VM e ter bastante armazenamento em rede. Estou meio curioso, porém, se você tiver problemas de rede com gargalos nas taxas de transferência de arquivos, poderá sair do desempenho da consulta c: \ slow?
precisa
Isso foi há 3 anos e não me lembro exatamente quais eram as circunstâncias naquele momento. Agora tenho um laptop com uma quantidade patética de RAM e poder de processamento, o que é outra história. Tenho certeza de que a unidade Z: era apenas outra unidade "local" na minha VM. Não sei por que eles não o rotularam D: ou E: mas essa parte estava fora de meu controle. Então, para mim, não havia realmente um problema de rede.
Nick Ryan