Existe uma maneira de consultar um projeto SSDT para obter uma lista de tabelas ou chaves estrangeiras? Semelhante ao que você pode fazer com o banco de dados real?
jmoreno's questions
Eu estava trabalhando em uma consulta no trabalho, que tinha uma junção à esquerda como
cast(cola as varchar) + '-' + right('000' + cast(colb as varchar), 3) = x
O plano de execução real para esta consulta foi bastante próximo, est 269 vs, na verdade, 475.
Alterar o +preenchimento certo para usar o formato (colb, '000') resulta em uma enorme estimativa incorreta do número de linhas, em pelo menos 4 milhões, o que faz com que a consulta demore de 10 a 15 vezes mais.
Entendo por que uma estimativa incorreta causaria um problema, mas não entendo por que o uso de Formato causaria uma estimativa menos precisa.
Existe uma função ou visão do sistema que retorna todos os nomes de propriedades disponíveis?
Eu estava procurando por 'SYSTEMDATAACCESS' e 'USERDATAACCESS' que não estão listados na página MSDN OBJECTPROPERTY . Eu adicionei um comentário sobre eles, mas estou me perguntando se há outros que eu não conheço ... já que é SQL, eu esperaria que eles estivessem disponíveis como metadados consultáveis em algum lugar, mas não consegui encontrar nada. As propriedades nos metadados estão em algum lugar?
EDIT: Embora não seja realmente relevante para minha pergunta, aqui está um exemplo de uso de acesso a dados do sistema. select OBJECTPROPERTY(OBJECT_ID('sys.dm_db_stats_properties'), 'SYSTEMDATAACCESS')
Estou usando o Microsoft SQL Server Migration Assistant v6 (também conhecido como SSMA) para atualizar um banco de dados do Access para o SQL Server. Estou recebendo mensagens informativas que dizem "A2SS0029: O nome do índice 'Nome' foi alterado durante a conversão.".
Como esses são apenas nomes de índice, isso não deve causar problemas para mim. Mas eu me pergunto por que o nome tem que ser mudado. Principalmente porque consegui criar um índice com o nome fornecido manualmente após a migração.
Por que os nomes dos índices estão sendo renomeados? E estou errado sobre isso não causar nenhum problema (já que não tenho nenhuma consulta que use dicas de índice, se é que isso é possível com o Access).
Estou trabalhando em um script que envolve muitas mudanças estruturais e gosto de retornar a uma condição "básica" enquanto trabalho no que tudo precisa ser alterado, então tenho minhas alterações agrupadas em uma transação de início/reversão.
Isso funciona muito bem SE não houver erros, mas quando cometo um erro (tentativa de descartar uma coluna que não existe ou que possui uma restrição FK, etc), a reversão não funciona. Portanto, os objetos que renomeei com sp_rename ou as colunas que descartei têm o nome errado/não existem.
Supondo que este seja um comportamento documentado/correto, onde está documentado? Provavelmente apenas meus olhos vidrados ... mas não consigo lembrar / encontrar nada que diga que uma falha causa um commit.
Eu sei que o SQL Server não oferece suporte ao uso de uma exibição como referência para uma restrição de chave estrangeira, há um motivo (ou seja, algo a ver com o modelo relacional) para esse caso? Parece que seria útil....
Esta questão indica que a permissão "Exibir estado do servidor" é necessária para vários DMVs (visualizações de gerenciamento dinâmico), mas não consigo encontrar nada sobre quem você deseja e não deseja conceder a permissão.
Agora é claro que entendo "menos permissões" e por que você não gostaria de concedê-lo a ninguém, mas não consigo encontrar nenhuma orientação sobre como avaliar se DEVE ser concedido ou não.
Portanto, minha pergunta: quais são as implicações de segurança e desempenho de conceder a um usuário a permissão "Exibir estado do servidor". O que eles podem fazer que talvez não devam ser autorizados a fazer...
Atualização : uma implicação é que o usuário poderá usar o DMV para consultar as consultas. Se as consultas ou parâmetros de consulta puderem conter informações confidenciais que o usuário não conseguiria ver de outra forma, permitir VIEW SERVER STATE permitiria que eles o fizessem (ou seja, dob = ou ssn =).
Eu tenho uma tabela onde todas as ações afetam linhas únicas (inserir e atualizar, sem deletar, mas se houvesse, elas também seriam individuais). Estou pensando em usar um UDF em uma restrição de verificação para garantir que um valor de campo seja usado apenas em combinação com outro valor (dois FK's, na primeira vez que A=1 é usado, B=x torna-se fixo, de modo que se x = 4 então A=1 nunca pode ser combinado com B=3 ou qualquer coisa exceto 4).
Quais são as desvantagens de fazer isso, além do tempo adicional inelegível gasto ao inserir/atualizar a linha?
ATUALIZAÇÃO: o aplicativo não fornece um mecanismo para alterar a coluna A ou B após a criação da linha.