在sql server 2008中建立数据对象(表、视图、存储过程、函数),可以通过sys.objects获取它们的ID,以便用ID来调用它们,但是发现表结构改变后(向表中间添加新字段),ID会变化,如果是删除或者添加在表的末尾,ID就不会改变。
目前我想在数据对象一建立后,获得固定的ID,即便以后表结构有所变化,ID也不便,有方法实现吗?

解决方案 »

  1.   

    为什么要记住ID?为什么不直接记住对象名?
    如果像你说的,一修改结构,ID就变了,那你去记它干吗?
    调用这些对象都是直接使用名称就是了,用ID干吗?
    实在不行你可以这样:select * from dbo.sysobjects where id = object_id(N'[架构名].[对象名]')
      

  2.   

    object_id()这个函数就可以了,你说的那个ID是系统内部管理的,所以不要去干预
      

  3.   

    http://topic.csdn.net/u/20121031/18/f7328c3c-2f05-4f11-a6cc-3c3143f900ff.html同时帮忙看看这个问题
      

  4.   


    谢谢大家,我先回答2楼的问题:
    我们之所以没有直接调用数据对象,而采用代码是因为根据公司内部管理流程的需求,我们对每个流程用到了哪些表和视图进行统计和管理,所以就直接抓了它们的id代码,目前是想实现即便修改了表和视图的名字或者结构,而id不变,方便管理。
    由于数据库内的系统视图sys.objects的id是无法固定的,后来我自己写了一个函数通过规则把表名或视图名转换成数字。
      

  5.   

    #3 楼
    你说的object_id 和我说的id是同一个,
    都是系统自带的,而且不是固定的。
    表结构一改变,id就会变的。