Мне нужно попытаться обрезать таблицы, и если они могут ОТЛИЧНО делать другие вещи с таблицей, но если они не могут быть усечены, запустите некоторый скрипт, а затем попробуйте усечь снова и повторите.Примерно так для начала
SELECT TABLE_NAME
INTO #tbls
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_SCHEMA = 'dbo'
--No temps or views
AND TABLE_NAME NOT LIKE 'tmp%'
AND TABLE_NAME NOT LIKE 'temp%'
AND TABLE_NAME NOT LIKE 'vw%'
SELECT @tbl_cnt = COUNT(*) FROM #tbls
WHILE @tbl_cnt > 0 -- for each table
BEGIN
SET @tbl_nm = (SELECT top 1 TABLE_NAME FROM #tbls)
select @sql = 'TRUNCATE TABLE ' + @tbl_nm
BEGIN TRY
EXEC(@sql) --truncate works
END TRY
BEGIN CATCH
--STUFF HERE TO DO WHEN TRUNCATE FAILS
END CATCH
/*LOOP BACK AND TRY TO TRUNCATE*/
/*more steps after successful truncate*/
@tbl_cnt = @tbl_cnt -1
DELETE FROM #tbls WHERE #tbls.TABLE_NAME = @tbl_nm
END
в конце это будет
WHILE @tbl_cnt > 0
try to truncate
if it works
do more stuff
if it doesn't
do other stuff
try to truncate again
Loop back to first truncate
попытка / уловка может или не может быть путь, пробовал другиеметоды, и это тот, с которым я работаю сейчас, просто с ментальным блоком с этим.Любая помощь приветствуется.