当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

Sql Server实用操作小本领调集(三)[MSSQL防范]

赞助商链接



  本文“Sql Server实用操作小本领调集(三)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

保护sql server中表的索引
在利用和成立数据库索引中常常会碰到一些问题,在这里可以采取一些另类的办法办理…

--第一步:查看能否需求保护,查看扫描密度/Scan Density能否为100%
declare @table_id int
set @table_id=object_id('表名')
dbcc showcontig(@table_id)

--第二步:重构表索引
dbcc dbreindex('表名',pk_索引名,100)

--重做第一步,如发现扫描密度/Scan Density还是小于100%则重构表的全部索引
--杨铮:并不一定能达100%.
dbcc dbreindex('表名','',100)


SQL Server补钉安装常见问题
谁碰到问题就看看咯:)

1、补钉安装历程中常见问题


假如在安装补钉的时刻碰到以下近似错误:

1、安装历程中呈现"从前举行的程序成立了挂起的文件操作,运行安装程序前,必须重新启动",请按照下面步骤办理:

a、重启机械,再举行安装,假如发现还有该错误,请按下面步骤
b、在开始->运行中输入regedit
c、到HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置
d、挑选文件->倒出,保存
e、在右边窗口右击PendingFileRenameOperations,挑选删除,然后确认
f、重启安装,问题办理

假如还有一样问题,请查抄别的注册表中能否有该值存在,若有请删掉.


2、在安装SQL Server SP3,有时刻会呈现:无论用windows认证还是混和认证,都呈现密码错误的情形,这时查看暂时目录下的sqlsp.out,会发现以下描写:
[TCP/IP Sockets]Specified SQL server not found.
[TCP/IP Sockets]ConnectionOpen (Connect()).
其实这是SQL Server SP3的一个小bug,在安装sp3的时刻,没有监听tcp/ip端口,可以按照以下步骤举行:

1、翻开SQL server客户器网络实用工具和服务器网络工具,确保启用的协议中包含name pipe,并且位置在第一位.
2、确保[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
"DSQUERY"="DBNETLIB".
假如没有,请自己成立
3、终止mssql.
4、举行安装.

这样便可以举行精确安装了.

2、SQL Server补钉版本的查抄

SQL Server的补钉版本查抄不如Windows 补钉版本查抄直接,一个系统管理员,假如不理解SQL Server版本对应的补钉号,大概也会碰到一点麻烦,因此在这阐明一下,通过这样的办法辨别机械是安全的办法,不会对系统产生任何影响.
1、用Isql大概SQL查询解析器登录到SQL Server,假如是用Isql,请在cmd窗口输入isql -U sa,然后输入密码,进入;假如是用SQL查询解析器,请从程序中启动,输入sa和密码(也可以用windows考证).
2、在ISQL中输入:
Select @@Version;
go

大概SQL查询解析器中输入(其实假如不想输入,只要翻开帮忙的关于便可以了:))
Select @@Version;
然后按履行;
这时会返回SQL的版本信息,以下:
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 3)
此中的8.00.760就是SQL Server的版本和补钉号.对应关系以下:

8.00.194 -——————SQL Server 2000 RTM
8.00.384 -——————(SP1)
8.00.534 -——————(SP2)
8.00.760 -——————(SP3)

这样我们就可以看到SQL Server的精确版本和补钉号了.

我们也可以用xp_msver看到更具体的信息

Sql Server数据库的备份和恢复办法
最常用的操作,新手们看看……

1、备份数据库

1、翻开SQL企业管理器,在掌握台根目录中顺次点开Microsoft SQL Server
2、SQL Server组-->双击翻开你的服务器-->双击翻开数据库目录
3、挑选你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->挑选备份数据库
4、备份选项挑选完好备份,目的中的备份到假如本来有途径和名称则选中名称点删除,然后点增添,假如本来没有途径和名称则直接挑选增添,接着指定途径和文件名,指定后点肯定返回备份窗口,接着点肯定举行备份

2、复原数据库

