Q: Error ao mudar o tipo de uma coluna de smalldatetime para int Estou tentando mudar o tipo de uma coluna da minha tabela, que esta vazia, de smalldatetime para inteiro. 
Error: 

A conversão implícita do tipo de dados de smalldatetime para int não é
  permitida. Para executar a consulta, use a função CONVERT.

Estou tentando desta forma :
ALTER TABLE Table_Name
ALTER COLUMN Column_Name INT NOT NULL

OBS: Quando eu tento converter para outro tipo, exemplo: VARCHAR(20), funciona. 
O que estou fazendo de errado ?

A: Porque não é possível converter um tipo smalldatetime para int. Imagine dizer ao SQL "converta 01/01/2019 para um número inteiro", como ser isso? Como supostamente ele deveria converter? Dividir 1 por 1 e depois por 2019? Ele não sabe exatamente o que fazer nessa conversão.
Para varchar funciona porque é um texto, então é possível armazenar os dados como estão, com tudo que houver além de números (barras, dois-pontos, etc).   
O que pode ser feito é, alterar para varchar, fazer um update que formate corretamente somente com números, e em seguida alterar novamente para int
Supondo que sua tabela se chame "Teste" e a coluna smaldatetime se chame "campo", poderia fazer assim:


*

*Criar um nova coluna do tipo int

*Fazer o update dessa coluna convertendo a data (usei a function datediff me baseando nessa outra pergunta: convert smalldatetime to unix timestamp

*Remover a coluna antiga

*Renomear a nova para "campo":   


.
alter table teste
  add campo_int int;

 update teste
    set campo_int = datediff(ss, '19700101', campo);

alter table teste
 drop column campo;

Pode ver um exemplo funcionando aqui: sqlfiddle
