1414 DECLARE @OrigObjectNewName NVARCHAR (4000 );
1515 DECLARE @OrigObjectFullName NVARCHAR (MAX ) = NULL ;
1616 DECLARE @TargetObjectFullName NVARCHAR (MAX ) = NULL ;
17+ DECLARE @OriginalObjectObjectId INT ;
18+ DECLARE @TargetObjectObjectId INT ;
1719
1820 IF (@TableName NOT IN (PARSENAME (@TableName,1 ),QUOTENAME (PARSENAME (@TableName,1 )))
1921 AND @SchemaName IS NOT NULL )
@@ -31,23 +33,26 @@ BEGIN
3133
3234 EXEC tSQLt .Private_RenameObjectToUniqueName @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @OrigObjectNewName OUTPUT ;
3335
36+ SET @OriginalObjectObjectId = OBJECT_ID (@OrigObjectCleanQuotedSchemaName + ' .' + QUOTENAME (@OrigObjectNewName));
37+
3438 SELECT @TargetObjectFullName = S .base_object_name
3539 FROM sys .synonyms AS S
36- WHERE S .object_id = OBJECT_ID (@OrigObjectCleanQuotedSchemaName + ' .' + @OrigObjectNewName) ;
40+ WHERE S .object_id = @OriginalObjectObjectId ;
3741
3842 IF (@TargetObjectFullName IS NOT NULL )
3943 BEGIN
4044 IF (COALESCE (OBJECT_ID (@TargetObjectFullName,' U' ),OBJECT_ID (@TargetObjectFullName,' V' )) IS NULL )
4145 BEGIN
4246 RAISERROR (' Cannot fake synonym %s as it is pointing to %s, which is not a table or view!' ,16 ,10 ,@OrigObjectFullName,@TargetObjectFullName);
4347 END ;
48+ SET @TargetObjectObjectId = OBJECT_ID (@TargetObjectFullName);
4449 END ;
4550 ELSE
4651 BEGIN
47- SET @TargetObjectFullName = @OrigObjectCleanQuotedSchemaName + ' .' + QUOTENAME (@OrigObjectNewName); -- TODO:Test for QUOTENAME
52+ SET @TargetObjectObjectId = @OriginalObjectObjectId;
4853 END ;
4954
50- EXEC tSQLt .Private_CreateFakeOfTable @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @TargetObjectFullName , @Identity, @ComputedColumns, @Defaults;
55+ EXEC tSQLt .Private_CreateFakeOfTable @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @TargetObjectObjectId , @Identity, @ComputedColumns, @Defaults;
5156
5257 EXEC tSQLt .Private_MarktSQLtTempObject @OrigObjectFullName, N ' TABLE' , @OrigObjectNewName;
5358END
0 commit comments