Se eu usar um nome de banco de dados com um ponto no SQL Server (2005 ou 2008), algo como "MyApp.Sales", isso causará algum problema?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Você pode , mas eu não faria. Você sempre teria que envolver o nome do banco de dados com colchetes, como [MyApp.Sales].
Então, para recapitular: se você valoriza sua sanidade, não faça isso.
Eu acho que é uma péssima ideia , mesmo que tecnicamente possível.
Ao longo dos anos, descobri que muitas pessoas têm dificuldade em entender a convenção de nomenclatura de quatro partes, embora pareça bastante óbvio:
Imagine o que acontecerá se eles virem algo assim:
ou:
Manter as coisas simples é importante.
Caso alguém encontre essa pergunta...
Tenha em mente que não é apenas uma má ideia porque os usuários podem ficar confusos, mas também porque algumas ferramentas podem ficar confusas.
Até a própria Microsoft tem problemas com isso. Se você tentar conectar seu banco de dados a uma planilha do Excel usando o Microsoft Query (via ODBC), obterá um assistente de configuração que permite escolher o banco de dados ao qual deseja se conectar. No entanto, escolher um banco de dados que contenha um ponto produzirá um erro informando que o servidor não pôde ser encontrado. Parece que o assistente não verifica se os valores precisam escapar e concatena cegamente os identificadores.
É claro que existem soluções alternativas, mas você economiza alguns problemas não fazendo isso desde o início.
Não use ponto em nomes de banco de dados, nomes de publicação, nomes de usuário. E eu recomendo fortemente nunca usar um ponto no nome (coluna, tabela, visão, banco de dados, etc).
Atualização: posso confirmar que o traço de menos "-" causa problemas semelhantes.
Aqui está o que acontece:
O SQL Server usa scripts para uso interno, como procedimentos armazenados do sistema. Como já mencionado aqui, os comandos que você usa às vezes forçam você a colocar o nome entre colchetes e isso (sério, microsoft?) não (sempre) é bom para o uso de procedimentos armazenados .
Na verdade, não sou mais capaz de limpar as informações de abonnement porque o procedimento armazenado itera por todos os bancos de dados e não escapa dos nomes dos bancos de dados corretamente. Esta iteração é tão complexa que não consegui corrigi-la em mais de 8 SPs.
Além disso, não consigo usar MMC ou scripts para editar conflitos de replicação . Se você tiver um (Um!) banco de dados que tenha um ponto dentro do nome, esses problemas ocorrerão em todos os bancos de dados, em todas as publicações.
Estas são as ocorrências que tenho. Ações SQL complexas são processadas em linguagem sql e funcionarão bem, se a base estiver bem.
Esses erros podem ser encontrados com mais frequência em software de terceiros, portanto, nunca use pontos em todos os nomes de qualquer coisa no servidor sql.
Existem muitos caracteres permitidos em nomes, mas a convenção e o bom senso limitam o uso de caracteres especiais. '_' (sublinhado) é o separador mais seguro comprovado e mantém a facilidade de leitura.
Mesmo negócio: o nome da chave estrangeira não deve conter nenhum ponto.
Descobri que, se você precisar renomear esse nome, precisará de colchetes para
sp_rename
funcionar (porque ao renomear uma chave estrangeira, você precisa especificar o esquema).Exemplo:
Se você esquecer os colchetes, receberá um erro: 15225
Um de nossos fornecedores optou por introduzir o nome do esquema: [System.Activities.DurableInstancing]. Nossa ferramenta de carregamento de dados quebrou, então agora temos mais desenvolvimento para lidar com sua estranheza. Apenas não faça isso. Use um '-'.