Recusei a memória máxima da instância do meu SQL Server para 15 MB... Agora não consigo fazer login para aumentá-la. Como posso aumentar a memória máxima sem fazer login?
A versão é SQL 2008 R2
Recusei a memória máxima da instância do meu SQL Server para 15 MB... Agora não consigo fazer login para aumentá-la. Como posso aumentar a memória máxima sem fazer login?
A versão é SQL 2008 R2
Eu posso usar CASE
para escolher quais colunas exibir em uma SELECT
consulta (Postgres), assim:
SELECT CASE WHEN val = 0 THEN column_x
WHEN val = 1 THEN column_y
ELSE 0
END AS update, ...
É possível algo semelhante ao realizar uma UPDATE
consulta no Postgres (ou seja, escolher quais colunas devem ser atualizadas)? Presumo que não, pois não consegui encontrar nada sobre isso, mas talvez alguém tenha uma alternativa inteligente (além de usar um procedimento ou atualizar cada coluna usando um CASE
para determinar se o valor da coluna deve ser atribuído um novo valor ou simplesmente reatribuido o valor existente valor). Se não houver uma alternativa fácil, é claro que também a aceitarei como resposta.
Informações extras : No meu caso, tenho 14 colunas em potencial que podem ser atualizadas, com apenas uma sendo atualizada por linha correspondente (a tabela a ser atualizada é unida a outra na consulta). A quantidade de linhas a serem atualizadas provavelmente varia, pode ser dezenas ou centenas. Acredito que existam índices para as condições de adesão.
Pretendo usar a UNIQUEIDENTIFIER
como uma chave de acesso que os usuários possam usar para acessar determinados dados. A chave funcionará como uma senha nesse sentido.
Preciso gerar vários desses identificadores como parte de uma INSERT...SELECT
declaração. Por motivos de arquitetura, desejo gerar os identificadores do lado do servidor neste caso.
Como posso gerar um aleatório com segurança UNIQUEIDENTIFIER
? Observe que NEWID
isso não seria aleatório o suficiente, pois não promete nenhuma propriedade de segurança. Estou procurando o equivalente do SQL Server de System.Security.Cryptography.RandomNumberGenerator porque preciso de IDs indecifráveis. Qualquer coisa baseada em CHECKSUM
, RAND
ou GETUTCDATE
também não se qualificaria.
Eu tenho uma pergunta de entrevista, que foi feita durante a minha entrevista. Respondi à pergunta, mas o entrevistador não ficou tão convencido com a minha resposta. Então, alguém por favor me corrija com o meu entendimento?
P. Por que Truncate é DDL e Delete é DML? Ambos fazem quase o mesmo trabalho (removendo linhas)
Resp. Quando estamos usando Truncar, estamos desalocando todo o espaço alocado pelos dados sem salvar no espaço de tabela de undo. Mas, no caso de Excluir, estamos colocando todos os dados em undo tablespace e, em seguida, estamos excluindo todos os dados.
Por favor, se alguém souber a melhor resposta para o acima, por favor, explique.
Eu li que ERROR_STATE()
pode ajudar a distinguir entre diferentes estados/locais no código-fonte onde o mesmo tipo de erro pode ocorrer. Mas não está muito claro para mim como isso pode ser útil.
Estados MSDN:
ERROR_STATE()
Retorna o número do estado do erro que causou a execução do bloco CATCH de uma construção TRY…CATCH.
Como pode ser realmente usado? Alguém pode me dar um exemplo, os fornecidos neste artigo de referência realmente não ajudam a explicar bem as coisas para mim?
Quando eu escrevo uma consulta como esta...
select *
from table1 t1
join table2 t2
on t1.id = t2.id
O otimizador SQL, não tenho certeza se esse é o termo correto, traduz isso para...
select *
from table1 t1, table2 t2
where t1.id = t2.id
Essencialmente, a instrução Join no SQL Server é apenas uma maneira mais fácil de escrever sql? Ou é realmente usado em tempo de execução?
Editar: quase sempre, e quase sempre, uso a sintaxe Join. Estou apenas curioso para saber o que acontece.
Migrei um grande site e banco de dados de um servidor mais antigo (Windows 2008 / SQL Server 2008 / 16 GB de RAM / 2 discos Quad Core / SAS de 2,5 GHz) para um servidor mais novo e muito melhor (Windows 2008 R2 / SQL Server 2012 SP1 / 64 GB de RAM / 2 x 2,1 GHz 16 processadores Core / discos SSD).
Separei os arquivos do banco de dados no servidor antigo, copiei e anexei no novo servidor. Tudo correu muito bem.
Depois disso, mudei para o nível de compatibilidade para 110, atualizei estatísticas, reconstruí índices.
Para minha grande decepção, notei que a maioria das consultas sql são muito mais lentas (2-3-4 vezes mais lentas) no novo servidor SQL 2012 do que no antigo servidor SQL 2008.
Por exemplo, em uma tabela com cerca de 700k registros, no servidor antigo uma consulta no índice levava cerca de 100ms. No novo servidor, a mesma consulta demora cerca de 350 ms.
O mesmo acontece para todas as consultas.
Gostaria de uma ajuda aqui. Deixe-me saber o que verificar/verificar. Porque acho muito difícil acreditar que em um servidor melhor com um SQL Server mais recente, o desempenho seja pior.
Mais detalhes:
A memória está configurada para max.
Eu tenho esta tabela e índice:
CREATE TABLE [dbo].[Answer_Details_23](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[SurveyID] [int] NOT NULL,
[CustomerID] [int] NOT NULL default 0,
[SummaryID] [int] NOT NULL,
[QuestionID] [int] NOT NULL,
[RowID] [int] NOT NULL default 0,
[OptionID] [int] NOT NULL default 0,
[EnteredText] [ntext] NULL,
CONSTRAINT [Answer_Details_23_PK] PRIMARY KEY NONCLUSTERED
(
[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] TEXTIMAGE_ON [PRIMARY]
CREATE NONCLUSTERED INDEX [IDX_Answer_Details_23_SummaryID_QuestionID] ON [dbo].[Answer_Details_23]
(
[SummaryID] ASC,
[QuestionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Eu executei esta consulta:
set statistics time on;
select summaryid, count(summaryid) from Answer_Details_23 group by summaryid order by count(summaryid) desc;
set statistics time off;
OLD SERVER - Tempos de execução do SQL Server: tempo de CPU = 419 ms, tempo decorrido = 695 ms.
NOVO SERVIDOR - Tempos de execução do SQL Server: tempo de CPU = 1340 ms, tempo decorrido = 1636 ms.
PLANOS DE EXECUÇÃO carregados aqui: http://we.tl/ARbPuvf9t8
Atualização posterior:
Agora, Tempos de Execução do SQL Server: Tempo de CPU = 550 ms, tempo decorrido = 828 ms.
Ainda é pior que o servidor antigo, mas não tão ruim. Se você tiver outras sugestões (além de otimizações de consultas locais), sinta-se à vontade para comentar.
Onde posso encontrar uma cópia legal do padrão ISO SQL 2008?
Eu tenho um banco de dados Microsoft SQL Server 2008 r2. É definido um usuário chamado marie, que pode acessar as tabelas do banco de dados principal; isso funciona bem. Agora, gostaria que a marie pudesse realizar esta consulta:
SELECT resource_type,spid,login_time,status,hostname,program_name,nt_domain,nt_username,loginame
FROM sys.dm_tran_locks dl
JOIN sys.sysprocesses sp on dl.request_session_id = sp.spid
As tabelas envolvidas são tabelas mestras; como dou permissão para maria ler deles? Já tentei executar o seguinte como dbo:
GRANT ALL on sys.dm_tran_locks TO marie
GRANT ALL on sys.sysprocesses TO marie
Ainda assim, quando marie tenta realizar a consulta acima, o erro é:
Msg 297, Level 16, State 1, Line 1
The user does not have permission to perform this action.
O que estou fazendo errado?
Como a replicação nativa do PostgreSQL se compara ao MySQL?
Sei que a replicação assíncrona tem suporte há mais tempo do que a sincronização, que é recente. O síncrono é confiável para ser usado em projetos reais?