为什么一段时间后sa的密码会自动失效?

OnDraw 2003-01-24 10:59:02
我在sqlserver登陆里面重新设置了密码,为什么运行一段时间后(有时几天,有时9几小时)sa的密码会自动失效?
...全文
222 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nik_Amis 2003-01-24
  • 打赏
  • 举报
回复
up
流星尔 2003-01-24
  • 打赏
  • 举报
回复
不大可能的。应该是其他原因
CrazyFor 2003-01-24
  • 打赏
  • 举报
回复
自己找你的程序是不是有类似的脚本,检查所有在你的密码被改掉的时间中运行的程序。
pengdali 2003-01-24
  • 打赏
  • 举报
回复
EXEC sp_password NULL,'新密码', 'sa'

是不是有病毒!
OnDraw 2003-01-24
  • 打赏
  • 举报
回复
to:CrazyFor(蚂蚁)
不好意思,脚本在哪能看到?
CrazyFor 2003-01-24
  • 打赏
  • 举报
回复
检查你的脚本中是不是有
EXEC sp_password NULL, '', 'sa'
OnDraw 2003-01-24
  • 打赏
  • 举报
回复
真的,特别是我用ADO对SQL进行操作时,会更加频繁,程序中的连接语句如下
CString strConnection=_T("Driver={SQL Server};Server=192.168.2.80;Trusted_Connection=no;"
"Database=MyDataBase;Uid=sa;Pwd=mypassword;");
pengdali 2003-01-24
  • 打赏
  • 举报
回复
不会吧!
chenchangfu 2003-01-24
  • 打赏
  • 举报
