Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
06a6f5d
Updated tests for FakeTableTests.class.sql to better align with TDD p…
lizbaron Nov 2, 2021
ab413ba
Broke the build catastrophically.
lizbaron Nov 3, 2021
d6a82b1
fixed the build.
lizbaron Nov 4, 2021
daecae5
Removed objecttype from Private_MarktSQLtTempObject and wrote more te…
lizbaron Nov 4, 2021
59b72b1
Turns out that we should probably pass the ObjectType when marking th…
lizbaron Nov 4, 2021
0c32195
Update LocalBuild.bat
mbt1 Nov 5, 2021
c66f0d7
Update LocalBuild.bat
mbt1 Nov 5, 2021
e35cb22
Update LocalBuild.bat
mbt1 Nov 5, 2021
bd548fe
fixed, runs better now. build still isn't failing.
lizbaron Nov 5, 2021
6bae618
better TDD and refactored tests. Build still works (possibly).
lizbaron Nov 5, 2021
af6581b
Added tests for SpyProcedureTests.class.sql and FakeFunctionTests.cla…
lizbaron Nov 5, 2021
0c68953
Added test and code for FakeFunction to call tSQLt.Private_MarktSQLtT…
lizbaron Nov 6, 2021
67d1001
Transactions are broken when trying to delete only the IsTempObject=1…
lizbaron Nov 6, 2021
a81bb38
transactions are fun, and the build is very broken (still).
lizbaron Nov 6, 2021
24eb1b0
Working on fixing ApplyConstraint, wrote tests and such. Build still …
lizbaron Nov 7, 2021
e478937
Added notes for more tests and build is still failing.
lizbaron Nov 7, 2021
0c7c875
Fixed constraints! Yay. All tests passing. But the build is still bro…
lizbaron Nov 7, 2021
440a8fa
Removed extra quotes from AntTarget default value (all); updated tSQL…
lizbaron Nov 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions Build/LocalBuild.bat
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@ ECHO SQLInstanceName: "%SQLInstanceName%"
SET DBName=%~5
ECHO DBName: "%DBName%"
SET DBLogin=-E
SET AntTarget=all
IF NOT "%~6"=="-v" IF NOT "%~6"=="" SET DBLogin=%~6
IF NOT "%~7"=="-v" IF NOT "%~7"=="" SET SQLPackagePath=%~7
IF NOT "%~8"=="-v" IF NOT "%~8"=="" SET AntTarget=%~8
SET VerboseOutput=ON
IF NOT "%~6"=="-v" IF NOT "%~7"=="-v" IF NOT "%~8"=="-v" SET VerboseOutput=OFF
IF NOT "%~6"=="-v" IF NOT "%~7"=="-v" IF NOT "%~8"=="-v" IF NOT "%~9"=="-v" SET VerboseOutput=OFF
ECHO DBLogin: "%DBLogin%"
ECHO SQLPackagePath: "%SQLPackagePath%"
ECHO AntTarget: "%AntTarget%"
ECHO VerboseOutput: "%VerboseOutput%"

REM CALL "%AntHome%\bin\ant" -buildfile Build\tSQLt.experiments.build.xml -Dmsbuild.path="%NET4Home%" -verbose || goto :error
Expand Down Expand Up @@ -75,7 +78,7 @@ ECHO LogTableName: %LogTableName%

IF "%VerboseOutput%"=="ON" @ECHO ON
@REM -----------------------------------------------------------------------------This space character is utterly important! ----v
CALL "%AntHome%\bin\ant" -buildfile Build\tSQLt.validatebuild.xml -Ddb.server="%SQLInstanceName%" -Ddb.name=%DBName% -Ddb.login=" %DBLogin%" -Dsqlcmd.path="%SQLCMDPath%" -Dsqlpackage.path="%SQLPackagePath%" -Dlogtable.name="%LogTableName%" || goto :error
CALL "%AntHome%\bin\ant" "%AntTarget%" -buildfile Build\tSQLt.validatebuild.xml -Ddb.server="%SQLInstanceName%" -Ddb.name=%DBName% -Ddb.login=" %DBLogin%" -Dsqlcmd.path="%SQLCMDPath%" -Dsqlpackage.path="%SQLPackagePath%" -Dlogtable.name="%LogTableName%" || goto :error
@ECHO OFF

ECHO +-------------------------+
Expand Down
4 changes: 2 additions & 2 deletions Experiments/NameResolutionResearch.sql
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ tSQLt.FakeTable
EXEC (@cmd);

EXEC sys.sp_addextendedproperty
@name = N'tSQLt.FakeTable_OrgTableName',
@name = N'tSQLt.Private_TestDouble_OrgObjectName',
@value = @newName,
@level0type = N'SCHEMA', @level0name = @schemaName, -- <use tSQLt.private_getCleanSchemaName>
@level1type = N'TABLE', @level1name = @tableName; -- <use tSQLt.[private_getCleanObjectName]>
Expand Down Expand Up @@ -210,7 +210,7 @@ tSQLt.ApplyConstraint
WHERE class_desc = 'OBJECT_OR_COLUMN'
AND major_id = OBJECT_ID(@schemaName + '.' + @tableName) -- <use tSQLt.private_GetQuotedFullName>
AND minor_id = 0
AND name = 'tSQLt.FakeTable_OrgTableName';
AND name = 'tSQLt.Private_TestDouble_OrgObjectName';

SELECT @cmd = 'CONSTRAINT ' + name + ' CHECK' + definition
FROM sys.check_constraints
Expand Down
33 changes: 24 additions & 9 deletions Source/ApplyConstraint_Methods.sql
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ RETURN
ON newtbl.object_id = p.major_id
AND p.minor_id = 0
AND p.class_desc = 'OBJECT_OR_COLUMN'
AND p.name = 'tSQLt.FakeTable_OrgTableName'
AND p.name = 'tSQLt.Private_TestDouble_OrgObjectName'
ON OBJECT_NAME(constraints.parent_object_id) = CAST(p.value AS NVARCHAR(4000))
AND constraints.schema_id = newtbl.schema_id
AND constraints.object_id = @ConstraintObjectId;
Expand Down Expand Up @@ -70,6 +70,8 @@ CREATE PROCEDURE tSQLt.Private_ApplyCheckConstraint
AS
BEGIN
DECLARE @Cmd NVARCHAR(MAX);
DECLARE @NewNameOfOriginalConstraint NVARCHAR(MAX);
DECLARE @QuotedFullConstraintName NVARCHAR(MAX);
SELECT @Cmd = 'CONSTRAINT ' + QUOTENAME(name) + ' CHECK' + definition
FROM sys.check_constraints
WHERE object_id = @ConstraintObjectId;
Expand All @@ -78,13 +80,16 @@ BEGIN

SELECT @QuotedTableName = QuotedTableName FROM tSQLt.Private_GetQuotedTableNameForConstraint(@ConstraintObjectId);

EXEC tSQLt.Private_RenameObjectToUniqueNameUsingObjectId @ConstraintObjectId;
SELECT @Cmd = 'ALTER TABLE ' + @QuotedTableName + ' ADD ' + @Cmd
SELECT @Cmd = 'ALTER TABLE ' + @QuotedTableName + ' ADD ' + @Cmd,
@QuotedFullConstraintName = QUOTENAME(SCHEMA_NAME(schema_id))+'.'+QUOTENAME(name)
FROM sys.objects
WHERE object_id = @ConstraintObjectId;

EXEC tSQLt.Private_RenameObjectToUniqueNameUsingObjectId @ConstraintObjectId, @NewName = @NewNameOfOriginalConstraint OUT;

EXEC (@Cmd);

EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @QuotedFullConstraintName, @ObjectType = 'CONSTRAINT', @NewNameOfOriginalObject = @NewNameOfOriginalConstraint;
END;
GO

