将当前数据库中所有表的smalldatetime 列改为nvarchar(20)

原创 2008年11月07日 11:30:00

-- 将当前数据库中, 所有表的smalldatetime 列改为nvarchar(20)

-- 如果列上有索引/默认值之类的依赖项, 则无法修改

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)

'

相关文章推荐

char,varchar,nvarchar以及datetime和smalldatetime的区别

char,varchar,nvarchar的区别 datetime和smalldatetime的区别 ,这个版比较简单但很实用, char,varchar,nvarchar的区别 平时的ASCII...

将一个数据库中所有表的数据全部删除的命令

其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSF...

Quartz将Job保存在数据库中所需表的说明

http://blog.iqbon.com/doc/364.html   (将Quartz持久化到数据库的做法) QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 ...

查询一个数据库中所有表的大小并排序

select * from (select t1.owner, t1.table_name, round(t1.table_size / 1024 / 1024) + round(nv...

vb 列出SQL SERVER数据库中所有表及字段信息

vb 列出SQL SERVER数据库中所有表及字段信息【转】   2010-05-06 09:28:24|  分类: 默认分类 |  标签: |字号大中小 订阅 ...

给数据库中所有表都加上同一字段字段

eg.//给所有表都加上companyId字段 String query = "select name from sqlite_master"; Cursor cursor = db.rawQuer...

获取Sqlserver数据库中所有库、表、字段名的方法

1.获取所有数据库名: SELECT Name from Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name from Databa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将当前数据库中所有表的smalldatetime 列改为nvarchar(20)
举报原因:
原因补充:

(最多只允许输入30个字)