1、翻开SQL企业管理器,在掌握台根目录中顺次点开Microsoft SQL Server
2、SQL Server组-->双击翻开你的服务器-->点图标栏的新建数据库图标,新建数据库的名字自行取
3、点击新建好的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->挑选恢复数据库
4、在弹出来的窗口中的复原选项中挑选从设备-->点挑选设备-->点增添-->然后挑选你的备份文件名-->增添后点肯定返回,这时刻设备栏应当呈现您方才挑选的数据库备份文件名,备份号默许为1(假如您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中挑选最新的一次备份后点肯定)-->然后点击上方通例旁边的选项按钮
5、在呈现的窗口中挑选在现有数据库上强迫复原,以及在恢复完成状况中挑选使数据库可以持续运行但无法复原别的事件日记的选项.在窗口的中间部位的将数据库文件复原为这里要按照你SQL的安装举行设置(也可以指定自己的目录),逻辑文件名不需求窜改,移至物理文件名要按照你所恢复的机械情形做窜改,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机械的目录举行相关窜改窜改,并且最后的文件名最好改成您当前的数据库名(如本来是bbs_data.mdf,目前的数据库是forum,就改成forum_data.mdf),日记和数据文件都要按照这样的方法做相关的窜改(日记的文件名是*_log.ldf末尾的),这里的恢复目录您可以安闲设置,前提是该目录必须存在(如您可以指定d:\sqldata\bbs_data.mdf大概d:\sqldata\bbs_log.ldf),不然恢复将报错
6、改正完成后,点击下面的肯定举行恢复,这时会呈现一个进度条,提醒恢复的进度,恢复完成后系统会自动提醒成功,如中间提醒报错,请记录下相关的错误内容并询问对SQL操作对比熟习的人员,普通的错误无非是目录错误大概文件名反复大概文件名错误大概空间不够大概数据库正在利用中的错误,数据库正在利用的错误您可以尝试关闭全部关于SQL窗口然后重新翻开举行恢复操作,假如还提醒正在利用的错误可以将SQL服务终止然后重起看看,至于上述别的的错误普通都能按照错误内容做呼应窜改后便可恢复

3、收缩数据库

普通情形下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日记大小,该当按期举行此操作免得数据库日记过大
1、设置数据库情势为简单情势:翻开SQL企业管理器,在掌握台根目录中顺次点开Microsoft SQL Server-->SQL Server组-->双击翻开你的服务器-->双击翻开数据库目录-->挑选你的数据库名称(如论坛数据库Forum)-->然后点击右键挑选属性-->挑选选项-->在弊端复原的情势中挑选"简单",然后按肯定保存
2、在当前数据库上点右键,看全部任务中的收缩数据库,普通里面的默许设置不用调整,直接点肯定
3、收缩数据库完成后,倡议将您的数据库属性重新设置为尺度情势,操作办法同第一点,因为日记在一些非常情形下常常是恢复数据库的重要根据

4、设定每日自动备份数据库

激烈倡议有条件的用户举行此操作!
1、翻开企业管理器,在掌握台根目录中顺次点开Microsoft SQL Server-->SQL Server组-->双击翻开你的服务器
2、然后点上面菜单中的工具-->挑选数据库保护筹划器
3、下一步挑选要举行自动备份的数据-->下一步更新数据优化信息,这里普通不用做挑选-->下一步查抄数据完好性,也普通不挑选
4、下一步指定数据库保护筹划,默许的是1周备份一次,点击更改挑选每天备份后点肯定
5、下一步指定备份的磁盘目录,挑选指定目录,如您可以在D盘新建一个目录如:d:\databak,然后在这里挑选利用此目录,假如您的数据库对比多最好挑选为每个数据库成立子目录,然后挑选删除早于多少天前的备份,普通设定4-7天,这看您的具体备份要求,备份文件扩大名普通都是bak就用默许的
6、下一步指定事件日记备份筹划,看您的需求做挑选-->下一步要生成的报表,普通不做挑选-->下一步保护筹划历史记录,最好用默许的选项-->下一步完成
7、完成后系统极大概会提醒Sql Server Agent服务未启动,先点肯定完成筹划设定,然后找到桌面最右边状况栏中的SQL绿色图标,双击点开,在服务中挑选Sql Server Agent,然后点击运行箭头,选上下方的当启动OS时自动启动服务
8、这个时刻数据库筹划已经成功的运行了,他将按照您上面的设置举行自动备份

改正筹划:
1、翻开企业管理器,在掌握台根目录中顺次点开Microsoft SQL Server-->SQL Server组-->双击翻开你的服务器-->管理-->数据库保护筹划-->翻开后可看到你设定的筹划,可以举行改正大概删除操作

5、数据的转移(新建数据库或转移服务器)

普通情形下,最好利用备份和复原操作来举行转移数据,在特别情形下,可以用导入导出的方法举行转移,这里介绍的就是导入导出方法,导入导出方法转移数据一个作用就是可以在收缩数据库无效的情形下用来减小(收缩)数据库的大小,本操作默许为您对SQL的操作有一定的理解,假如对此中的部份操作不睬解,可以咨询动网相关人员大概查询网上资料
1、将原数据库的全部表、存储历程导出成一个SQL文件,导出的时刻注意在选项中挑选编写索引脚本和编写主键、外键、默许值和查抄约束脚本选项
2、新建数据库,对新建数据库履行第一步中所成立的SQL文件
3、用SQL的导入导出方法,对新数据库导入原数据库中的全部表内容

操纵数据库日记恢复数据到时间点的操作
由于不正常的数据丧失,而又不想利用备份数据复原,只要本来有备份且当前日记保存无缺,可以采取这个办法试试,说不定可挽回丧失……

1,假如误操作之前存在一个全库备份(或已有多个差别备份或增量备份),首先要做的事就是进
举行一第二天志备份(假如为了不让日记文件变大而置trunc. log on chkpt.选项为1那你就死翘了)
??? backup log dbName to disk='fileName'
2,恢复一个全库备份,注意需求利用with norecovery,假如还有其他差别或增量备份,则一一恢

??? restore database dbName from disk='fileName' with norecovery
3,恢复最后一个日记备份即刚做的日记备份,指定恢复时间点到误操作之前的时刻
??? restore log dbName from disk='fileName'
??? with stopat='date_time'

以上这些操作都可以在SQL SERVER企业管理器里完成,难度不大...

当然,假如误操作是一些不记日记的操作比方truncate table,select into等操作,那么是无法利
用上述办法来恢复数据的...

SQL Server2000数据库文件破坏时若何恢复
呈现这样的问题是对比严重的了,可否修复只能看你的运气……

SQL Server2000中,假如数据库文件(非系统数据库文件)碰到错误的时刻,仅实用于非master,msdb的数据库.

阐明以下:

1 建一个测试数据库test(数据库范例为完好)
2 建一个表,插入点记录
? create table a(c1 varchar(2))
? go
? insert into a values('aa')
? go
? insert into a values('bb')
? go
3 作完好备份,到文件test_1.bak
4 在作一点改正
? insert into a values('cc')
? go
? create table b(c1 int)
? go
? insert into b values(1)
? go
? insert into b values(2)
? go
5 shutdown 数据库服务器
6 用ultraedit编辑数据库文件test_data.mdf,随便改正点字节内容,相当于数据库遭到致命的破坏.
7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,并且显示置疑.
8 运行isql -SLocalhost -Usa -P
1> backup log test TO DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP
est_2.bak' WITH NO_TRUNCATE
2>go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上).
BACKUP LOG 操作成功地处理了 2 页,耗费了 0.111 秒(0.087 MB/秒).

9 举行恢复最老的完好备份
1> RESTORE DATABASE test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQL
BACKUP est_1.bak' WITH NORECOVERY
2> go
已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上).
已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上).
RESTORE DATABASE 操作成功地处理了 97 页,耗费了 0.107 秒(7.368 MB/秒).

10 恢复近来的日记
1> RESTORE LOG test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKU
P est_2.bak' WITH RECOVERY
2> go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上).
RESTORE LOG 操作成功地处理了 2 页,耗费了 0.056 秒(0.173 MB/秒).

?

?

存储历程编写经验和优化办法
经验之谈,看看……

