Skip to content

Instantly share code, notes, and snippets.

@cphillips83
Last active March 9, 2023 21:22
Show Gist options
  • Save cphillips83/01ff11158f58dd6ef4139d58962c0f8d to your computer and use it in GitHub Desktop.
Save cphillips83/01ff11158f58dd6ef4139d58962c0f8d to your computer and use it in GitHub Desktop.
DECLARE @CurrentDataType VARCHAR(max)
DECLARE @DataTypeToChange VARCHAR(max)
DECLARE @SQLQUERY nvarchar(max)
SET @CurrentDataType = 'text' ---CHANGE HERE !!
SET @DataTypeToChange = 'nvarchar(max)' ---CHANGE HERE !!
DECLARE MY_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT ('alter table ' + OBJECT_SCHEMA_NAME(T.[object_id], DB_ID()) + '.' + T.[name] + ' alter column ' + C.[name] + ' ' + @DataTypeToChange + ' ' + CASE
WHEN C.[is_nullable] = 0
THEN 'not null '
ELSE 'null '
END) as SQLQUERY
FROM sys.[tables] AS T
INNER JOIN sys.[all_columns] C ON T.[object_id] = C.[object_id]
INNER JOIN sys.[types] DTY ON C.[system_type_id] = DTY.[system_type_id]
AND C.[user_type_id] = DTY.[user_type_id]
WHERE T.[is_ms_shipped] = 0
AND DTY.NAME = '' + @CurrentDataType + ''
ORDER BY T.[name]
,C.[column_id]
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @SQLQUERY
WHILE @@FETCH_STATUS = 0
BEGIN
--Do something with Id here
PRINT @SQLQUERY
EXECUTE sp_executesql @SQLQUERY
FETCH NEXT FROM MY_CURSOR INTO @SQLQUERY
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
GO
DECLARE @CurrentDataType VARCHAR(max)
DECLARE @DataTypeToChange VARCHAR(max)
DECLARE @SQLQUERY nvarchar(max)
SET @CurrentDataType = 'ntext' ---CHANGE HERE !!
SET @DataTypeToChange = 'nvarchar(max)' ---CHANGE HERE !!
DECLARE MY_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT ('alter table ' + OBJECT_SCHEMA_NAME(T.[object_id], DB_ID()) + '.' + T.[name] + ' alter column ' + C.[name] + ' ' + @DataTypeToChange + ' ' + CASE
WHEN C.[is_nullable] = 0
THEN 'not null '
ELSE 'null '
END) as SQLQUERY
FROM sys.[tables] AS T
INNER JOIN sys.[all_columns] C ON T.[object_id] = C.[object_id]
INNER JOIN sys.[types] DTY ON C.[system_type_id] = DTY.[system_type_id]
AND C.[user_type_id] = DTY.[user_type_id]
WHERE T.[is_ms_shipped] = 0
AND DTY.NAME = '' + @CurrentDataType + ''
ORDER BY T.[name]
,C.[column_id]
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @SQLQUERY
WHILE @@FETCH_STATUS = 0
BEGIN
--Do something with Id here
PRINT @SQLQUERY
EXECUTE sp_executesql @SQLQUERY
FETCH NEXT FROM MY_CURSOR INTO @SQLQUERY
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment