Иногода возникает ошибка по поводу несуществования 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