数据库日常操作常见问题及处理Word文档格式.docx
《数据库日常操作常见问题及处理Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库日常操作常见问题及处理Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
24.如何查看SQLServer日志的方法19
25.数据库登录20
三、数据库日常操作21
1.数据库安装、备份、还原、创建计划21
2.SQLServer2008(2008R2)清理日志方法21
3.基于WindowServer2003构建MSSQl2008故障转移群集21
4.WindowsServer2008R2远程桌面终端连接数的破解21
5.WindowsServer2008+SQLserver2008双机热备实例22
6.数据备份导出22
四、常见问题及处理23
1.SQL注入处理及如何彻底杜绝SQL注入?
23
2.在利用企业管理器使用向导新建一个登录,并且在“数据库访问”选项下面赋予这个登录访问某个数据库的权限,遇到如下错误信息:
错误21002:
[SQL-DMO]用户"
user"
已经存在。
3.在企业管理器里面修改sa密码并确认新密码之后遇到如下错误信息:
错误21776:
[SQL-DMO]名称"
dbo"
在Users集合中没有找到,如果该名称是合法名称,则使用[]来分隔名称的不同部分,然后重试。
4.登录错误:
无法连接到(local)的解决?
24
5.SQLServer200818456错误的解决24
6.SQLServer2008安装过程中服务器配置出错解决办法24
7.连接SQLServer2008报错:
(provider:
命名管道提供程序,error:
40-无法打开到SQLServer的连接)25
8.出现数据库宕机以后的处理方式25
9.SQL已过评估期的解决办法25
10.SQLServer数据库超时问题的解决方法25
11.SQLServer2008R2error26开启远程连接详解26
12.SQLserver2008数据库还原出错(错误3203)26
13.SQLServer2008附加数据库提示5120错误26
14.SQLServer2008附加数据库错误(5123)26
15.连接失败SQLServer错误10061总结26
五、案例28
1.某项目中故障转移软件出现问题后数据库的解决过程28
2.如何修改SQLServer排序规则28
3.服务器SQL多个版本数据库动态端口问题28
4.多核服务器安装SQLserver2005可能遇到的问题及解决办法28
5.关于SQLServer2005做备份作业时报DTExec.exe错误的解决方法29
6.SQL数据库镜像过程29
7.’介质集有2个介质簇,但只提供了1个。
必须提供所有成员’问题的解决29
8.打开【SQLServer配置管理器】提示:
无法连接到WMI提供程序。
您没有权限或者该服务器无法访问29
一、数据库关键操作
1.数据库备份和还原的注意点
1.在做数据库的备份时,注意备份的“目标”中,最好是只有一个路径(如果不想备份到默认路径,则删除默认路径,重新添加新的备份路径)。
如果多个路径,在还原时,则需要提供多个bak文件才能成功还原,否则还原失败,并提示“介质集有2个介质簇,但只提供了1个。
必须提供所有成员”。
备份目标只有一个路径,备份成功后,该路径生成一个bak文件,该文件是数据文件,不包括该数据库的结构信息。
如果在备份时“选项”中是选中“追加到现有的备份集”那么该文件并不是说一个文件就只存了一次备份的数据,而是保存着所有的备份信息,在你想还原的时候,会列出来供你选择哪一个版本是你想还原的;
如果“选项”选中的是“覆盖所有现有的备份集”,那么就只有一份最新的了,也就是说一旦数据发生结构性变化时,比如增加或者删除了一个表的字段,那么很可能就还原不成功了。
2.还原时,有两种方式,一种是“数据库还原”,系统会在安装目录中找到该数据库的那份“最新”的备份;
一种是“文件”还原,也就是可以通过数据文件bak来还原;
不管是通过哪种方式来还原,有可能会出现以下错误“因为数据库正在使用,所以无法获得对数据库的独占访问权”,解决方法:
重启数据库服务器;
3.以上是数据的备份还原,如果是要涉及数据库结构的备份,比如表结构,存储过程的备份,有两种方法:
一种就用“附加”mdf文件,这种方法当然会附带所有的信息,包括数据,但是在拿不到mdf的情况下,比如你要复制的数据库是别人的服务器的,而你的权限是拿不到mdf的,就只能用以下这种方法,也就是另一种方法:
首先对源数据库生成脚本(任务-生成脚本)从而得到该数据库的结构,再“导入数据”。
备份还原的具体操作步骤,请参照第三章第一节数据库安装、备份、还原、创建计划
可能导致的事故案例,请参照第五章第七节案例。
2.数据库分离和附加时的注意点
数据库分离和附加的应用场景:
可以分离数据库的数据和事务日志文件,然后将它们重新附加到同一或其他SQLServer实例。
如果要将数据库更改到同一计算机的不同SQLServer实例或要移动数据库,分离和附加数据库会很有用。
在64位和32位环境中,SQLServer磁盘存储格式均相同。
因此,可以将32位环境中的数据库附加到64位环境中,反之亦然。
从运行在某个环境中的服务器实例上分离的数据库可以附加到运行在另一个环境中的服务器实例(注:
该段话来自微软官方)。
数据库分离:
是指将数据库从SQLServer实例中删除,但使数据库在其数据文件和事务日志文件中保持不变。
之后,就可以使用这些文件将数据库附加到任何SQLServer实例,包括分离该数据库的服务器。
如果存在下列任何情况,则不能分离数据库:
1.已复制并发布数据库。
如果进行复制,则数据库必须是未发布的。
必须通过运行sp_replicationdboption禁用发布后,才能分离数据库。
(如果无法使用sp_replicationdboption,可以通过运行sp_removedbreplication删除复制。
)
2.数据库中存在数据库快照。
必须首先删除所有数据库快照,然后才能分离数据库。
3.该数据库正在某个数据库镜像会话中进行镜像。
除非终止该会话,否则无法分离该数据库。
4.数据库处于可疑状态。
在SQLServer2005和更高版本中,无法分离可疑数据库;
必须将数据库设为紧急模式,才能对其进行分离。
可能产生的响应分离错误:
分离数据库时生成的错误会阻止完全关闭数据库和重新生成事务日志。
收到错误消息后,请执行下列更正操作:
1.重新附加与数据库关联的所有文件,而不仅仅是主文件。
2.解决导致生成错误消息的问题。
3.再次分离数据库。
操作示例:
数据库附加:
可以附加复制的或分离的SQLServer数据库。
附加数据库时,所有数据文件(MDF文件和NDF文件)都必须可用。
如果任何数据文件的路径不同于首次创建数据库或上次附加数据库时的路径,则必须指定文件的当前路径。
附加日志文件的要求在某些方面取决于数据库是读写的还是只读的,如下所示:
1.对于读写数据库,通常可以附加新位置中的日志文件。
不过,在某些情况下,重新附加数据库需要使用其现有的日志文件。
因此,请务必保留所有分离的日志文件,直到在不需要这些日志文件的情况下成功附加了数据库。
2.如果读写数据库具有单个日志文件,并且您没有为该日志文件指定新位置,附加操作将在旧位置中查找该文件。
如果找到了旧日志文件,则无论数据库上次是否完全关闭,都将使用该文件。
但是,如果未找到旧文件日志,数据库上次是完全关闭且现在没有活动日志链,则附加操作将尝试为数据库创建新的日志文件。
有关详细信息,请参阅事务日志逻辑体系结构和事务日志物理体系结构。
3.如果附加的主数据文件是只读的,则数据库引擎假定数据库也是只读的。
对于只读数据库,日志文件在数据库主文件中指定的位置上必须可用。
因为SQLServer无法更新主文件中存储的日志位置,所以无法生成新的日志文件。
分离再重新附加只读数据库后,会丢失有关当前差异基准的备份信息。
“差异基准”是数据库或其文件或文件组子集中所有数据的最新完整备份。
如果没有基准备份信息,master数据库会变得与只读数据库不同步,这样之后进行的差异备份可能会产生意外结果。
因此,如果对只读数据库使用差异备份,在重新附加数据库后,应通过进行完整备份来建立新的差异基准。
附加时,数据库会启动。
通常,附加数据库时会将数据库重置为它分离或复制时的状态。
但是,在SQLServer2005和更高版本中,附加和分离操作都会禁用数据库的跨数据库所有权链接。
与任何完全或部分脱机的数据库一样,不能附加正在还原文件的数据库。
如果停止了还原顺序,则可以附加数据库。
然后,可以重新启动还原顺序。
3.数据库收缩注意点
数据库中的每个文件都可以通过删除未使用的页的方法来减小。
尽管数据库引擎会有效地重新使用空间,但某个文件多次出现无需原来大小的情况后,收缩文件就变得很有必要了。
数据和事务日志文件都可以减小(收缩)。
可以成组或单独地手动收缩数据库文件,也可以设置数据库,使其按照指定的间隔自动收缩。
文件始终从末尾开始收缩。
例如,如果有个5GB的文件,并且在DBCCSHRINKFILE语句中将target_size指定为4GB,则数据库引擎将从文件的最后一个1GB开始释放尽可能多的空间。
如果文件中被释放的部分包含使用过的页,则数据库引擎先将这些页重新放置到文件的保留部分。
只能将数据库收缩到没有剩余的可用空间为止。
例如,如果某个5GB的数据库有4GB的数据,并且在DBCCSHRINKFILE语句中将target_size指定为3GB,则只能释放1GB。
注意:
备份数据库或事务日志的同时不能收缩数据库或事务日志。
反过来,在尝试收缩数据库或事务日志时也不能创建数据库或事务日志备份。
事务日志文件可在固定的边界内收缩。
日志中虚拟日志文件的大小决定着可能减小的大小。
因此,不能将日志文件收缩到比虚拟日志文件还小。
而且,日志文件收缩的增量大小与虚拟日志文件的大小相等。
例如,一个大小为1GB的事务日志文件可以由五个大小为200MB的虚拟日志文件组成。
收缩事务日志文件将删除未使用的虚拟日志文件,但至少会留下两个虚拟日志文件。
由于此示例中的每个虚拟日志文件都是200MB,因此事务日志最小只能减小到400MB,且只能以200MB的大小为增量减小。
若要能够将事务日志文件减小得更小,可以创建一个较小的事务日志,并让其自动增长,而不要一次创建一个大型的事务日志文件。
收缩事务日志文件具体操作,参考第三章第二节
4.数据库维护计划(自动备份)注意点
使用“‘备份数据库’任务”对话框可以将备份任务添加到维护计划。
备份数据库非常重要,因为当发生系统或硬件故障(或用户错误)对数据库造成某种破坏时,就需要用备份副本来还原数据。
此任务可用于执行完整备份、差异备份、文件和文件组备份以及事务日志备份。
具体注意点:
1.确保SQLServerAgent服务处于启动状态。
2.若要创建或管理维护计划,当前帐号必须是sysadmin固定服务器角色的成员。
注意,只有当用户是sysadmin固定服务器角色的成员时,对象资源管理器才会显示维护计划。
3.建议将master、model、msdb、tempdb这四个系统数据库加入到维护计划中。
4.指定合适的维护计划(自动备份)的位置,不要指定系统默认的备份路径,不要备份到系统盘中(通常为C盘),要备份到其他磁盘或者磁盘阵列中。
5.指定备份文件要使用的扩展名。
默认为.bak。
6.创建完维护计划后,应进行一次执行该计划的操作,以便验证该维护计划是否可用。
维护计划的具体操作步骤,请参照第三章第一节数据库安装、备份、还原、创建计划
5.数据库操作(数据查询、插入、更新、删除)注意点
1.进行数据库操作时,务必要注意确认所要操作的数据库,特别是进行插入、更新和删除操作时,尤其要注意。
2.对于数据的插入、更新、删除操作,一般考虑最好让开发来完成,如果实在需要我们实施来完成,那在进行这些操作前,应做好数据表的备份(特别是删除操作,删除了就没了)。
如果是重要级或者大规模数据操作,则应该事先跟甲方协商好,选择合适的时间(一般是下班后或者周末时)。
操作之前,先停掉IIS(停掉通过应用程序进行的数据操作),然后进行整体数据库备份,备份之后再进行数据操作。
数据表如何进行备份:
1复制表(只复制结构,,并不复制数据,源表名:
a新表名:
b)注意:
前提是b表并不存在
法一:
select*intobfromawhere1<
>
1
法二:
selecttop0*intobfroma
2复制表(同时复制结构和数据,源表名:
b)
select*intobfroma注意:
3拷贝表(拷贝数据,源表名:
a目标表名:
insertintob(a,b,c)selectd,e,ffroma;
3.在进行完数据的插入、更新、删除后,一定要养成用select查询当前数据是否已经操作完成的习惯。
4.如果插入的数据有误,则应及时进行删除,删除前务必仔细确认所要删除的数据,以免造成误删数据。
5.如果进行了误删的操作,则应及时从备份的表里恢复数据(insertinto)
数据备份导出具体操作,请参照第三章第六节
6.数据库迁移注意点
平时在做项目的过程中,经常会碰到应用程序和数据库的迁移(数据库移机),在进行数据库迁移操作时,应注意遵循如下操作流程:
1.迁移前,和甲方沟通好具体迁移的合适的时间,一般是利用下班后或者周末时间来操作,切忌在工作时段进行迁移。
2.提前准备好移动硬盘,尽量让甲方提供。
3.正式移机前,先停掉应用程序服务器的IIS,断开数据库服务器网络链接。
4.进行数据库备份。
5.将备份好的数据库备份文件拷贝到移动硬盘,可以将bak文件先压缩再拷贝。
6.将移动硬盘内的备份文件拷贝到新的服务器上,然后解压缩、进行数据库还原。
二、数据库相关知识
1.CodeErrorMessage(代码错误信息)
0操作成功完成。
1功能错误。
2系统找不到指定的文件。
3系统找不到指定的路径。
4系统无法打开文件。
5拒绝访问。
6句柄无效。
7存储控制块被损坏。
8存储空间不足,无法处理此命令。
。
2.查询当前连接的实例名
select@@servername
3.察看任何数据库属性
sp_helpdboa7
4.设置单用户模式,同时立即断开所有用户
alterdatabaseoa7setsingle_userwithrollbackimmediate
恢复正常
alterdatabaseoa7setmulti_user
5.察看数据库恢复模式
selectdatabasepropertyex('
oa7'
'
recovery'
6.查看作业列表
select*frommsdb..sysjobs
7.察看服务器角色
execsp_helpsrvrolemember
8.添加、删除服务器角色
execsp_addsrvrolemember'
member_name'
sysadmin'
execsp_dropsrvrolemember'
9.察看数据库角色
execsp_helprole
10.添加、删除数据库角色
execsp_addrole'
role_name'
execsp_droprole'
11.查看用户信息
execsp_helpuser
12.检测数据库损坏情况
alterdatabase<
dbname>
setsingle_userwithrollbackimmediate
dbcccheckdb(<
repair_fast)
数据库损坏处理步骤
1.检查SQLSERVER和Windows错误日志,看是否能找出问题所在。
例如,可能硬盘驱动器已满。
2.以单用户模式启动SQLServer。
3.用@dbname参数执行sp_resetstatus(比如,sp_resetstatus@dbname="
oa7"
)。
来使数据库摆脱损坏状态
4.以单用户模式重新启动SQLServer。
5.如果数据库仍处于置疑状态,可将它重设回正常模式,并试着用下面命令转储置疑的数据库的事务:
dumptransactionoa7withno_log
6.再次以单用户模式启动SQLServer,如果数据库出现了,可对其进行详细的DBCC检查(checkdb,checkalloc,等等)
7.运行一些随机查询,看看是否会遇到问题。
8.如果没有问题出现,可停止并重新启动SQLServer,然后将数据库投入生产应用。
13.查看日志空间
dbccsqlperf(logspace)
14.backupset表提供有关备份的详细信息
select*frommsdb..backupset
15.查看登陆用户
select*frommaster..syslogins
16.查看某个数据库的用户信息
select*fromoa7..sysusers
17.恢复损坏的master库
1.使用\ProgramFiles\MicrosoftSQLServer\80\Tools\Binn目录下的rebuildm.exe文件重建master数据库。
重建master数据库可以使用你的数据库文件完整无缺。
记得把数据文件和日志文件备份到其他地方。
2.使用-m参数启动SQLServer,这样可以以单用户模式重新启动SQLServer。
3.从最近一次已知最好的备份来还原master数据库。
4.核实master数据库是不是已经成功还原,确认所有数据库都已恢复正常并运行。
从最近一次已知最好的备份来还原msdb数据库。
5.以普通模式停止和启动SQLServer
6.向生产用户开放数据库
18.查询服务器当前运行参数
select*frommaster..sysconfigures
19.几个系统数据库的概念
master库是最重要的数据库存储系统信息,磁盘空间,文件分配和使用,系统级的配置参数,所有的登陆帐户信息,初始化信息和其他数据库信息等。
msdb库是SQLSERVER代理服务使用的数据库。
为报警,作业,任务调度和记录操作员操作提供存储空间。
tempdb库是临时数据库,她为所有临时表,临时存储过程以及其他的临时操作提供空间。
每次重起改数据库里的信息就是丢失。
model库是存储了所有用户数据库和tempdb数据库的模板。
20.DBCC的相关概念及命令
DBCC(databaseconsistencychecker),数据库控制台命令,也称数据库一致性检查是SQLSERVER提供的一类特殊的命令,用于执行特殊的数据库管理操作。
查询所有的DBCC命令
dbcchelp('
?
'
查询指定DBCC命令的语法说明
checkalloc'
21.SQL数据误删恢复工具LogExplorer使用介绍(只支持到SQLServer2005)
22.实战SQLServer2008数据库误删除数据的恢复
23.MSDTC配置指南
24.如何查看SQLServer日志的方法
格式:
dbcclog(dbname,type=0|1|2|3|4)
参数:
dbname-任一数据库的ID或名字
type-输出结果的类型:
0-最少信息(operation,context,transactionid)
1-更多信息(plusflags,tags,rowlength)
2-非常详细的信息(plusobjectname,indexname,pageid,slotid)
3-每种操作的全部信息
4-每种操作的全部信息加上该事务的16进制信息
默认type=0
举例:
dbcclog(oa7,type=3)
25.数据库登录
三、数据库日常操作
1.数据库安装、备份、还原、创建计划
SQL_Server2008安装操作手册(修订版)
2.SQLServer2008(2008R2)清理日志方法
3.基于WindowServer2003构建MSSQl2008故障转移群集
4.WindowsServer2008R2远程桌面终端连接数的破解
5.WindowsServer2008+SQLserver2008双机热备实例
6.数据备份导出
四、常见问题及处理
我们需要更关注的地方是如何彻底杜绝SQL注入。
分析和解答:
这个错误一般会发生在将数据库从一台服务器迁移到另一台服务器之后,如果在新的服务器里面找不到某一个用户对应的登录,就