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 '?'.