首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • [向zjcxc提问]高分求解!如何修改表、存储过程和视图的创建过程?
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • evafly920
    • 等级:
    发表于:2008-05-11 20:57:22 楼主
    高分求解!如何修改表、存储过程和视图的创建过程?

    现在有一个数据库,里面有很多表、视图和存储过程,创建时间2004到2008不等,如何使用存储过程,批量一次性把创建日期修改为当前任意日期.

    注意,是批量修改,不是一次只修改一个


    谢谢!
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:05:251楼 得分:0
    update sysobjects
    set crdate = getdate(), refdate = getdate()
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dawugui
    • 等级:
    发表于:2008-05-11 22:39:412楼 得分:0
    引用楼主 evafly920 的帖子:
    高分求解!如何修改表、存储过程和视图的创建过程?

    现在有一个数据库,里面有很多表、视图和存储过程,创建时间2004到2008不等,如何使用存储过程,批量一次性把创建日期修改为当前任意日期.

    注意,是批量修改,不是一次只修改一个


    谢谢!

    这些东西是放在系统表sysobjects中,字段为crdate,类型为datetime,原则上不允许修改.
    查询方法如下:

    SQL code
    select name , xtype , crdate from sysobjects where xtype = 'U' or xtype = 'V' or xtype = 'P' order by name


    详细信息如下:

    SQL code
    2)、sysobjects(记录数据库对象的相关信息,在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。) 列名 数据类型 描述 name sysname 对象名。 Id int 对象标识号。 xtype char(2) 对象类型。可以是下列对象类型中的一种: C = CHECK 约束 D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 IF = 内嵌表函数 P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) V = 视图 X = 扩展存储过程 uid smallint 所有者对象的用户 ID。 info smallint 保留。仅限内部使用。 status int 保留。仅限内部使用。 base_schema_ver int 保留。仅限内部使用。 replinfo int 保留。供复制使用。 parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。 crdate datetime 对象的创建日期。 ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。 schema_ver int 版本号,该版本号在每次表的架构更改时都增加。 stats_schema_ver int 保留。仅限内部使用。 type char(2) 对象类型。可以是下列值之一: C = CHECK 约束 D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 FN = 标量函数 IF = 内嵌表函数 K = PRIMARY KEYUNIQUE 约束 L = 日志 P = 存储过程 R = 规则 RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR = 触发器 U = 用户表 V = 视图 X = 扩展存储过程 userstat smallint 保留。 sysstat smallint 内部状态信息。 indexdel smallint 保留。 refdate datetime 留作以后使用。 version int 留作以后使用。 deltrig int 保留。 instrig int 保留。 updtrig int 保留。 seltrig int 保留。 category int 用于发布、约束和标识。 cache smallint 保留。 --查询数据库中的用户表名称 select name from sysobjects where xtype = 'U' order by name /* name -------- authors discounts jobs pub_info publishers roysched sales stores Table1 Table2 titleauthor titles (所影响的行数为 12 行) */ --查询数据库中的视图名称 select name from sysobjects where xtype = 'V' order by name /* name -------------- sysconstraints syssegments titleview (所影响的行数为 3 行) */


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:44:233楼 得分:0
    引用楼主 evafly920 的帖子:
    高分求解!如何修改表、存储过程和视图的创建过程?
    现在有一个数据库,里面有很多表、视图和存储过程,创建时间2004到2008不等,如何使用存储过程,批量一次性把创建日期修改为当前任意日期.
    注意,是批量修改,不是一次只修改一个
    谢谢!

    修改这个时间很重要么?
    这个需求貌似怪怪的,
    一般情况下是不允许修改的,
    除非你导出脚本删除后全部重建,那就是全部都是当前的日期了.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:47:414楼 得分:0
    05中修改系统表会报错,2000不知道 :(
    SQL code
    update sys.objects set create_date =getdate(), modify_date =getdate() where name ='calculateprice' and type ='P' /* Msg 259, Level 16, State 1, Line 1 Ad hoc updates to system catalogs are not allowed. */
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 04:25:355楼 得分:0
    这个要改系统表才行了
    2000 要启动 allow updates 选项才能改
    2005 很麻烦, 要进入到单用户+管理员模式才能更新
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 04:26:146楼 得分:0
    不过因为要改系统表, 所以没有十分必要的话, 还是不要动的好
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved