• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

惊闻SQL Server可以创建虚拟表名,不知你们有没有听说过?!

日总是我哥 2002-08-19 10:17:25
刚才听一同事说,
他原来看过别人做的ERP系统的数据库中,

其表名有二,一是虚拟表名(它仅仅是在Enterprise中可以查看),但不可以对它操作!
另一是真正的表名,用Enterprise看不见,而Select, Update等语句仍可以用!

不知如何实现!

呵呵,说到这里我又想起了“卖火柴的”了,

等等,我去把那贴从海底给捞起来... :-)
...全文
520 点赞 收藏 57
写回复
57 条回复
日总是我哥 2002年09月02日
刚才跟saucer聊了一会儿~~~
好像直接影响了我些什么...具体是什么,我也说不上来!
----------------------------------------------------------
我把两张贴都结了~~~~~~~~~~~~

有兴趣的朋友也可以继续深入下去。
也可以继续在这里探讨!我也支常来看看...
回复 点赞
CSDNM 2002年09月01日
怎么搞的。
回复 点赞
日总是我哥 2002年09月01日
icevi(按钮工厂) :
  http://expert.csdn.net/Expert/TopicView1.asp?id=983949 中的回复:
///////////////////////////////////////////////////
回复人: saucer(思归) ( ) 信誉:150 2002-08-31 12:06:00 得分:0

I heard the book <<Inside SQL Server 2000>> provides some hints about the data file structure
///////////////////////////////////////////////////

我已经向英雄saucer发出短信息:-)
回复 点赞
wjlsmail 2002年08月31日
:)
回复 点赞
TianHuNan 2002年08月31日
是真是假,值得关注!
回复 点赞
yxsalj 2002年08月31日
mark
回复 点赞
日总是我哥 2002年08月31日

其实
我那个数据库也是昨天下午才搞定的,呵呵:-)

正如,我一开始所说,可以把它的名字改为其它的,以造成假象
索性,我就把它全部清0了,呵呵,看都看不到了,真是好玩...


谢谢按钮JJ ,日后帮我一起“破解mdf, ldf”文件格式吧??!
回复 点赞
日总是我哥 2002年08月31日
to 回复人: icevi(按钮工厂) :

  呵呵:-)
  我今天特地上来看看我这两张贴子!
  佩服呀,2002-8-31 3:25:41??!这个时间你还没睡呀??!!
  看来,也要跟http://expert.csdn.net/Expert/TopicView1.asp?id=984478这里一样,给你一点钱钱花啦^o^
回复 点赞
8992026 2002年08月31日
下来看看!
回复 点赞
freshboy0913 2002年08月31日
搞错没有,SQL数据库中的虚拟表就是指视图呀,各位还在怀疑什么呀 :(
回复 点赞
icevi 2002年08月31日
好消息!!!

知道这个表是怎么回事了:D

我把这个文件下载来研究了一番。确实是企业管理器里看不到表名,但这个表是存在的,用语句也可以操作。而且我用查询分析器出现以下现象:
1、用:
select name,id from sysobjects where xtype='U'
看不到表名

2、用:
select id,name,len(name),datalength(name),cast(name as binary)
from sysobjects
where name='table1'
看得到表名

3、用:
select id,name,len(name),datalength(name),cast(name as binary)
from sysobjects
where id=357576312
也看不到表名

所以觉得数据库文件里可能不一致,有的地方存有表名,有的地方表名被清空了。

所以我在数据库里创建了一个新表table2,打开二进制文件进行查找,发现table2被找到三处,而table1只找到两处。所以有一处被清空了。最后确定了是在偏移地址 0x11646 处被清空了。将这里的连接几位改成"T a b l e 1" 。
改完应该从OX11642开始是:
01 00 3e 00 54 00 61 00 62 00 6c 00 65 00 31 00
再在SQLSERVER里刷新一下(其实中间做了脱机、联机的操作了的),就看到这个表名了。

我觉得这可能与索引的存储有关系。sysobjects建有三个索引,其中sysobjects是按字段id建的是簇集索引。ncsysobjects按字段name+id,非簇集索引。
我觉得这个被改的地方是簇集索引所在的地方。
所以上面第一个SQL语句在查询时会用簇集索引sysobjects来得到name值,所以是空的。
第二个SQL语句因为WHERE后用NAME做条件,所以会用到索引ncsysobjects,这个索引的键值是正常的,所以能得到name值。
第三个SQL语句WHERE后是用ID做条件,所在也是用sysobjects这个索引来取值,所以也是空的。

在查询分析器里显示所有表估计也是用第一个SQL语句那样的,所以是看不到表名了。
回复 点赞
icevi 2002年08月31日
CoolSlob() :
有没有分无所谓了。只是觉得挺好玩的:)

其实昨晚一直在玩游戏,2点多才开始搞这个东东:P

以前玩游戏作弊,也是差不多这种做法的,呵呵.......

很乐意一起研究...当然如果能找到资料直接告诉我们这个文件格式就太好了,这样自己找法,好痛苦啊~~

回复 点赞
日总是我哥 2002年08月30日
to 回复人: N_chow(一劍飄香):

是啊,还需努力呀:-)
还需帮忙呀:-)
回复 点赞
N_chow 2002年08月30日
這應該不算是虛擬吧??
雖然在EM中看不到表名,可在SQL Query Analzyer的Object Browser中一樣可以看到table1及它的欄位名字啊。
回复 点赞
日总是我哥 2002年08月30日

也不知道我对“虚拟表”这一概念是不是定义错了
但愿没有误导大家:(

回复 点赞
日总是我哥 2002年08月30日
http://CoolSlob.8u8.com/Download/crack1

上面的是一个数据库!SQL Server 2000格式!

其中有一个表为Table1,而在Enterprise中却看不到:-)

但你仍可以在查询分析器做任何操作,如:
Select * From Table1
Insert Table1 ....
Update Table1 ....等待!

不要问我这样做有什么好处...

谢谢关注!
相关链接:http://www.csdn.net/expert/topic/983/983949.xml
回复 点赞
日总是我哥 2002年08月26日

或许,我称呼的“虚拟表”是错误的!
或许,它根本不叫“虚拟表”

大家为什么总在“虚拟表”上找问题呢??!
回复 点赞
zqllyh 2002年08月25日
还没结果吗?我在帮助里查,看到不少这样的语句:视图也称为虚拟表,
所以我还是认为是视图。
学习。。。
回复 点赞
weixy 2002年08月24日
CREATE VIEW
创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据。CREATE VIEW 必须是查询批处理中的第一条语句。
SQL 视图
视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。

回复 点赞
日总是我哥 2002年08月24日
好啊好啊

你也迷茫
我们就有伴了!!

强烈建议:把 "口气不小" -> "我心迷茫"
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告