-- 将当前数据库中, 所有表的smalldatetime 列改为nvarchar(20)<!----><o:p></o:p>
-- 如果列上有索引/默认值之类的依赖项, 则无法修改<o:p></o:p>
EXEC sp_msforeachtable<o:p></o:p>
@command1 = N'<o:p></o:p>
DECLARE CUR CURSOR LOCAL<o:p></o:p>
FOR<o:p></o:p>
SELECT <o:p></o:p>
N''ALTER TABLE ? ALTER COLUMN ''<o:p></o:p>
+ QUOTENAME(C.name)<o:p></o:p>
+ N''nvarchar(20)''<o:p></o:p>
FROM syscolumns C, systypes T<o:p></o:p>
WHERE C.xusertype = T.xusertype<o:p></o:p>
AND T.name = ''smalldatetime''<o:p></o:p>
AND C.id = OBJECT_ID(N''?'')<o:p></o:p>
OPEN CUR<o:p></o:p>
DECLARE @s nvarchar(4000)<o:p></o:p>
FETCH CUR INTO @s<o:p></o:p>
WHILE @@FETCH_STATUS = 0<o:p></o:p>
BEGIN<o:p></o:p>
PRINT(@s)<o:p></o:p>
EXEC(@s)<o:p></o:p>
FETCH CUR INTO @s<o:p></o:p>
END<o:p></o:p>
CLOSE CUR<o:p></o:p>
DEALLOCATE CUR<o:p></o:p>
',<o:p></o:p>
@whereand = N'<o:p></o:p>
AND EXISTS(<o:p></o:p>
SELECT * FROM syscolumns C, systypes T<o:p></o:p>
WHERE C.xusertype = T.xusertype<o:p></o:p>
AND T.name = ''smalldatetime''<o:p></o:p>
AND C.id = O.id)<o:p></o:p>
'