1、合适读者对象:数据库开辟程序员,数据库的数据量很多,触及到对SP(存储历程)的优化的项目开辟人员,对数据库有稠密爱好的人.  

  2、介绍:在数据库的开辟历程中,常常会碰到复杂的业务逻辑和对数据库的操作,这个时刻就会用SP来封装数据库操作.假如项目的SP较多,书写又没有一定的标准,将会影响今后的系统保护艰难和大SP逻辑的难以理解,别的假如数据库的数据量大大概项目对SP的性能要求很,就会碰到优化的问题,不然速度有大概很慢,经过亲身经验,一个经过优化过的SP要比一本性能差的SP的效率乃至高几百倍.  

  3、内容:  

  1、开辟人员假如用到其他库的Table或View,务必在当前库中成立View来实现跨库操作,最好不要直接利用"databse.dbo.table_name",因为sp_depends不能显示出该SP所利用的跨库table或view,不便利校验.  

  2、开辟人员在提交SP前,必须已经利用set showplan on解析过查询筹划,做过自身的查询优化查抄.  

  3、高程序运行效率,优化利用程序,在SP编写历程中应当注意以下几点:   

  a)SQL的利用标准:

   i. 尽大概避免大事件操作,慎用holdlock子句,提高系统并发本领.

   ii. 尽大概避免反复拜候同一张或几张表,特别是数据量较大的表,可以考虑先按照条件提取数据到暂时表中,然后再做衔接.

   iii. 尽大概避免利用游标,因为游标的效率较差,假如游标操作的数据超越1万行,那么就应当改写;假如利用了游标,就要尽大概避免在游标循环中再举行表衔接的操作.

   iv. 注意where字句写法,必须考虑语句次序,应当按照索引次序、范围大小来肯定条件子句的前后次序,尽大概的让字段次序与索引次序相一致,范围从大到小.

   v. 不要在where子句中的"="左边举行函数、算术运算或其他表达式运算,不然系统将大概无法精确利用索引.

   vi. 尽大概利用exists替换select count(1)来判断能否存在记录,count函数只有在统计表中全部行数时利用,并且count(1)比count(*)更有效率.

   vii. 尽大概利用">=",不要利用">".

   viii. 注意一些or子句和union子句之间的替换

   ix. 注意表之间衔接的数据范例,避免差别范例数据之间的衔接.

   x. 注意存储历程中参数和数据范例的关系.

   xi. 注意insert、update操作的数据量,避免与其他利用冲突.假如数据量超越200个数据页面(400k),那么系统将会举行锁进级,页级锁会进级成表级锁.   

  b)索引的利用标准:

   i. 索引的成立要与利用结合考虑,倡议大的OLTP表不要超越6个索引.

   ii. 尽大概的利用索引字段作为查询条件,特别是聚簇索引,必要时可以通过index index_name来强迫指定索引

   iii. 避免对大表查询时举行table scan,必要时考虑新建索引.

   iv. 在利用索引字段作为条件时,假如该索引是结合索引,那么必须利用到该索引中的第一个字段作为条件时才能保证系统利用该索引,不然该索引将不会被利用.

   v. 要注意索引的保护,周期性重建索引,重新编译存储历程.  

  c)tempdb的利用标准:

   i. 尽大概避免利用distinct、order by、group by、having、join、cumpute,因为这些语句会加重tempdb的负担.

   ii. 避免频繁成立和删除暂时表,削减系统表资源的损耗.

   iii. 在新建暂时表时,假如一次性插入数据量很大,那么可以利用select into替换create table,避免log,提高速度;假如数据量不大,为了和缓系统表的资源,倡议先create table,然后insert.

   iv. 假如暂时表的数据量较大,需求成立索引,那么应当将成立暂时表和成立索引的历程放在单独一个子存储历程中,这样才能保证系统可以很好的利用到该暂时表的索引.

    v. 假如利用到了暂时表,在存储历程的最后务必将全部的暂时表显式删除,先truncate table,然后drop table,这样可以避免系统表的较长时间锁定.

    vi. 慎用大的暂时表与其他大表的衔接查询和改正,减低系统表负担,因为这种操作会在一条语句中多次利用tempdb的系统表.  

  d)公道的算法利用:   

  按照上面已提到的SQL优化技术和ASE Tuning手册中的SQL优化内容,结合实际利用,采取多种算法举行对比,以得到损耗资源最少、效率最高的办法.具体可用ASE调优号令:set statistics io on, set statistics time on , set showplan on 等
  以上是“Sql Server实用操作小本领调集(三)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .