From afee57c47969c33b8cdee51196cea16a4c62765b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Doma=C5=84ski?= Date: Wed, 24 Jun 2026 10:32:58 +0000 Subject: [PATCH] Jun 24, 2026, 12:32 PM --- Part3.sql | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/Part3.sql b/Part3.sql index d0bbcf0..9e3b6fa 100644 --- a/Part3.sql +++ b/Part3.sql @@ -32,12 +32,6 @@ DECLARE @IsNullable BIT; -- track nullability DECLARE colCur CURSOR LOCAL FAST_FORWARD FOR SELECT DISTINCT - PARSENAME(ObjectName, 2) AS SchemaName, - PARSENAME(ObjectName, 1) AS TableName, - ColumnName, - ColumnDataType - FROM DBO.TEMP2 - WHERE ObjectType = 'TABLE'; PARSENAME(TMP.ObjectName, 2) AS SchemaName, PARSENAME(TMP.ObjectName, 1) AS TableName, TMP.ColumnName, @@ -50,30 +44,12 @@ DECLARE colCur CURSOR LOCAL FAST_FORWARD FOR WHERE TMP.ObjectType = 'TABLE'; OPEN colCur; -FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType; FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType, @IsNullable; WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRY - -- ==================================================== - -- ? Check if column is currently NOT NULL - -- so we can preserve it after datatype change - -- If original was NOT NULL ? keep NOT NULL - -- If original was NULL ? keep NULL - -- Without this PK columns become nullable - -- and PK recreation fails - -- ==================================================== - SELECT @IsNullable = c.is_nullable - FROM sys.columns c - JOIN sys.tables t - ON t.object_id = c.object_id - JOIN sys.schemas s - ON s.schema_id = t.schema_id - WHERE s.name = @Schema - AND t.name = @Table - AND c.name = @Column; -- Nullability is now pre-fetched directly in the cursor declaration. -- Preserving NOT NULL so PK columns do not become nullable. @@ -123,7 +99,6 @@ BEGIN --THROW; END CATCH - FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType; FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType, @IsNullable; END @@ -140,9 +115,6 @@ PRINT '--- RECREATING SCHEMA-BOUND VIEWS ---'; DECLARE @CreateSQL2 NVARCHAR(MAX); DECLARE @OBJNAME NVARCHAR(MAX) -DECLARE curCreate1 CURSOR FAST_FORWARD FOR - SELECT createscript, ViewFullName - FROM SchemaBoundViews ; DECLARE curCreate1 CURSOR LOCAL FAST_FORWARD FOR SELECT REPLACE( @@ -165,14 +137,6 @@ BEGIN begin try PRINT 'Creating view:'; - SET @CreateSQL2 = SUBSTRING( - @CreateSQL2, - CHARINDEX('CREATE VIEW', UPPER(@CreateSQL2)), - LEN(@CreateSQL2) - ); - - -- ? Convert to CREATE OR ALTER so it works whether view exists or not - SET @CreateSQL2 = REPLACE(@CreateSQL2, 'CREATE VIEW', 'CREATE OR ALTER VIEW'); PRINT '--- RECREATING SCHEMA-BOUND VIEWS ---'; IF @DryRun = 1 @@ -209,4 +173,3 @@ END CLOSE curCreate1; DEALLOCATE curCreate1; -