日期:2014-05-17  浏览次数:20751 次

sql server 对象获取ID问题
在sql server 2008中建立数据对象(表、视图、存储过程、函数),可以通过sys.objects获取它们的ID,以便用ID来调用它们,但是发现表结构改变后(向表中间添加新字段),ID会变化,如果是删除或者添加在表的末尾,ID就不会改变。
目前我想在数据对象一建立后,获得固定的ID,即便以后表结构有所变化,ID也不便,有方法实现吗?
------最佳解决方案--------------------
为什么要记住ID?为什么不直接记住对象名?
如果像你说的,一修改结构,ID就变了,那你去记它干吗?
调用这些对象都是直接使用名称就是了,用ID干吗?
实在不行你可以这样:

select * from dbo.sysobjects where id = object_id(N'[架构名].[对象名]')

------其他解决方案--------------------
object_id()这个函数就可以了,你说的那个ID是系统内部管理的,所以不要去干预
------其他解决方案--------------------
先观光一下,
------其他解决方案--------------------
http://topic.csdn.net/u/20121031/18/f7328c3c-2f05-4f11-a6cc-3c3143f900ff.html同时帮忙看看这个问题
------其他解决方案--------------------

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