Eu tenho uma tabela legada com um nome contendo caracteres não imprimíveis ( CHAR(31)
, para ser específico).
O caractere não imprimível está ao lado de um sublinhado e descobri que o atalho CTRL+SHIFT+_cria o CHAR(31)
caractere (que significa "EUA" - separador de unidades). O desenvolvedor anterior pode ter acertado essa combinação por engano e criado a tabela com esse personagem estranho.
Quando emitimos um SELECT
comando na tabela, ele retorna resultados. Mas quando tentamos emitir qualquer DDL contra ele ( DROP
, sp_rename
, etc), o personagem causa um problema.
Exemplos:
DROP TABLE Table_Name;
Levanta:
Msg 15225 - Nenhum item com o nome de 'Table_Name' pôde ser encontrado no banco de dados atual 'MyDB', dado que @itemtype foi inserido como '(nulo)'.
EXEC sp_rename N'Table_Name', N'NewTableName';
Levanta:
Msg 102 - Sintaxe incorreta perto de '_Name'.
Já dupliquei a tabela com o nome correto, e corrigi nos objetos dependentes. A etapa restante é apenas removê-lo do banco de dados.
Só um insight: quando copiamos+colamos do SQL Server para o Notepad++, ele mostra o caractere oculto ("US") no meio do nome da tabela, ao lado do sublinhado: