Определите, можно ли обрезать / удалить таблицу, выполнить сценарий и выполнить цикл - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно попытаться обрезать таблицы, и если они могут ОТЛИЧНО делать другие вещи с таблицей, но если они не могут быть усечены, запустите некоторый скрипт, а затем попробуйте усечь снова и повторите.Примерно так для начала

    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

попытка / уловка может или не может быть путь, пробовал другиеметоды, и это тот, с которым я работаю сейчас, просто с ментальным блоком с этим.Любая помощь приветствуется.

...