灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:4526回复:0

[SQL Server]对MSSQL数据库的判断与其特征

楼主#
更多 发布于:2011-11-30 12:19
由于我们现在是IIS+ASP+ACCESS环境,所以需要点击虚拟机的快照管理选择IIS+ASP+MSSQL2000进入构造mssql环境

图片:60_3710_ad6f00b017acb03.jpg


 
 
载入后点击开始-Microsoft SQL Server-企业管理器来创建数据库

图片:60_3710_776c34ab8278afb.jpg


 
 
在控制台根目录中展开数据库分组(如果写有无项目,那么点击SQL Server 组右键新建SQL Server注册完成注册向导载入当前启动数据库服务)。在数据库目录右键新建数据库,就会弹出数据库属性的windows窗体,修改名称为test点击确定就完成了数据库的创建。

图片:60_3710_dbc66a68e80283a.jpg


 
 
然后继续选择新建的数据库中的“表”右键新建表,创建2.2.1.1所展示的数据结构的数据库。

图片:60_3710_0b4d1cc4073f11c.jpg


 
 
Sql.asp不用修改直接复制到web目录下即可。Conn.asp为如下代码:
<%
Set conn = Server.CreateObject("ADODB.Connection")
'这里user id Mssql用户名,passswordMssql密码,Initial Catalog为数据库名称,Data Source是数据库所在服务器,因为我们是在本机搭建所以可以用(local)也可以用127.0.0.1,如果在其他服务器上搭建输入服务器的ip即可
conn.open "Provider = Sqloledb;User ID =sa; Password =sa;Initial Catalog =test;Data Source =(local);"
%>
  通过错误页面判断:

图片:60_3710_c4074d42ba7f51a.jpg


 
 
通过加入“'”使SQL语句出现错误导致会返回Microsoft OLE DB Provider for SQL Server错误信息(在未做容错的情况下),这里跟上面的access类似,他提示错误出现在SQL Server上,这就已经表名了是MSSQL数据库了。
 通过查询判断:
在上节我们已经讲述了用ASP的容错语句容错,导致错误信息不会被客户端显示。而在这节我们利用iis本身自带的“脚本错误的错误信息”来返回错误提示,实现与容错一样的效果。
iis中选择网站右键单击属性,在主目录中单击“配置”在弹出的“应用程序配置”对话框中选择“调试”标签,我们会发现“调试”内有想客户端发送错误消息的选项,选择第二个“向客户端发送下列文本错误信息”。

图片:60_3710_014e15aa8f63ada.jpg


 
 
直接在网站URL中加入“’”使其产生错误,会发现并不会产生暴错信息,而是返回我们定义的“处理 URL 时服务器出错。请与系统管理员联系”。

图片:60_3710_c93710bc54e4a75.jpg


 
 
这时我们可以利用两种方式来进行判断:

图片:60_3710_36e79075286867b.jpg


 
第一种也是最常用的默认数据库表判断,SQL server也有很多默认表。
 
这时就可以利用and exists (select * from sysobjects)来判断是否存在表,当存在则正确返回,因为这里与access不一样mssql数据库的表是可以访问的。

图片:60_3710_bc7b0fc397f6dfe.jpg


 
返回正确就可以判断是sql server数据库。
第二种是利用注解来判断,sql server的注解是“--”,在某些数据库中并不适用此注解,所以我们可以利用此注解加入到URL结尾,当数据库是sql server时查询语句会因为注解执行而不会产生错误(这里根据查询语句的不同会产生不同的结果所以不是那么准确),而其他数据库中会因为“--”未定义导致语句产生错误。

图片:60_3710_fa9c5b9b2c232aa.jpg



喜欢0 评分0
游客

返回顶部