23.04.2010, 12:59 | #1 |
Участник
|
Иногода возникает ошибка по поводу несуществования Constraint'а $ndodefault$....
--------------------------- Microsoft Business Solutions-Navision --------------------------- Произошла следующая ошибка(и) SQL Server при обращении к таблице Товар: 3728,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]'$ndodefault$910743143$1' is not a constraint. 3727,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]Could not drop constraint. See previous errors. SQL: ALTER TABLE ... --------------------------- OK --------------------------- Код: -- Скрипт исправляет ndodefault -- Генерирует скрипт коррекции(по 5000 строк) -- Запускать несколько раз. DECLARE @Old_Name VARCHAR(100), @New_Name VARCHAR(100), @ParentID VARCHAR(100), @i INT DECLARE Cur_constr CURSOR LOCAL FAST_FORWARD READ_ONLY TYPE_WARNING FOR SELECT [name], CAST ([parent_object_id] AS VARCHAR) FROM [sys].[default_constraints] WHERE NAME LIKE '$ndodefault$%$%' AND [is_system_named] = 0 ORDER BY parent_object_id OPEN Cur_constr FETCH NEXT FROM Cur_constr INTO @Old_Name , @ParentID SET @i = 0 WHILE @@Fetch_Status = 0 AND @i < 5000 BEGIN SET @New_Name = '$ndodefault$' + @ParentID + SUBSTRING(@Old_Name, CHARINDEX('$', @Old_Name, 13), LEN(@Old_Name)) IF @Old_Name <> @New_Name BEGIN SET @i = @i + 1 PRINT ' EXEC sp_rename ' + QUOTENAME(@Old_Name) + ', ' + QUOTENAME(@New_Name) + ';' PRINT ' Print ' + CAST(@i AS VARCHAR) PRINT 'GO' END FETCH NEXT FROM Cur_constr INTO @Old_Name , @ParentID END |
|