Eu tenho uma coluna varbinary(max) que preciso importar em massa. Os dados que estou colocando nesta coluna são um byte[] em C#. Como faço para formatar os dados no arquivo delimitado por vírgula usado para importação em massa? Em outras palavras, como faço para converter de um byte[] para uma string de maneira que o utilitário bcp aceite?
Michael Hedgpeth's questions
Os eventos estendidos parecem ser uma tecnologia melhor e menos estressante para o servidor, mas o SQL Profiler/perfmon tem ferramentas melhores. Além disso, os eventos estendidos parecem ter uma curva de aprendizado mais acentuada. Em que contexto cada um deve ser usado? Vale a pena superar a curva de aprendizado íngreme para aproveitar os eventos prolongados?
Ouvi dizer que armazenar índices em um grupo de arquivos e unidade diferentes aumenta o desempenho em um banco de dados porque a unidade não precisa ir e voltar entre o índice e os dados aos quais o índice se refere. Também ouvi dizer que isso é um mito.
Quando é aconselhável armazenar índices não clusterizados em um grupo de arquivos e uma unidade separados? Que evidência de perfmon/profiler me levaria a chegar a essa conclusão? O hardware desempenha um papel na decisão (se um RAID/SAN é usado em uma única unidade)?
Eu tenho uma tabela que armazena imagens que variam em tamanho entre 16-100 KB cada. Como as imagens são muito pequenas, segui o conselho da Microsoft e não usei o tipo de dados FILESTREAM. A tabela é construída de forma simples:
CREATE TABLE Screenshot(
Id bigint NOT NULL,
Data varbinary(max) NOT NULL,
CONSTRAINT PK_Screenshot PRIMARY KEY CLUSTERED
(
Id ASC
)WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
A tabela está fortemente inserida (2 milhões de registros na última semana) e raramente selecionada. A chave é usar um algoritmo hilo , portanto, na maioria das vezes, novas linhas são adicionadas no final.
Tenho tido problemas quando muitos processos tentam inserir nessa tabela por causa de travamento e contenção. As consultas estão expirando devido à espera de bloqueios.
Devo migrar esta tabela para seu próprio grupo de arquivos e unidade? Como posso melhorar a performance do insert e diminuir a contenção neste tipo de situação?
A partir dessa pergunta , aprendi sobre um script que cria tarefas para fazer backup de bancos de dados, verificar a integridade do banco de dados, otimizar índices e limpar arquivos. De acordo com a documentação , isso deve acontecer em uma ordem específica:
Verificação de integridade após a otimização do índice. Isso ocorre porque as reconstruções de índice às vezes podem corrigir a corrupção do banco de dados. Backup completo após a otimização do índice. Então os seguintes backups diferenciais serão pequenos. Backup completo após a verificação de integridade. Então você sabe que a integridade do backup está ok. Isso significa primeiro otimização de índice, depois verificação de integridade e, finalmente, backup completo.
O script criou um trabalho por tarefa. Como posso agendar esses trabalhos sem que eles interrompam uns aos outros e garanta que estejam na ordem correta?
Estou tentando criar um trabalho SQL para fazer backup do meu banco de dados. Eu quero ter:
- Um backup completo semanal
- Um backup diferencial diário
- Algo que limpará backups com mais de 14 dias
Comecei a fazer isso com o Plano de Manutenção , mas decidi que gerenciar por meio de jobs seria mais flexível.
Minhas perguntas são: como nomeio os arquivos de backup? Devo nomeá-los com uma convenção de nomenclatura de data e usar a mesma convenção para excluir arquivos antigos? Existe uma maneira mais fácil?
Se estou pensando demais nisso e deveria estar usando um Plano de Manutenção, também agradeceria essa resposta.
Eu gostaria de usar a segurança integrada com meu aplicativo interno que está todo em um domínio. Infelizmente, nunca consegui fazer isso funcionar bem. Gostaria de atribuir a um grupo inteiro do Exchange (Active Directory) uma função no SQL Server para acesso de leitura/gravação a determinadas tabelas. Dessa forma eu não precisaria criar um operador sempre que alguém fosse contratado ou deletar um operador sempre que alguém fosse demitido. Isso é possível? Que passos eu tomaria para fazer isso?
Tentei criar um plano de manutenção em meu banco de dados SQL Server 2008 e fiquei impressionado com algumas das coisas que estão disponíveis imediatamente. No entanto, depois de criado, parecia difícil de personalizar. Isso me deixou pensando se eu deveria ter apenas criado trabalhos SQL com as atividades que queria fazer. Há algum benefício em usar o plano de manutenção em vez de criar trabalhos SQL manualmente?
Eu tenho que executar algumas consultas de longa duração (reconstruindo índices, atualizando grandes conjuntos de dados) para meu banco de dados. Existe uma alternativa para executar a consulta no SQL Server Management Studio e verificá-la a cada hora? Gostaria de receber um e-mail ou uma mensagem quando terminar, mas não sei qual é a melhor ferramenta para isso.
Desejo reorganizar os índices de todas as tabelas do meu banco de dados SQL Server 2008, denominado 'db'. Eu tento o seguinte comando:
ALTER INDEX all ON db REBUILD
E recebo o seguinte erro:
Não é possível encontrar o objeto "db" porque ele não existe ou você não tem permissões
O que estou fazendo errado?