При попытке:
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
DBCC CHECKIDENT (Table, RESEED, 100)
100 — текущая позиция, не следующая
Сообразил такой вариант, прям в запрос, удобно
select c1.value('xs:integer((/v)[1])','int') ci1, c1.value('xs:float((/v)[1])','float') ci1 from (
select cast(' 1234 ' as xml) c1 union all
select cast('1234 Z' as xml) c1 union all
select cast('12,3' as xml) c1 union all
select cast('12.3' as xml) c1 union all
select cast('23e2' as xml) c1
) tt
ci1 ci1
1234 1234
NULL NULL
NULL NULL
NULL 12,3
NULL 2300
select cast('1234' 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;
Немного другой вариант, для поразмыслить
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
Пытаемся восстановить БД, получаем ошибку
- Ставим крыжку перезаписать БД

- И обязательно указываем файлы данных и журнала базы которую перезаписываем

Возможен и вариант без пункта 1, БД в которую будем восстанавливать дамп не создаем заранее, при выполнении восстановления в окне выбора источника и назначения, в назначении не выбираем уже существующую БД из выпадающего списка, а вводим новое наименование. И обязательно выполняем 2, переименовываем файлы назначения данных и журнала.
ALTER TABLE tableName ADD DEFAULT defaultValue FOR columnName
USE ИмяБД
EXEC sp_MSForEachTable ‘Print «Rebuild index on: ?»; ALTER INDEX ALL ON ? REBUILD WITH (ONLINE = ON, FILLFACTOR = 80, SORT_IN_TEMPDB = ON);’