Today I found an interesting quirk of sp_rename: renaming a view, stored procedure, function or trigger will not update the object’s definition that is returned by the OBJECT_DEFINITION function. This is documented, but I think it might take people by surprise.
Example
So, if you first create the following view:
CREATE VIEW dbo.InitialViewName AS SELECT Id FROM dbo.SampleTable
Then, you update its name:
EXEC sp_rename 'InitialViewName', 'UpdatedViewName'
Now, when you get the view’s definition:
SELECT OBJECT_DEFINITION(OBJECT_ID('UpdatedViewName'));
The result might surprise you
CREATE VIEW dbo.InitialViewName AS SELECT Id FROM dbo.SampleTable
Notice it’s still InitialViewName.ย So, if you use the OBJECT_DEFINITION in your SQL scripts, you better stick to dropping and re-creating these objects.