• USE DatabaseName

    DECLARE curFK CURSOR FAST_FORWARD FOR

    SELECT so.id,

    so.name,

    child.name as ChildName,

    parent.name as ParentName

    FROM SysForeignKeys sfk

    INNER JOIN SysObjects so ON sfk.constid = so.id

    INNER JOIN SysObjects child ON sfk.fkeyid = child.id

    INNER JOIN SysObjects parent ON sfk.rkeyid = parent.id

    WHERE so.name <> child.name + '_' + parent.name + '_'

    + CAST(so.id AS VARCHAR(20)) + '_FK'

    DECLARE @soid BIGINT, @name VARCHAR(1000), @childname VARCHAR(1000),

    @parentname VARCHAR(1000), @sql NVARCHAR(4000)

    OPEN curFK

    FETCH NEXT FROM curFK INTO @soid, @name, @childname, @parentname

    WHILE @@FETCH_STATUS = 0

    BEGIN

    ????SET @sql = 'exec sp_rename ' + char(39) + @name + char(39) + ', ' +

    ???? CHAR(39) + @childname + '_' + @parentname + '_' +

    ???? CAST(@soid as varchar(20)) + '_FK'+ char(39)

    ????PRINT @sql

    ????EXECUTE sp_executesql @sql

    ????FETCH NEXT FROM curFK INTO @soid, @name, @childname, @parentname

    END

    CLOSE curFK

    DEALLOCATE curFK

    I am getting below listed error on above mention query. using SQL Server 2005

    Incorrect syntax near the keyword 'CLOSE'.

    Incorrect syntax near '?'.