摘自:http://blog.itpub.net/post/1626/15010
一、四个系统数据库的介绍
二、三种备份和恢复
三、两种数据导入导出方法
四、数据库维护计划和作业的应用(前提都是sqlserver agent服务要启动)
五、安全性介绍
六、sql脚本的生成
七、事件探查器的应用
八、日志的截断
一、四个系统数据库的介绍
1、Master数据库
Master数据库记录了Sqlserver所有的服务器级系统信息,所有的注册帐户和密码,以及所有的系统设置信息,还记录了所有用户定义数据库的存储位置和初始化信息。
2、Tempdb数据库
Tempdb记录了所有的临时表、临时数据和临时创建的存储过程。Tempdb数据库是一个全局资源,没有专门的权限限制,允许所有可以连上Sqlserver服务器的用户使用。
在Tempdb数据库存放的所有数据信息都是临时的。每当连接断开时,所有的临时表和临时存储过程都将自动丢弃。每次系统启动时Sqlserver都会根据Model数据库重新创建Tempdb数据库。
3、Model数据库
Model数据库是用户建立新数据库的模板,它包含了将复制到每个用户数据库中去的系统表。每当创建数据库的语句create database执行时,服务器总是通过复制model数据库来建立新数据库的前面部分,新数据库的后面部分被初始化成空白的数据页,以供用户存放数据。
4、Msdb数据库
Msdb数据库主要被sqlserver agent用来进行复制、作业调度以及管理报警等活动。该数据库常被用来通过调度任务排除故障。
5、说明:在具体应用中可以在企业管理器里将这四个系统数据库隐藏起来,可以避免用户误操作,也可以起到让用户知道操作系统数据库带来的后果。
二、三种备份和恢复
1、通过企业管理器的备份和还原数据库。
2、在查询分析器里执行sp_detach_db 'dbname',true分离数据库,将操作系统文件*.mdf(主数据文件)和*.ldf(日志文件)拷贝出来,当然你也可以通过停止sqlserver服务来拷贝操作系统文件。
通过sp_attach_db(两个操作系统文件都完好)或sp_attach_single_file_db(主数据文件完好,日志文件破坏)来附加数据库(如果在附加中有问题,执行下列步骤)。
mssql里附加数据库出错的解决方法在QA里执行sp_attach_db或者sp_attach_single_file_db,出现提示:错误1813:未能打开新数据库'dbname',create database 将终止。设备激活错误。物理文件名'd:\sql server\mssql\data\dbname _log.ldf'可能有误! 按下面的步骤处理:1.新建一个同名的数据库2.再停掉sqlserver服务(注意不要分离数据库)3.用原数据库的数据文件覆盖掉这个新建的数据库4.再重启sqlserver服务5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)6.完成后一般就可以访问数据库中的数据了。这时,数据库本身一般还有问题,解决办法是:利用数据库的脚本创建一个新的数据库,然后通过DTS将数据导进去就行了use mastergosp_configure 'allow updates',1 reconfigure with overridegoupdate sysdatabases set status =32768 where name='置疑的数据库名'gosp_dboption '置疑的数据库名', 'single user', 'true'godbcc checkdb('置疑的数据库名') goupdate sysdatabases set status =28 where name='置疑的数据库名'gosp_configure 'allow updates', 0 reconfigure with overridego sp_dboption '置疑的数据库名', 'single user', 'false'go 也可以通过企业管理器来附加数据库。3、查询分析器里执行backup database 'dbname' to disk='路径'来备份数据库,restore database 'dbname' from disk='路径'来还原数据库。(以上提到的sql语句里的符号如''等都应该是半角的。这里的操作实际上是上面1里对应的sql语句操作。)
三、两种数据导入导出方法
1、通过DTS来做
2、bcp实用工具来做
例如(hostname表示机器名,user表示sqlserver登陆用户名,resu表示对应的用户登陆的密码):
exec master..xp_cmdshell 'bcp dbname..table_name out d:\test.xls -c -Shostname -Uuser -Presu'
四、数据库维护计划和作业的应用(前提都是sqlserver agent服务要启动)
1、数据库维护计划
2、作业
/*在远程机器操作系统的计算机管理里建立一个用户名为kyle的用户,密码为1234,同时在那台机器的非系统盘里建一个名为backup的共享文件夹,为了安全另外设置这个文件夹只有这个kyle用户可以访问。*/
declare @sql varchar(500)
select @sql='\\10.2.0.12\backup\dbname'+'_db_'+convert(varchar(10),getdate(),112) +
substring(convert(varchar(10),getdate(),108),1,2) +'.bak'
exec master..xp_cmdshell 'net use \\10.2.0.12\backup 1234 /user:remotehost\kyle'
backup database dbname to disk=@sql --备份数据库,这里的10.2.0.12为远程机器的ip,remotehost为远程机器的机器名,dbname为本地sqlserver服务器要备份的数据库
go
declare @sql varchar(500)
select @sql='del '+'\\10.2.0.12\backup\dbname'+'_db_'+convert(varchar(10),dateadd(day,-7,getdate()),112) + substring(convert(varchar(10),dateadd(day,-7,getdate()),108),1,2) +'.bak'
exec master..xp_cmdshell @sql --删除7天前的备份,也就是只保留7个最新备份
go
五、安全性介绍
1、两种登陆方式:
标准登陆方式(sqlserver和windows),采用sqlserver提供的用户名和密码登陆连接,可用sp_denylogin 'builtin\administrators'拒绝操作系统管理员登陆连接(sp_grantlogin 'builtin\administrators'反转),也称非信任登陆机制;这种认证方式是两种方式中最安全的。
集成登陆方式(仅windows),将windows的用户和工作组映射为sqlserver的登陆方式,也称信任机制。
2、一个特殊帐户:sa,为系统默认帐户,不能删除,拥有最高的管理权限,可以执行sqlserver服务器范围内的所有操作,所以一定要给sa加上密码,密码推荐不少于6位,最后是字母、数字和特殊符号的组合。
3、两个特殊数据库用户:
dbo,数据库的拥有者,在安装sqlserver时,被设置到model数据库中,不能被删除,所以dbo在每个数据库中都存在。dbo是数据库的最高权力者,对应于创建该数据库的登陆用户,即所有的数据库的dbo都对应于sa帐户;
guest,这个用户可以使任何已经登陆到sqlserver服务器的用户都可以访问数据库,即使它还没有成为本数据库的用户。所有的系统数据库除model以外都有guest用户。所有新建的数据库都没有这个用户,如果油必要添加guest用户,请用sp_grantdbaccess来明确建立这个用户。
4、还原数据库的时候之所以要删除本数据库的用户如user,然后在安全性→登陆里重新建这个用户和指定相应的访问权限,是因为这个用户在master里不存在。当然你也可以用sp_addlogin 'user','resu'来新建user用户,sp_change_users_login 'update_one','user','user'来指定在master中的对应。
5、具有system administrators服务器角色的成员拥有与sa一样的权限,具有db_owner数据库角色的用户具有对本数据库的完全操作权限。
六、sql脚本的生成
说明:可以选择生成某个具体数据库对象的脚本,也可以生成整个数据库对象的脚本。
七、事件探查器的应用
说明:追踪对后台数据库的每一个请求,以此可以定位前台页面的哪个属性对应后台表的哪个字段。
八、日志的截断
backup log dbname with no_log
dbcc shrinkdatabase('dbname')