Добавить столбец с not null в таблицу с даными

При попытке:
alter table m_listDocs add contractId int not null

Инструкция ALTER TABLE допускает добавление только тех столбцов, которые могут содержать значения NULL, имеют указанное определение DEFAULT, являются столбцами идентификаторов или временной метки; если ни одно из вышеперечисленных условий не выполнено, для добавления такого столбца таблица должна быть пустой. Не удалось добавить столбец «contractId» в непустую таблицу «m_listDocs», так как она не соответствует этим условиям.

Обходим:
alter table m_listDocs add contractId int
update m_listDocs set contractId = 0
alter table m_listDocs alter column contractId int not null

TRY_CONVERT, TRY_CAST в MSSQL 2005

Сообразил такой вариант, прям в запрос, удобно
select c1.value('xs:integer((/v)[1])','int') ci1, c1.value('xs:float((/v)[1])','float') ci1 from (
	select cast('<v> 1234 </v>' as xml) c1 union all
	select cast('<v>1234 Z</v>' as xml) c1 union all
	select cast('<v>12,3</v>' as xml) c1 union all
	select cast('<v>12.3</v>' as xml) c1 union all
	select cast('<v>23e2</v>' as xml) c1
 ) tt

ci1	ci1
1234	1234
NULL	NULL
NULL	NULL
NULL	12,3
NULL	2300

select cast('<v>1234</v>' as xml).value('xs:integer((/v)[1])','int') ci1

Это не проверял
CREATE FUNCTION TryCastInt(@inputStr nvarchar(max))
RETURNS int 
AS 
BEGIN
	DECLARE @ret int;
	set @ret = -999999
	IF  (~(cast(patindex('%[^0-9]%', @inputStr) as bit))) >0
		select @ret = cast (@inputStr as int) 
	ELSE
	 set @ret  = -999999
 RETURN @ret;
END;

Немного другой вариант, для поразмыслить
<code>DECLARE @VARCHARString VARCHAR(8000)
SET @VARCHARString = '000012W`''ASDASDS3A@!#@!#_)+)_4)'
SELECT @VARCHARString
--Remove non numeric charecters from the varchar variable
WHILE PATINDEX('%[^0-9]%', @VARCHARString) > 0
SET @VARCHARString = STUFF(@VARCHARString, PATINDEX('%[^0-9]%', @VARCHARString), 1, '')
SELECT @VARCHARString + c1 from (
 select 1 c1 union all
 select 2 c2
) tt

System.Data.SqlClient.SqlError: Резервный набор данных содержит копию базы данных, отличной от существующей базы данных

Пытаемся восстановить БД, получаем ошибку Безымянный1
  1. Ставим крыжку перезаписать БД Безымянный2
  2.  И обязательно указываем файлы данных и журнала базы которую перезаписываемБезымянный3

Возможен и вариант без пункта 1, БД в которую будем восстанавливать дамп не создаем заранее, при выполнении восстановления в окне выбора источника и назначения, в назначении не выбираем уже существующую БД из выпадающего списка, а вводим новое наименование. И обязательно выполняем 2, переименовываем файлы назначения данных и журнала.