回复
听说有几种病毒钻门攻击SQL SERVER 的
看看有没有病毒
仿世纪佳缘婚介交友系统5.3 ASP+SQL Nslove5使用手册 一、运行环境: 1、服务器要求:windows2000及更高系统版本,IIS5+以上! 2、组件要求:Jmail邮件组件、aspjpeg水印组件、上传组件(aspupload组件)、FSO读写权限(IIS_IUSRS,IUSR帐号读写)、ADODB.Stream组件。一般的虚拟主机都有这些组件,如果是本地调试必须先检查一下IIS的设置环境,并安装上面前三个组件,组件下载地址见本文附录。 3、数据库:SQL2000+以上!初始安装大约35Mb左右,完善支持SQL2005/2008! 4、空间大小:初始安装大于200Mb,随着员数量增多,空间及数据库要求逐渐增大! 5、IIS创建网站最好创建独立应用池,以提高程序运行速度! 二、网站搭建: 1、要求系统安装IIS即Internet 信息服务(IIS),XP(2003)系统是在控制面板——添加删除组件中添加! 2008、vista、win7是在控制面板——程序——打开或关闭windows功能中添加 2、启动IIS(以IIS6.0+为例),在网站新添加一个网站,设置正确物理路径确定保存。 3、其它详细设置可以参考:http://www.nslove.net/dispbbs.php?boardid=4&id=1023 4、如何登录Nslove系统后台: (1)前台入口:login.asp登录方式: 用户:info@nslove.com 密码:123456 (2)后台入口:admin_login.asp登录方式: 前台用户名:nslove 密码:123456 如果login.asp前台有管理员登录过,那么上面前台帐号不显示。 后台用户:nslove 密码:123456 注意:后台所有生成操作都需要前台login.asp管理员登录! 三、程序使用: (一)常规管理: 1、系统设置(程序文件:setting.asp)   程序运行是否稳定、安全关键是后台系统设置。系统设置项分成几大类:[基本设置]、[网站信息]、[安全设置]、[用户选项设置]、[邮件选项设置]、[注册选项设置]、[系统选项设置]、[上传选项设置]、[验证码设置]、[官方通讯设置]、[服务升级设置]、[支持接口设置]   (1)基本设置:有模板缓存开关、系统定时开关等项,这里[缓存模板句柄]比较重要。如果IIS可以创建独立应用池,那么这里的缓存模板句柄可以自己加入其它模板名,提高程序运行速度!例如:日记模板名为:diary(其它模板名见附录2),加到句柄为:index|main|list|diary。也就是加“|”分隔符再加模板名。至于定时设置等其它几项根据项目底下说明,就可以很好设置。   (2)网站信息:这里设置一些前台显示底部版权信息、客服联系方式等。网站关键词、及描述关键到被网络搜索引擎(SEO)检索量,所以好的关键词及描述,往往可以提高浏览量。这里需要注意[客服联系邮箱]必须设置与邮件选项设置中的SMTP登录帐号一样的邮箱地址,否则发送邮件可能出错。   (3)安全设置:这些涉及到网站安全主要有后台管理目录、入口。如何修改默认目录及入口呢?先在这里修改目录及入口名称提交保存,然后到网站目录中把admin重命名,及admin_login.asp重命名,与刚刚设置名称要相同。其它项可以默认使用即可!   (4)用户选项设置: <1>、一天可以取几次密码即为用户密码丢失或者遗忘,可以通过前台找回密码找回,但不是无限制的取回,通过这里可以设置次数; <2>、登录时显示注册步骤即当用户未完成所有注册步骤时,在用户登录时提示步骤未完成,并指出是哪个步骤提供给用户继续完成。 <3>、登录每次赠送金币,员每天登录赠送金币数,系统设计一天只能赠送一次。   (5)邮件选项设置: <1>、邮件组件选择(不支持、JMAIL、CDONTS、ASPEMAIL),一般虚拟主机都是安装Jmail组件。用鼠标选择下拉菜单相应提示空间是否支持该组件。 <2>、SMTP邮件发送服务器如mail.nslove.com或者smtp.163.com等,但遗憾的是现在免费邮箱基本不支持smtp,最好用自己空间赠送的企业邮局做发送服务器。 <3>、SMTP登录帐号,需要完整的邮件地址,必须与客服联系邮箱相一致。 <4>、SMTP登录密码,即邮箱登录密码   (6)注册选项设置: <1>、唯一性开关,这里选择邮箱。即当用户提交帐号注册时,以该项为检查是否被占用,防止同一个帐号多个用户。 <2>、发送激活代码必须在发送注册邮件开启状态下才有效,系统在用户注册时发送一串16位密码,用户只要登录邮箱,然后点击链接激活,即可激活邮箱地址及用户帐号。 <3>、是否必须激活,如果关闭,那么用户不需要激活邮箱,即可成为审核状态用户。 <4>、昵称只允许英文字符,开启时系统不允许注册除英文字母之外的任何用户名。 <5>、新注册用户必须审核,关闭时系统自动审核通过用户,无须管理员手工审核通过。 <6>、限制注册邮件地址及注册过滤字符,限制帐号中含有邮件邮件及过滤昵称字符。比如要过滤所有用户名中有带:xxx小龙女xxx这样的用户,可以在注册过滤字符中加入逗号小龙女。   (7)系统选项设置: <1>、必须激活才可登录,开启状态时,用户必须是邮箱激活之后才能登录系统,否则无法登录。 <2>、用户在线超时时间即为统计记录用户在线,在超过一定时间系统自动清空这些超时用户、或者已经长期不活动的用户!默认为40分钟即可。 <3>、金币操作记录天数,即员在充值、消费操作时数据库记录的时间段,一般30天。 <4>、搜索中员等级限制,即员在搜索时显示等级最低的用户。这个开关影响到高级搜索、员在线聊天、征婚大厅等列表。一般设置为4即可,除管理员之外都可以显示。 <5>、考题答案个数,即用户提交测试题及发送给用户测试的答案个数 <6>、群组等级默认人数,这个可以从等级组(等级)管理中对群组设置进行设置。 <7>、设置群组热贴,即为当然一个贴子点击超过这个数值时,显示为热贴。   (8)上传选项设置:(非常重要) <1>、上传组件选择(关闭、无组件上传类、Aspupload3.0组件、SA-FileUp 4.0组件、DvFile-Up V1.0组件),点击选择根据提示文字选择允许的组件。一般选择Aspupload为上传组件! <2>、生成预览图片组件(关闭、CreatePreviewImage组件、AspJpeg组件、SA-ImgWriter组件),点击选择根据提示文字选择允许的组件。这里需要注意的是,AspJpeg组件必须!如在线图片截切需要用到它。 <3>、图片水印设置开关(关闭水印效果、水印文字效果、水印图片效果),当选择水印文字,时[添加水印文字信息]需要输入相就文字。当选择水印图片,那么[添加水印LOGO图片地址]需要正确输入图片的地址(必须以根目录为起点的路径) <4>、远程抓取即为员相册可以通过其它网站上的图片地址,系统抓取该图片并保存到空间中!   (9)验证码设置: 如果选择关闭,那么模板中所有相关的验证码表单都要手工去掉保存提交。   (10)服务升级设置: 这里可以设置升级VIP费用、明星榜费用、对认证员打折设置等。包括人民币与金币汇率。 消费卡使用期限,即后台开卡之后,在一定期限之内有效,超过即为失效不能再使用。   (11)支付接口设置: 目前支持财付通、网银在线支付接口。从第3位元素开始分别为:财付通商户号、财付通32位密钥;网银商户号、网银32位密钥。这里提示银银32位密钥是通过md5加密32位,然后到网银在线设置。 其它未提及的设置项,基本可以从项目下文字说明理解到相关用途及含义。 2、二级域名管理(domain.asp) 很多客户初始安装之后都发现很多网页都跳转到官方网站上,还以为是程序限制,其实并不是这样。原因就在二级域名没有修改为自己的域名,这里主要修改二级域名(静态文件访问地址)。修改完提交保存!然后到生成管理中进行生成,这部分在下面详细讲到。 3、用户标签管理(usertag.asp) 该功能用途,主要是收集用户资料的一些基本信息,提供给搜索、资料列表时显示用!可以不必修改。 4、帮助公告管理(article.asp) 该模块包括:新闻公告、帮助中心、网站底部、新手指南、分类管理,可以通过快捷方式进行分类访问。从文章列表可以进入修改文章内容及重新生成。都可以通过列表下面的选择操作进行审核、生成等操作,根据各个管理列表,操作是一样的。下面如果不是特殊功能,就不在重复介绍。 重点说明:分类管理中[功能帮助]类别,初始建站都遇到帮助中心的分类页无法更新生成为新网站信息,那么如何操作呢?首先进入该类,里面有个人资料完善和管理、沟通与交流等分类,然后全部选定各个分类,选择生成Html操作执行即可。 5、友情链接管理(link.asp) 如何在首页生成带有logo图标的友情链接呢?首先要在这里添加友情链接为图标链,然后在模板中分页模板(page_html)语言包中html_html(0).htm中,友情链接地方修改标签。可以参考通用标签附录3:Lk_List标签 6、首页调用管理(callnew.asp) 首页调用即为html中实时调用数据库中的数据,通过script调用。从后台的管理中可以对这些调用进行管理。调用方法为<script src="Ns_News.asp?sortid=ID号">会员,ID号为1,那么调用代码为:<script src="Ns_News.asp?sortid=1">、修复功能,数据库中的用户资料可能出现更新不及时或者信息不正确,即可以从这里的修复进行修得,修复(用户数据、匹配数据、用户VIP时间、用户明星榜)。用户数据主要是根据常规管理中的用户标签,重新对用户进行更新用户数据,匹配数据则是根据用户提交的匹配条件重新更新匹配信息。 <2>、邮件激活,有些员注册完并没有及时激活邮件,那么管理员可以通过该功能批量更新用户激活状态。 <3>、推荐榜,即为明星榜。如何批量设置首页明星榜及地区明星榜、并且要求是有头像员呢? 首页明星榜设置:首先进入快捷方式——管理首页,在这个表单中选择上传头像复选框,如果需要设置是区分性别的,可以在这个表单中选定。然后点击[给我搜]按钮进入用户列表。然后在搜索结果列表中操作选定要设置的用户,最后点击推荐榜输入要推荐的天数,点击执行操作即可以完成推荐。 地区明星榜设置:首先进入快捷方式——管理首页,在这个表单中选择上传头像复选框,如果需要设置是区分性别的,可以在这个表单中选定。然后在所在地区中选择要推荐的省份,即为推荐该省的明星榜。然后点击[给我搜]按钮进入用户列表。后面操作与首页明星榜操作相同,这里不在重复讲解。 <4>、列表中的[权限],指的是对某一个用户进行独立设计权限,他的权限不受等级组权限管理,可以自定义设置用户权限。 <5>、列表中的[最后IP],点击该用户最后登录的IP可以限制该IP的访问,请谨慎。 2、用户组(等级)管理:(group.asp重中之重) 包括:注册用户组(等级)管理、系统用户组管理、Vip用户组管理、编辑注册默认组 、编辑VIP默认组、群组等级组管理。 (1)、注册用户组(等级),是根据用户属性自动升级的组!当用户的日记、相册、金币数达到条件,自动升级到下一个等级。 (2)、系统用户组,默认组不能删除否出现严重错误。用途即为当新增加一个[注册用户组(等级)],那么默认的权限根据系统用户组中的[注册用户]组中的权限赋值。新增加VIP用户组也一样根据系统用户组中的VIP默认组。 (3)、群组等级组管理,主要用途是群组升级时根据组的升级金币为条件进行升级,相应给予该群员数及空间。 除群组等级之外,都可以点击每个等级之后的[编辑]链接进入权限编辑,里面有大约150项权限设置,详细到金币操作等。 这里客户经常遇到一个问题:新注册用户无法上传照片或者相册?那么重点看一下[系统用户组管理]——邮件激活及审核状态两个组的权限,进入编辑可以设置。然后记得更新一下缓存,更新缓存方法下面介绍到。 3、管理员添加 | 管理:(admin.asp) 顾名思义就是添加管理员功能模块,可以对新添加的管理员进行权限设置。 这里值得注意的三个地方: (1)、管理员添加:该表单中的“前台用户ID”,请注意是前台用户ID,而不是用户名或邮件地址,很多客户都遇到这个问题。 (2)、限制管理员登录的IP:点击已添加的管理名进入修改,可以添加该管理可访问的IP地址。用途即为当该管理员是公司员工,那么可以把该管理员的IP添加为公司IP,那么该管理员到其它地方就无法登录后台,提高安全防止破坏。 (3)、编辑权限可以对各个管理员进行权限设置访问,可以分权。例如有些管理员只负责风格设计,那么就让它有这个权限,有些管理员只负责管理用户资料,那么就让它可以访问用户资料管理。注意:如果是当前用户设置完要退出再登录后台。 4、重新统计各项数据(updata.asp) 模块功能包括:更新用户数据、修复用户数据、更新系统统计、更新缓存数据、更新群组数据、更新到期状态等。可根据名功能之下文字说明理解各自功能用途。这里主要介绍一下更新系统统计及更新缓存数据: (1)、更新系统统计,主要是系统表Ns_Setup表统计数据,比如全站所有用户数、日记数等。让其更准确一些,可以通过个入口进行更新统计。 (2)、更新缓存数据,上面有提到过更新缓存,这里有专门的入口更新缓存。主要有系统表缓存、外观模板缓存、 等级组缓存。 <1>、系统表缓存,更新Ns_Setup统计数据缓存。 <2>、外观模板缓存,即为模板缓存,当修改一些模板效果,需要通过这个更新一下,让系统立即运用新的模板风格。 <3>、等级组缓存,当重新编辑等级组中的权限,那么可以通过这个进行更新服务器中的缓存,达到立即运用。 这里有客户遇到为什么我已经设计新的模板,但是生成之后还不是最新的模板呢?那么这里的外观模板缓存要执行一下,再生成就可以运用新模板风格了。 提醒:还有一个入口可以更新整站所有缓存,操作方法:您的网址+cleancache.asp,在浏览器地址栏输入该地址,然后回车(转到)访问执行一次,即可更新所有缓存。 5、邮件分发(mailto.asp) 主要功能提供给管理员在线发送邮件。可以输入邮件地址发送,也可以从用户数据中的邮件地址发 送,可以选择用户邮件、用户ID段、按等级组、所有女性、所有男性。该功能要能够使用,请确认常规设置中的邮件选项是否设置正确。 6、VIP/预付卡管理(prepaid.asp) 即提供网站创建卡片数据库,可以批量开卡,然后制作实物卡发放给员。卡号格式:01类+8位日期+9位随机码,卡片是有使用期限。即当卡片超过使用期限,那么该卡即失效不能在使用里面的金额。 (三)频道管理: 博客日记 、网友相册、约活动 、员约、拼客信息 、试客管理、婚庆联盟、群组圈子、恋爱诊所 、成功故事、辩论话题、 情感测试、鲜花配送、点歌中心、许愿墙管理。管理功能基本相同,可以看一下操作表单即可明白功能用途,有些列表中带一些链接可以点击进去详细看一下,或者你发现有新的功能,这里不在介绍。 (四)生成管理: 模块功能包括:主页/频道首页、个人主页生成、生成页面记录、生成学校分站、生成地区分站 1、主页/频道首页主是首页及各个栏目首页生成!最好一天生成一次。 2、个人主页生成,即生成用户资料页。可能遇到用户长时间没有更新资料,可以通过这里生成。当然可以在用户资料管理列表中选定某个用户进行生成。批量生成方法是在这个表单中输入用户ID段:开始段至结束段,可以间隔1000,当然服务器性能好的话,可以一万或者更高,然后点击生成按钮。 3、数据页记录生成,网站所有信息页都在这里生成,例如日记内容页就是在这里生成,选择数据类别,可以分别生成各个类。可以只选择这个类别进行生成,其它表单可以不必选定。 4、地区分站生成,很多客户不知道省级分站生成方法?首先[生成类别]选择省辖分站——[国家名称]选择中国——[省辖名称]选择某个省,当然可以不选全部生成。 5、学校分站生成,选择[所在省区]——[学校名称](可选项),然后生成。另一种方法可以到学校数据管理中生成,方法:[学校数据]——[地区名称](如进入中国)——[省市名称]——可以选择某一个省进行生成,当然可以进入到学校列表再选择生成。 注意:生成管理如果要生成首先必须确认前台是否已经登录,即login.asp控制面板是否登录了。否则生成出现错误。如果生成过程中遇到退出,需要重新登录。为什么自动退出?很大原因是占用内存,被服务器被当掉了,当然可以提高应用池解决。 (五)模板管理: 即风格模板管理(template.asp),版本号5.2+ 模板名称对应栏目列表详细附录4,模板所在目录:Resource\Template_1,可以把整个目录下载到本地,用查找替换工具进行修改。 1、如何修改导航栏,去掉一些不需要的栏目或功能呢?操作方法:风格模板管理——分页模板(page_main)——语言包进入,可以看到0-6个模板号,这些都是主体模板。然后点击\Resource\Template_1\main_html0.htm进入编辑,如果修改坏如何恢复,可以点击获取官方模板,把那个页面下载下来就行。这里以要去掉“点歌中心”为例,在这里编辑器窗口中找到:
  • 点歌中心
  • 这段代码去掉,然后提交保存。其它6个模板中也一样操作,即可完成去掉点歌中心。 2、如何修改控制面板中的不需要的栏目呢?操作方法:风格模板管理——分页模板(page_main)——语言包进入选择\Resource\Template_1\main_html2.htm进入编辑,即可以找到相应菜单列表。这里以要去掉“投票调查管理”,找到:
  • 投票调查管理
  • 这段代码去掉提交保存并更新缓存。 3、如何去掉版权信息?操作方法:风格模板管理——分页模板(page_main)——语言包进入0-6个模板号进入编辑窗口,在最底下找到标签:{$PowerTag}去掉并保存即可。当然这里也可以自己输入一些内容。 4、登录之后页面顶部有一行个人主页说明文字如何修改?打开js/foot.js,可以找到这些文字字符。提醒:如果用记事本编辑可能出现乱码或者排版乱的问题,可以用dreamweaver工具进行排版或者UltraEdit-32编辑。 5、如何批量修改某个字符如“佳缘”字样?可以用Dreamweaver或者UltraEdit-32等工具,进行文件夹查找替换,可以跨文件夹替换。主要还是查找Resource\Template_1目录下模板。也可以在各个模板语言包中去修改。 6、关于我们中的内容如何修改?可以在常规管理——帮助公告列表中找到相应文章进行编辑提交即可。 7、几个经常遇到的模板: (1)、地区分站模板(主体page_main语言包:\Resource\Template_1\main_html4.htm,内容页:page_html语言包:\Resource\Template_1\html_html34.htm) (2)、首页模板:(主体page_main语言包:\Resource\Template_1\main_html0.htm,内容页:page_html语言包:\Resource\Template_1\html_html0.htm) (3)、后台模板(\Resource\admin\admin_html0.htm),用户资料修改的模板(\Resource\admin\admin_html1.htm) (4)、修改注册模板中表单项,那么需要修改Resource\xml\select.xml文件,与之一一对应。 提示:凡是有修改过模板,记得要更新一下模板缓存,方法看用户管理第4点。要修改模板首先要找到模板中的相关样式,一般为,打开修改。 (六)数据采集: 可以查看论坛教程:http://www.nslove.net/dispbbs.php?boardid=4&id=745 数据采集涉及到版权问题,请谨慎使用。采集对象网站可能实时在变化布局,所以每隔一段时间要重新去定位一下。 (七)过滤限制: 主要是一些敏感字符过滤,可以自由添加删除,添加方法:要过滤的字=替换掉的内容 IP限定添加,管理看说明就可以理解。 (八)数据库管理: 该管理有涉及到安全,请不要随意给其它人权限或者执行。 这里简要说明一下[执行SQL命令],通过该窗口可以批量修改数据库中数据,当然前提是你要懂得SQL命令。可以操作大部内容。要注意该操作是无法恢复的。 四、手册附录: 1、相应组件下载: Jmail4.5版:http://www.nslove.com/down/JMail4.5.rar AspJpeg1.5版:http://www.nslove.com/down/AspJpeg1.5.rar AspUpload3.0.0.6版:http://www.nslove.com/down/AspUploadv3.0.0.6.rar 2、模板命名方法: 后台分页模板采用page_xxxx为模板名,而每个分页模板都有语言包、字符集、循环体,这里先对这三者简单介绍如下: (1)语言包:即为显示在浏览器上的html源代码。 (2)字符集:即为用户在操作添加、删除等提示一些操作性语句,如添加xxxx成功等。 (3)循环体:即为程序运行时显示的列表,经过程序循环处理显示出来! 三者关系:语言包主,字符集及循环体为辅并且替换语言包中的相关标签!三者相对应硬盘物理文件名分别:xxxx_html.htm、xxxx_strs.htm、xxxx_list.htm文件名称。如日记三者模板名:diary_html.htm,diary.strs.htm,diary_list.htm。如果遇到同一个模板名有多个模板,那么在diary_html0.htm加数字,diary_html1.htm方式。 3、通用标签: 访问官方论坛:http://www.nslove.net/dispbbs.php?boardid=4&id=775 4、模板名称对应说明: Page_Main:主体模板,网站头部及尾部信息都在这里修改; Page_Index:index不是首页模板,它包括登录页、成功及错误信息、用户控制面板几个模板; Page_Html:前台所有生成静态的模板都在这里,如首页就是第一个模板(请注意每个模板前都有 这样注释即为该栏目静态模板) Page_List:动态文件模板,如搜索结果显示的模板等。 以下是在用户控制面板中分栏目模板 Page_Pray:许愿墙 Page_admin:后台管理的模板 Page_flower:送花模板 Page_Mark:评论模板 Page_Join:报名模板 Page_Article:文章公告模板 Page_Diary:日记发布等模板 Page_Album:相册模板 Page_Group:群组 Page_Party:1+1约 Page_Story:成功故事 Page_Klatch:活动聚 Page_Try:试客 Page_Test:心理测试 Page_Pingk:拼客 Page_Ask:顾问 Page_Msg:短信 Page_Email:邮件模板,包括所有发送的邮件模板; Page_Reg:注册页表单模板; Page_Profile:员资料修改表单; Page_Ava:头像 Page_Upload:上传模板,所有上传入口都在这里; Page_Apply:服务 Page_Friend:朋友 Page_Setting:设置 Page_Account:帐号 Page_Organ:机构婚介 Page_Company:公司联盟
    1.增加主键 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN); 指定表空间 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN) using index tablespace TABLE_SPACE_NAME; 2.增加外键 alter table TABLE_NAME add constraint FK_NAME foreign key (TABLE_COLUMN) references KEY_TABLE_NAME; 3.使主键或外键失效、生效 alter table TABLE_NAME disable(enable) constraint KEY_NAME; 4、查看各种约束 select constraint_name,table_name,constraint_type,status from user_constraints; select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper(\'&table_name\') select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper(\'&table_owner\') and c.table_name = upper(\'&table_name\') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position; 5、删除主键或外键 alter table TABLE_NAME drop constraint KEY_NAME; 6、建外键 单字段时:create table 表名 (col1 char(8), cno char(4) REFERENCE course); 多个字段时,在最后加上 Foreign Key (字段名) REFERENCE 表名(字段) 连带删除选项 (on delete cascade 当指定时,如果父表中的记录被删除,则依赖于父表的记录也被删除 REFERENCE 表名() on delete cascade; 7、删除带约束的表 Drop table 表名 cascade constraints; 8:索引管理 <1>.creating function-based indexes sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped); <2>.create a B-tree index sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace sql> tablespace_name [pctfree integer] [initrans integer] [maxtrans integer] sql> [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0 sql> maxextents 50); <3>.pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows <4>.creating reverse key indexes sql> create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k sql> next 200k pctincrease 0 maxextents 50) tablespace indx; <5>.create bitmap index sql> create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k sql> pctincrease 0 maxextents 50) tablespace indx; <6>.change storage parameter of index sql> alter index xay_id storage (next 400k maxextents 100); 7.allocating index space sql> alter index xay_id allocate extent(size 200k datafile \'c:/oracle/index.dbf\'); <8>.alter index xay_id deallocate unused; <9>、查看索引 SQL>select index_name,index_type,table_name from user_indexes order by table_name; <10>、查看索引被索引的字段 SQL>select * from user_ind_columns where index_name=upper(\'&index_name\'); 11、创建序列 select * from user_sequences; create sequence SEQ_NAME start with 1000 maxvalue 1000 increment by 1; alter sequence SEQ_NAME minvalue 50 maxvalue 100; 12、删除重复行 update a set aa=null where aa is not null; delete from a where rowid!= (select max(rowid) from a b where a.aa=b.aa); 13、删除同其他表相同的行 delete from a where exits (select \'X\' from b where b.no=a.no); 或 delete from a where no in (select no from b); 14、查询从多少行到多少行的记录(可以用在web开发中的分页显示) select * from ( select rownum row_id,b.* from (select a.* from sys_oper a) b ) where row_id between 15 and 20 15、对公共授予访问权 grant select on 表名 to public; create public synonym 同义词名 for 表名; 16、填加注释 comment on table 表名 is \'注释\'; comment on column 表名.列名 is \'注释\'; 17、分布式数据库,创建数据库链路 create [public] database link LINKNAME [connect to USERNAME identified by PASSWORD] [using \'CONNECT_STRING\'] 可以在服务器端,也可以在客户端建立,但必须注意,两台服务器之间 数据库必须可以互访,必须各有各自的别名数据库 18、查看数据库链路 select * from all_db_links; select * from user_db_links; 查询 select * from TABLENAME@DBLNKNAME; 创建远程数据库同义词 create synonym for TABLENAME@DBLNKNAME; 操纵远程数据库记录 insert into TABLENAME@DBLNKNAME (a,b) values (va,vb); update TABLENAME@DBLNKNAME set a=\'this\'; delete from TABLENAME@DBLNKNAME; 怎样执行远程的内嵌过程 begin otherdbpro@to_html(参数); end; 19、数据库链路用户密码有特殊字符的时候,可以用双引号把密码引起来 create public database link dblink1 connect to db1 identified by \"123*456\" using \'db11\' 20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的。 <1>下面的语句可以进行总计 select region_code,count(*) from aicbs.acc_woff_notify group by rollup(region_code); <2> 对第1个字段小计,最后合计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by rollup(region_code,write_status); ---------------------- 570 0 3 570 1 2 570 5 --此处小计了570的记录 571 0 10 571 1 2 571 12 --此处小计了571的记录 ..... 100 --此处有总计 <3> 复合rollup表达式,只做总计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by rollup(region_code,write_status); <4> 对第1个字段小计,再对第2个字段小计,最后合计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by cube(region_code,write_status); ---------------------- 100 --此处有总计 0 60 --对write_status=0的小计 1 39 --对write_status=1的小计 3 1 --对write_status=3的小计 570 5 --此处小计了570的记录 570 0 3 570 1 2 571 12 --此处小计了571的记录 571 0 10 571 1 2 .... <3> 复合cube表达式,只做总计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by cube(region_code,write_status); <4>下面的语句可以按照rollup不同的字段进行小计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by region_code,rollup(write_status); 21.查询view的创建语句 sql>set long 1000 sql>select * from user_views where view_name=\'MY_VIEW_NAME\'; or sql>select * from all_views where view_name=\'MY_VIEW_NAME\'; 22、去除数据库中特殊字符 <1>.字符串字段中含有\"\'\",如果用来组合sql语句,造成语句不准确。 比如:replace(f1,\'\'\'\',\'\') <2>.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,\'\\t\',\'\') <3>.清除换行和回车 比如: replace(f2,chr(13)||chr(10),\'\') 23、如何在字符串里加回车或者tab键 在sqlplus中执行 sql>select \'UserId=1233111\'||chr(10)||\'AccId=13431\'||chr(9)||\'AccId2=11111\' from dual; 24、树形查询 create table zj( bm number(8), bmmc varchar2(20), sjbm number(8) ) insert into zj values(1,\'aaa\',0) insert into zj values(11,\'aaa1\',1) insert into zj values(12,\'aaa2\',1) insert into zj values(111,\'aaa11\',11) insert into zj values(112,\'aaa12\',11) insert into zj values(113,\'aaa13\',11) insert into zj values(121,\'aaa21\',12) insert into zj values(122,\'aaa22\',12) insert into zj values(123,\'aaa23\',12) -- select bm,bmmc,sjbm,level from zj start with sjbm=0 connect by prior bm = sjbm 或者 select bm,bmmc,sjbm,level from zj start with sjbm=0 connect by sjbm = prior bm 25、快照 create snapshot SNAPSHOT_NAME [storage (storage parameter)] [tablespace TABLESPACE_NAME] [refresh [fast\\complete\\force] [start with START_DATE next NEXT_DATE] as QUERY; create snapshot snapshot_to_study as select * from TABLE_NAME@to_study; 创建角色 create role aa identified by aaa; 授权 grant create snapshot,alter snapshot to aaa; grant aaa to emp; create snapshot SNAPSHOT_TO_HTML refresh complete start with sysdate next sysdate+5/(24*60*60) as select * from a@to_html; 删除 drop snapshot snap_to_html 手工刷新快照,(调用DBMS_SNAPSHOT包中的refresh过程)DBMS_SNAPSHOT.refresh(snapshot_name,refresh_type); begin DBMS_SNAPSHOT.REFRESH(\'snap_to_html\',\'c\'); end; 对所有快照进行刷新 begin DBMS_SNAPSHOT.REFRESH_ALL; end; 怎样执行远程的内嵌过程 begin otherdbpro@to_html(参数); end; 26、用户管理 create a user: database authentication sql> create user juncky identified by oracle default tablespace users sql> temporary tablespace temp quota 10m on data password expire sql> [account lock|unlock] [profile profilename|default]; <1>.查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; <2>生成用户时指定缺省表空间 create user 用户名 identified by 口令 default tablespace 表空间名; <3>重新指定用户的缺省表空间 alter user 用户名 default tablespace 表空间名 <4>查看当前用户的角色 SQL>select * from user_role_privs; <5>查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; <6>查看用户下所有的表 SQL>select * from user_tables; <7> alter user语句的quota子句限制用户的磁盘空间 如:alter user jf quota 10M on system; 27、查看放在ORACLE的内存区里的表 SQL>select table_name,cache from user_tables where instr(cache,\'Y\')>0; 28、约束条件 create table employee (empno number(10) primary key, name varchar2(40) not null, deptno number(2) default 10, salary number(7,2) check salary<10000, birth_date date, soc_see_num char(9) unique, foreign key(deptno) references dept.deptno) tablespace users; 关键字(primary key)必须是非空,表中记录的唯一性 not null 非空约束 default 缺省值约束 check 检查约束,使列的值符合一定的标准范围 unqiue 唯一性约束 foreign key 外部键约束 29、查看创建视图的select语句 SQL>set view_name,text_length from user_views; SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小 SQL>select text from user_views where view_name=upper(\'&view_name\'); 30、查看同义词的名称 SQL>select * from user_synonyms; 31、用Sql语句实现查找一列中第N大值 select * from (select t.*,dense_rank() over (order by sal) rank from employee) where rank = N; 32 虚拟自段 <1>. CURRVAL 和 nextval 为表创建序列 CREATE SEQUENCE EMPSEQ ... ; SELECT empseq.currval FROM DUAL ; 自动插入序列的数值 INSERT INTO emp VALUES (empseq.nextval, \'LEWIS\', \'CLERK\', 7902, SYSDATE, 1200, NULL, 20) ; <2>. ROWNUM 按设定排序的行的序号 SELECT * FROM emp WHERE ROWNUM < 10 ; <3>. ROWID 返回行的物理地址 SELECT ROWID, ename FROM emp WHERE deptno = 20 ; 33、对CLOB字段进行全文检索 SELECT * FROM A WHERE dbms_lob.instr(a.a,\'K\',1,1)>0; 34. 特殊字符的插入,比如\"&\" insert into a values (translate (\'at{&}t\',\'at{}\',\'at\')); 35.表管理 <1>.create a table sql> create table table_name (column datatype,column datatype]....) sql> tablespace tablespace_name [pctfree integer] [pctused integer] sql> [initrans integer] [maxtrans integer] sql> storage(initial 200k next 200k pctincrease 0 maxextents 50) sql> [logging|nologging] [cache|nocache] <2>.copy an existing table sql> create table table_name [logging|nologging] as subquery <3> create table ... as 方式建表的时候,指定表参数 create table a storage( initial 1M /*第一次创建时分配空间*/ next 1M /*第一次分配的存储空间用完时在分配*/ ) as select * from b; <4>.创建临时表 sql> create global temporary table xay_temp as select * from xay; on commit preserve rows/on commit delete rows 在Oracle中,可以创建以下两种临时表: a 话特有的临时表: create global temporary table () on commit preserve rows; 话指定,当中断话时ORACLE将截断表 b 事务特有的临时表: create global temporary table () on commit delete rows; 事务指定,每次提交后ORACLE将截断表(删除全部行) c 说明 临时表只在当前连接内有效   临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用   数据处理比较复杂的时候时表快,反之视图快点   在仅仅查询数据的时候建议用游标: open cursor for \'sql clause\'; <5> pctfree = (average row size - initial row size) *100 /average row size pctused = 100-pctfree- (average row size*100/available data space) <6>.change storage and block utilization parameter sql> alter table table_name pctfree=30 pctused=50 storage(next 500k sql> minextents 2 maxextents 100); <7>.manually allocating extents sql> alter table table_name allocate extent(size 500k datafile \'c:/oracle/data.dbf\'); <8>.move tablespace sql> alter table employee move tablespace users; <9>.deallocate of unused space sql> alter table table_name deallocate unused [keep integer] <10>.drop a column sql> alter table table_name drop column comments cascade constraints checkpoint 1000; alter table table_name drop columns continue; <11>.mark a column as unused sql> alter table table_name set unused column comments cascade constraints; alter table table_name drop unused columns checkpoint 1000; alter table orders drop columns continue checkpoint 1000 data_dictionary : dba_unused_col_tabs 37. 中文是如何排序的? Oracle9i之前,中文是按照二进制编码进行排序的。 在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序 SCHINESE_PINYIN_M 按照拼音排序 38. 数据表中的字段最大数: 表或视图中的最大列数为 1000 39. oracle中的裸设备: 裸设备就是绕过文件系统直接访问的储存空间 40. 在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context(\'userenv\',\'ip_address\') from dual; 如果是登陆本机数据库,只能返回127.0.0.1 41. 在ORACLE中取毫秒? 9i之前不支持,9i开始有timestamp. 9i可以用select systimestamp from dual; 42. 将N秒转换为时分秒格式? set serverout on declare N number := 1000000; ret varchar2(100); begin ret := trunc(n/3600) || \'小时\' || to_char(to_date(mod(n,3600),\'sssss\'),\'fmmi\"分 \"ss\"秒\"\') ; dbms_output.put_line(ret); end; 43、在某个用户下找所有的索引 select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name from user_ind_columns, user_indexes where user_ind_columns.index_name = user_indexes.index_name and user_ind_columns.table_name = user_indexes.table_name order by user_indexes.table_type, user_indexes.table_name, user_indexes.index_name, column_position; 44. not in的替代。 一般not in的效率比较低。特别是数据量大的时候,几乎不能执行。 用下面几种方式可以替换写法 比如要查询在fee_rev_info表中已经销户的用户(不在cm_user中的)(不过下面的例子不是很好,因为bill_id是cm_user的唯一索引) select * from fee_rev_info where bill_id not in (select bill_id from cm_user) <1> 用not exists select * from fee_rev_info a where not exists (select \'p\' from cm_user b where b.bill_id = a.bill_id) <2> 用外连接(+) select a.* from fee_rev_info a,cm_user b where a.bill_id = b.bill_id (+) and b.bill_id is null <3> 用hash_aj select /*+HASH_AJ*/* from fee_rev_info where bill_id not in (select bill_id from cm_user) 45.怎么样查询特殊字符,如通配符%与_ 假如数据库中有表 STATIONTYPE,STATION_571 STATION_572 ... select * from tab where tname like \'STATION_%\' 显示 STATIONTYPE,STATION_571 ... 可以用下面的语句 select * from tab where tname like \'STATION\\_%\' escape\'\\\' 46.如果存在就更新,不存在就插入可以用一个语句实现吗 9i已经支持了,是Merge,但是只支持select子查询, 如果是单条数据记录,可以写作select .... from dual的子查询。 语法为: MERGE INTO table USING data_source ON (condition) WHEN MATCHED THEN update_clause WHEN NOT MATCHED THEN insert_clause; 如 MERGE INTO cm_user_credit USING (select * from dual) ON (user_id =1302514690 ) when MATCHED then update set credit_value = 1000 when NOT MATCHED then insert (user_id,acc_id,bill_id,plan_id,region_code,credit_value) values(1302514690,1305032158,\'13857141218\',10070247,\'571\',1000); 47.怎么实现一条记录根据条件多表插入 9i以上可以通过Insert all语句完成,仅仅是一个语句,如: INSERT ALL WHEN (id=1) THEN INTO table_1 (id, name) values(id,name) WHEN (id=2) THEN INTO table_2 (id, name) values(id,name) ELSE INTO table_other (id, name) values(id, name) SELECT id,name FROM a; 如果没有条件的话,则完成每个表的插入,如 INSERT ALL INTO table_1 (id, name) values(id,name) INTO table_2 (id, name) values(id,name) INTO table_other (id, name) values(id, name) SELECT id,name FROM a; 48.如何实现行列转换 <1>、固定列数的行列转换 如 student subject grade --------------------------- student1 语文 80 student1 数学 70 student1 英语 60 student2 语文 90 student2 数学 80 student2 英语 100 ... 转换为 语文 数学 英语 student1 80 70 60 student2 90 80 100 ... 语句如下: select student,sum(decode(subject,\'语文\', grade,null)) \"语文\", sum(decode(subject,\'数学\', grade,null)) \"数学\", sum(decode(subject,\'英语\', grade,null)) \"英语\" from table group by student <2>、不定列行列转换 如 c1 c2 -------------- 1 我 1 是 1 谁 2 知 2 道 3 不 ... 转换为 1 我是谁 2 知道 3 不 这一类型的转换必须借助于PL/SQL来完成,这里给一个例子 CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER) RETURN VARCHAR2 IS Col_c2 VARCHAR2(4000); BEGIN FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP Col_c2 := Col_c2||cur.c2; END LOOP; Col_c2 := rtrim(Col_c2,1); RETURN Col_c2; END; / SQL> select distinct c1 ,get_c2(c1) cc2 from table;即可 --例子: create table okcai_1 ( user_id varchar2(10), user_number varchar2(10), user_num number(8) ) user_id user_number user_num --------------------- 1 123 2 1 456 5 1 789 6 2 11 2 2 22 3 2 33 4 2 44 5 2 55 6 2 66 7 2 77 8 3 1234 1 3 5678 2 方式一: create or replace function get_col( p_userId number, p_col number ) return varchar as v_tmp varchar2(255); begin select user_number||chr(9)||user_num into v_tmp from (select user_number,user_num,rownum row_id from okcai_1 where user_id = p_userId) a where row_id = p_col; return ltrim(v_tmp); --return v_tmp; end; 然后 select distinct user_id,get_col(user_id,1),get_col(user_id,2),get_col(user_id,3) .... from okcai_1 方式二: create or replace function get_col( p_userId number, p_col number ) return varchar as v_tmp varchar2(255); begin select user_number||chr(9)||user_num into v_tmp from (select user_number,user_num,rownum row_id from okcai_1 where user_id = p_userId) a where row_id = p_col; return ltrim(v_tmp); --return v_tmp; end; select distinct user_id,get_col_new(user_id) from okcai_1; 49.怎么设置存储过程的调用者权限 普通存储过程都是所有者权限,如果想设置调用者权限,请参考如下语句 create or replace procedure ...() AUTHID CURRENT_USER As begin ... end; 50.Oracle有哪些常见关键字 详细信息可以查看v$reserved_words视图 51.怎么查看数据库参数 <1> show parameter 参数名 如通过show parameter spfile可以查看9i是否使用spfile文件 其中参数名是可以匹配的。 比如show parameter cursor ,则显示跟cursor相关的参数 <2> select * from v$parameter <3> 除了这部分参数,Oracle还有大量隐含参数,可以通过如下语句查看: SELECT NAME ,VALUE ,decode(isdefault, \'TRUE\',\'Y\',\'N\') as \"Default\" ,decode(ISEM,\'TRUE\',\'Y\',\'N\') as SesMod ,decode(ISYM,\'IMMEDIATE\', \'I\', \'DEFERRED\', \'D\', \'FALSE\', \'N\') as SysMod ,decode(IMOD,\'MODIFIED\',\'U\', \'SYS_MODIFIED\',\'S\',\'N\') as Modified ,decode(IADJ,\'TRUE\',\'Y\',\'N\') as Adjusted ,description FROM ( --GV$SYSTEM_PARAMETER SELECT x.inst_id as instance ,x.indx+1 ,ksppinm as NAME ,ksppity ,ksppstvl as VALUE ,ksppstdf as isdefault ,decode(bitand(ksppiflg/256,1),1,\'TRUE\',\'FALSE\') as ISEM ,decode(bitand(ksppiflg/65536,3), 1,\'IMMEDIATE\',2,\'DEFERRED\',\'FALSE\') as ISYM ,decode(bitand(ksppstvf,7),1,\'MODIFIED\',\'FALSE\') as IMOD ,decode(bitand(ksppstvf,2),2,\'TRUE\',\'FALSE\') as IADJ ,ksppdesc as DESCRIPTION FROM x$ksppi x ,x$ksppsv y WHERE x.indx = y.indx AND substr(ksppinm,1,1) = \'_\' AND x.inst_id = USERENV(\'Instance\') ) ORDER BY NAME 52.怎样建立基于函数索引 8i以上版本,确保 Query_rewrite_enabled=true Query_rewrite_integrity=trusted Compatible=8.1.0以上 Create index indexname on table (function(field)); 53.怎么样移动表或表分区 [A]移动表的语法 Alter table tablename move [Tablespace new_name Storage(initial 50M next 50M pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging] 移动分区的语法 alter table tablename move (partition partname) [update global indexes] 之后之后必须重建索引 Alter index indexname rebuild 如果表有Lob段,那么正常的Alter不能移动Lob段到别的表空间,而仅仅是移动了表段,可以采用如下的方法移动Lob段 alter table tablename move lob(lobsegname) store as (tablespace newts); 54.怎么样修改表的列名 [A]9i以上版本可以采用rname命令 ALTER TABLE UserName.TabName RENAME COLUMN SourceColumn TO DestColumn 9i以下版本可以采用create table …… as select * from SourceTable的方式。 另外,8i以上可以支持删除列了 ALTER TABLE UserName.TabName SET UNUSED (ColumnName) CASCADE CONSTRAINTS ALTER TABLE UserName.TabName DROP (ColumnName) CASCADE CONSTRAINTS 55.case的用法 在sql语句中 CASE test_value WHEN expression1 THEN value1 [[WHEN expression2 THEN value2] [...]] [ELSE default_value] END 比如1 SELECT last_name, job_id, salary CASE job_id WHEN \'IT_PROG\' THEN 1.10*salary WHEN \'ST_CLERK\' THEN 1.15*salary WHEN \'SA_REP\' THEN 1.20*salary ELSE salary END \"REVISED_SALARY\" FROM employees 比如2 select case when real_charge>=20000 and real_charge<30000 then 5000 when real_charge>=30000 and real_charge<40000 then 9000 when real_charge>=40000 and real_charge<50000 then 10000 when real_charge>=50000 and real_charge<60000 then 14000 when real_charge>=60000 and real_charge<70000 then 18000 when real_charge>=70000 and real_charge<80000 then 19000 when real_charge>=80000 and real_charge<90000 then 24000 when real_charge>=90000 and real_charge<100000 then 27000 when real_charge>=100000 and real_charge<110000 then 27000 when real_charge>=110000 and real_charge<120000 then 29000 when real_charge>=120000 then 36000 else 0 end ,acc_id,user_id,real_charge from okcai_jh_charge_200505 在存储过程中 case v_strGroupClassCode when \'1\' then v_nAttrNum := v_nAttrNum + 300; v_strAttrFlag := \'1\'||substr(v_strAttrFlag,2,7); when \'2\' then v_nAttrNum := v_nAttrNum + 200; v_strAttrFlag := \'2\'||substr(v_strAttrFlag,2,7); else NULL; end case; 注意的是存储过程和sql语句有的细微差别是用end case,而不是end。语句后面跟\";\"

    34,593

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    MS-SQL Server相关内容讨论专区
    社区管理员
    • 基础类社区
    • 二月十六
    • 卖水果的net
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告
    暂无公告

    试试用AI创作助手写篇文章吧