將當前數據庫中所有表的smalldatetime 列改爲nvarchar(20)

-- 將當前數據庫中, 所有表的smalldatetime 列改爲nvarchar(20)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

-- 如果列上有索引/默認值之類的依賴項, 則無法修改

EXEC sp_msforeachtable

    @command1 = N'

DECLARE CUR CURSOR LOCAL

FOR

SELECT

    N''ALTER TABLE ? ALTER COLUMN ''

       + QUOTENAME(C.name)

       + N''nvarchar(20)''

FROM syscolumns C, systypes T

WHERE C.xusertype = T.xusertype

    AND T.name = ''smalldatetime''

    AND C.id = OBJECT_ID(N''?'')

OPEN CUR

DECLARE @s nvarchar(4000)

FETCH CUR INTO @s

WHILE @@FETCH_STATUS = 0

BEGIN

    PRINT(@s)

    EXEC(@s)

    FETCH CUR INTO @s

END

CLOSE CUR

DEALLOCATE CUR

',

    @whereand = N'

       AND EXISTS(

              SELECT * FROM syscolumns C, systypes T

              WHERE C.xusertype = T.xusertype

                  AND T.name = ''smalldatetime''

                  AND C.id = O.id)

'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章