AJM*_*AJM 2 sql datetime datetimeoffset sql-server-2008
时间到了我正在将SQL Server中的DateTime字段迁移到DateTimeOffset的应用程序中。
想知道SQL Server中是否有任何自动化工具可以帮助我解决这个问题,因此我不需要编写一堆alter table语句的脚本?
SQL Server本身没有此类工具,但是有第三方工具来包装数据库的管理任务并为您生成更改脚本。
在没有第三方工具的情况下,您可以编写一个脚本,该脚本将为您生成更改脚本。
这是一个示例脚本,该脚本查找datatime类型的所有列并生成脚本以将其更改为DateTimeOffset数据类型。
select
OBJECT_NAME (a.object_id) as Table_Name
,a.name as Colimn_Name
,b.name as Old_Datatype
,'ALTER TABLE ' + OBJECT_NAME (a.object_id) + ' ALTER COLUMN ' + a.name + ' DATETIMEOFFSET ' +
CASE a.is_nullable
when 1 then ' NULL '
else ' NOT NULL '
END
from sys.columns a
join sys.types b on a.user_type_id = b.user_type_id
join sys.tables c on a.object_id = c.object_id
where b.name = 'datetime'
and c.type = 'U'
Run Code Online (Sandbox Code Playgroud)
您也可以使用未记录的sp_msForEachTable代码为数据库中的每个表执行代码。