Cómo controlar la nulabilidad en SELECT INTO para columnas basadas en literales

Estoy notando que cuando uso esta declaración, elAction la columna no es anulable

SELECT TOP 0 SerialNumber, 0 [Action] INTO #MyTable FROM FSE_SerialNumber

Pero cuando uso esta declaración, laAction la columna es anulable

SELECT TOP 0 SerialNumber, CAST(0 as int) [Action] INTO #MyTable FROM FSE_SerialNumber

Mi razón para crear la tabla de esta manera es porque no quiero que la tabla temporal herede la intercalación de SerialNumber de la intercalación predeterminada del servidor o de otra parte. Quiero que coincida con la intercalación de FSE_SerialNumber..SerialNumber.

Mi pregunta es, ¿puedo confiar en la función de conversión que me da una columna que puede contener nulos, o no está claramente definida y podría cambiar? ¿Por qué el elenco de repente hace que la columna sea anulable? ¿Hay alguna forma mejor (además de los comentarios) de aclarar que mi intención es obtener una columna que pueda contener nulos allí?

Respuestas a la pregunta(3)

Su respuesta a la pregunta