Expand All @@ -101,11 +106,15 @@ BEGIN
DECLARE @AlterTableCmd NVARCHAR(MAX);
DECLARE @CreateIndexCmd NVARCHAR(MAX);
DECLARE @FinalCmd NVARCHAR(MAX);
DECLARE @NewNameOfOriginalConstraint NVARCHAR(MAX);
DECLARE @QuotedFullConstraintName NVARCHAR(MAX);


SELECT @SchemaName = SchemaName,
@OrgTableName = OrgTableName,
@TableName = TableName,
@ConstraintName = OBJECT_NAME(@ConstraintObjectId)
@ConstraintName = OBJECT_NAME(@ConstraintObjectId),
@QuotedFullConstraintName = QUOTENAME(SchemaName)+'.'+QUOTENAME(OBJECT_NAME(@ConstraintObjectId))
FROM tSQLt.Private_GetQuotedTableNameForConstraint(@ConstraintObjectId);

SELECT @CreateFkCmd = cmd, @CreateIndexCmd = CreIdxCmd
Expand All @@ -114,8 +123,11 @@ BEGIN
' ADD ' + @CreateFkCmd;
SELECT @FinalCmd = @CreateIndexCmd + @AlterTableCmd;

EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName;
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName, @NewName = @NewNameOfOriginalConstraint OUTPUT;
EXEC (@FinalCmd);

EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @QuotedFullConstraintName, @ObjectType = 'CONSTRAINT', @NewNameOfOriginalObject = @NewNameOfOriginalConstraint;

END;
GO

Expand All @@ -124,25 +136,28 @@ CREATE PROCEDURE tSQLt.Private_ApplyUniqueConstraint
AS
BEGIN
DECLARE @SchemaName NVARCHAR(MAX);
DECLARE @OrgTableName NVARCHAR(MAX);
DECLARE @TableName NVARCHAR(MAX);
DECLARE @ConstraintName NVARCHAR(MAX);
DECLARE @CreateConstraintCmd NVARCHAR(MAX);
DECLARE @AlterColumnsCmd NVARCHAR(MAX);
DECLARE @NewNameOfOriginalConstraint NVARCHAR(MAX);
DECLARE @QuotedFullConstraintName NVARCHAR(MAX);

SELECT @SchemaName = SchemaName,
@OrgTableName = OrgTableName,
@TableName = TableName,
@ConstraintName = OBJECT_NAME(@ConstraintObjectId)
@ConstraintName = OBJECT_NAME(@ConstraintObjectId),
@QuotedFullConstraintName = QUOTENAME(SchemaName)+'.'+QUOTENAME(OBJECT_NAME(@ConstraintObjectId))
FROM tSQLt.Private_GetQuotedTableNameForConstraint(@ConstraintObjectId);

SELECT @AlterColumnsCmd = NotNullColumnCmd,
@CreateConstraintCmd = CreateConstraintCmd
FROM tSQLt.Private_GetUniqueConstraintDefinition(@ConstraintObjectId, QUOTENAME(@SchemaName) + '.' + QUOTENAME(@TableName));

EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName;
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName, @NewName = @NewNameOfOriginalConstraint OUTPUT;
EXEC (@AlterColumnsCmd);
EXEC (@CreateConstraintCmd);

EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @QuotedFullConstraintName, @ObjectType = 'CONSTRAINT', @NewNameOfOriginalObject = @NewNameOfOriginalConstraint;
END;
GO

Expand Down
2 changes: 1 addition & 1 deletion Source/BuildOrder.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ tSQLt.Private_GetDefaultConstraintDefinition.sfn.sql
tSQLt.Private_GetUniqueConstraintDefinition.sfn.sql
tSQLt.Private_CreateFakeTableStatement.sfn.sql
tSQLt.Private_CreateFakeOfTable.ssp.sql
tSQLt.Private_MarkFakeTable.ssp.sql
tSQLt.Private_MarktSQLtTempObject.ssp.sql
tSQLt.FakeTable.ssp.sql
tSQLt.Private_GenerateCreateProcedureSpyStatement.ssp.sql
tSQLt.Private_CreateProcedureSpy.ssp.sql
Expand Down
5 changes: 2 additions & 3 deletions Source/Source.ssmssqlproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
<SqlWorkbenchSqlProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Source">
<Items>
<LogicalFolder Name="Connections" Type="2" Sorted="true">
<Items />
</LogicalFolder>
<LogicalFolder Name="Queries" Type="0" Sorted="true">
<Items>
Expand Down Expand Up @@ -390,11 +389,11 @@
<AssociatedConnUserName />
<FullPath>tSQLt.Private_ListTestAnnotations.sfn.sql</FullPath>
</FileNode>
<FileNode Name="tSQLt.Private_MarkFakeTable.ssp.sql">
<FileNode Name="tSQLt.Private_MarktSQLtTempObject.ssp.sql">
<AssociatedConnectionMoniker />
<AssociatedConnSrvName />
<AssociatedConnUserName />
<FullPath>tSQLt.Private_MarkFakeTable.ssp.sql</FullPath>
<FullPath>tSQLt.Private_MarktSQLtTempObject.ssp.sql</FullPath>
</FileNode>
<FileNode Name="tSQLt.Private_MarkObjectBeforeRename.ssp.sql">
<AssociatedConnectionMoniker />
Expand Down
6 changes: 5 additions & 1 deletion Source/tSQLt.ApplyTrigger.ssp.sql
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ CREATE PROCEDURE tSQLt.ApplyTrigger
AS
BEGIN
DECLARE @OrgTableObjectId INT;
DECLARE @NewNameOfOriginalTrigger NVARCHAR(MAX);

SELECT @OrgTableObjectId = OrgTableObjectId FROM tSQLt.Private_GetOriginalTableInfo(OBJECT_ID(@TableName)) orgTbl
IF(@OrgTableObjectId IS NULL)
BEGIN
Expand All @@ -28,9 +30,11 @@ BEGIN
RAISERROR('%s is not a trigger on %s', 16, 10, @TriggerName, @TableName);
END;

EXEC tSQLt.RemoveObject @FullTriggerName;
EXEC tSQLt.RemoveObject @ObjectName = @FullTriggerName, @NewName = @NewNameOfOriginalTrigger OUTPUT;

EXEC(@TriggerCode);

EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @FullTriggerName, @ObjectType = N'TRIGGER', @NewNameOfOriginalObject = @NewNameOfOriginalTrigger;
END;
---Build-
GO
Expand Down
10 changes: 9 additions & 1 deletion Source/tSQLt.FakeFunction.ssp.sql
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ BEGIN
DECLARE @FunctionObjectId INT;
DECLARE @FakeFunctionObjectId INT;
DECLARE @IsScalarFunction BIT;
DECLARE @NewNameOfOriginalFunction NVARCHAR(MAX);

EXEC tSQLt.Private_ValidateObjectsCompatibleWithFakeFunction
@FunctionName = @FunctionName,
Expand All @@ -21,7 +22,9 @@ BEGIN
@FakeFunctionObjectId = @FakeFunctionObjectId OUT,
@IsScalarFunction = @IsScalarFunction OUT;

EXEC tSQLt.RemoveObject @ObjectName = @FunctionName;
EXEC tSQLt.RemoveObject
@ObjectName = @FunctionName,
@NewName = @NewNameOfOriginalFunction OUTPUT;

EXEC tSQLt.Private_CreateFakeFunction
@FunctionName = @FunctionName,
Expand All @@ -31,5 +34,10 @@ BEGIN
@FakeFunctionObjectId = @FakeFunctionObjectId,
@IsScalarFunction = @IsScalarFunction;

EXEC tSQLt.Private_MarktSQLtTempObject
@ObjectName = @FunctionName,
@ObjectType = N'FUNCTION',
@NewNameOfOriginalObject = @NewNameOfOriginalFunction;

END;
GO
44 changes: 22 additions & 22 deletions Source/tSQLt.FakeTable.ssp.sql
Original file line number Diff line number Diff line change
Expand Up @@ -9,47 +9,47 @@ CREATE PROCEDURE tSQLt.FakeTable
@Defaults BIT = NULL
AS
BEGIN
DECLARE @OrigSchemaName NVARCHAR(MAX);
DECLARE @OrigTableName NVARCHAR(MAX);
DECLARE @NewNameOfOriginalTable NVARCHAR(4000);
DECLARE @OrigTableFullName NVARCHAR(MAX); SET @OrigTableFullName = NULL;

SELECT @OrigSchemaName = @SchemaName,
@OrigTableName = @TableName

IF(@OrigTableName NOT IN (PARSENAME(@OrigTableName,1),QUOTENAME(PARSENAME(@OrigTableName,1)))
AND @OrigSchemaName IS NOT NULL)
DECLARE @OrigObjectCleanQuotedSchemaName NVARCHAR(MAX);
DECLARE @OrigObjectCleanQuotedName NVARCHAR(MAX);
DECLARE @OrigObjectNewName NVARCHAR(4000);
DECLARE @OrigObjectFullName NVARCHAR(MAX) = NULL;
DECLARE @TargetObjectFullName NVARCHAR(MAX) = NULL;

IF(@TableName NOT IN (PARSENAME(@TableName,1),QUOTENAME(PARSENAME(@TableName,1)))
AND @SchemaName IS NOT NULL)
BEGIN
RAISERROR('When @TableName is a multi-part identifier, @SchemaName must be NULL!',16,10);
END

SELECT @SchemaName = CleanSchemaName,
@TableName = CleanTableName
SELECT @OrigObjectCleanQuotedSchemaName = CleanSchemaName,
@OrigObjectCleanQuotedName = CleanTableName
FROM tSQLt.Private_ResolveFakeTableNamesForBackwardCompatibility(@TableName, @SchemaName);

EXEC tSQLt.Private_ValidateFakeTableParameters @SchemaName,@OrigTableName,@OrigSchemaName;
EXEC tSQLt.Private_ValidateFakeTableParameters @OrigObjectCleanQuotedSchemaName,@TableName,@SchemaName;

SET @OrigObjectFullName = @OrigObjectCleanQuotedSchemaName + '.' + @OrigObjectCleanQuotedName;

EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @TableName, @NewNameOfOriginalTable OUTPUT;
EXEC tSQLt.Private_RenameObjectToUniqueName @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @OrigObjectNewName OUTPUT;

SELECT @OrigTableFullName = S.base_object_name
SELECT @TargetObjectFullName = S.base_object_name
FROM sys.synonyms AS S
WHERE S.object_id = OBJECT_ID(@SchemaName + '.' + @NewNameOfOriginalTable);
WHERE S.object_id = OBJECT_ID(@OrigObjectCleanQuotedSchemaName + '.' + @OrigObjectNewName);

IF(@OrigTableFullName IS NOT NULL)
IF(@TargetObjectFullName IS NOT NULL)
BEGIN
IF(COALESCE(OBJECT_ID(@OrigTableFullName,'U'),OBJECT_ID(@OrigTableFullName,'V')) IS NULL)
IF(COALESCE(OBJECT_ID(@TargetObjectFullName,'U'),OBJECT_ID(@TargetObjectFullName,'V')) IS NULL)
BEGIN
RAISERROR('Cannot fake synonym %s.%s as it is pointing to %s, which is not a table or view!',16,10,@SchemaName,@TableName,@OrigTableFullName);
RAISERROR('Cannot fake synonym %s as it is pointing to %s, which is not a table or view!',16,10,@OrigObjectFullName,@TargetObjectFullName);
END;
END;
ELSE
BEGIN
SET @OrigTableFullName = @SchemaName + '.' + @NewNameOfOriginalTable;
SET @TargetObjectFullName = @OrigObjectCleanQuotedSchemaName + '.' + QUOTENAME(@OrigObjectNewName); --TODO:Test for QUOTENAME
END;

EXEC tSQLt.Private_CreateFakeOfTable @SchemaName, @TableName, @OrigTableFullName, @Identity, @ComputedColumns, @Defaults;
EXEC tSQLt.Private_CreateFakeOfTable @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @TargetObjectFullName, @Identity, @ComputedColumns, @Defaults;

EXEC tSQLt.Private_MarkFakeTable @SchemaName, @TableName, @NewNameOfOriginalTable;
EXEC tSQLt.Private_MarktSQLtTempObject @OrigObjectFullName, N'TABLE', @OrigObjectNewName;
END
---Build-
GO
2 changes: 1 addition & 1 deletion Source/tSQLt.Private_GetForeignKeyDefinition.sfn.sql
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ RETURN SELECT 'CONSTRAINT ' + name + ' FOREIGN KEY (' +
CROSS APPLY tSQLt.Private_GetForeignKeyParColumns(k.object_id) AS parCol
CROSS APPLY tSQLt.Private_GetForeignKeyRefColumns(k.object_id) AS refCol
LEFT JOIN sys.extended_properties e
ON e.name = 'tSQLt.FakeTable_OrgTableName'
ON e.name = 'tSQLt.Private_TestDouble_OrgObjectName'
AND e.value = OBJECT_NAME(k.referenced_object_id)
JOIN sys.tables refTab
ON COALESCE(e.major_id,k.referenced_object_id) = refTab.object_id
Expand Down
20 changes: 0 additions & 20 deletions Source/tSQLt.Private_MarkFakeTable.ssp.sql

This file was deleted.

53 changes: 53 additions & 0 deletions Source/tSQLt.Private_MarktSQLtTempObject.ssp.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
IF OBJECT_ID('tSQLt.Private_MarktSQLtTempObject') IS NOT NULL DROP PROCEDURE tSQLt.Private_MarktSQLtTempObject;
GO
---Build+
CREATE PROCEDURE tSQLt.Private_MarktSQLtTempObject
@ObjectName NVARCHAR(MAX),
@ObjectType NVARCHAR(MAX),
@NewNameOfOriginalObject NVARCHAR(4000)
AS
BEGIN
DECLARE @UnquotedSchemaName NVARCHAR(MAX);
DECLARE @UnquotedObjectName NVARCHAR(MAX);
DECLARE @UnquotedParentName NVARCHAR(MAX);
DECLARE @TempObjectFlagOn BIT = 1;
SELECT
@UnquotedSchemaName = SCHEMA_NAME(O.schema_id),
@UnquotedObjectName = O.name,
@UnquotedParentName = OBJECT_NAME(O.parent_object_id)
FROM sys.objects O
WHERE O.object_id = OBJECT_ID(@ObjectName);

IF(@UnquotedParentName IS NULL)
BEGIN
EXEC sys.sp_addextendedproperty
@name = N'tSQLt.IsTempObject',
@value = @TempObjectFlagOn,
@level0type = N'SCHEMA', @level0name = @UnquotedSchemaName,
@level1type = @ObjectType, @level1name = @UnquotedObjectName;

EXEC sys.sp_addextendedproperty
@name = N'tSQLt.Private_TestDouble_OrgObjectName',
@value = @NewNameOfOriginalObject,
@level0type = N'SCHEMA', @level0name = @UnquotedSchemaName,
@level1type = @ObjectType, @level1name = @UnquotedObjectName;
END;
ELSE
BEGIN
EXEC sys.sp_addextendedproperty
@name = N'tSQLt.IsTempObject',
@value = @TempObjectFlagOn,
@level0type = N'SCHEMA', @level0name = @UnquotedSchemaName,
@level1type = N'TABLE', @level1name = @UnquotedParentName,
@level2type = @ObjectType, @level2name = @UnquotedObjectName;

EXEC sys.sp_addextendedproperty
@name = N'tSQLt.Private_TestDouble_OrgObjectName',
@value = @NewNameOfOriginalObject,
@level0type = N'SCHEMA', @level0name = @UnquotedSchemaName,
@level1type = N'TABLE', @level1name = @UnquotedParentName,
@level2type = @ObjectType, @level2name = @UnquotedObjectName;
END;
END;
---Build-
GO
Loading