【IT168技术】由于SQL Server的普及程度非常高,也出现了大量的辅助工具,让DBA感觉眼花缭乱,为了避免在这些工具堆中不知所措,本文将向那些管理生产系统的DBA提供一些工具选择及使用方面的技巧,让他们的工作变得更简单。
1、使用forfiles命令删除陈旧的数据库备份文件
从Windows Server 2003开始forfiles命令就是Windows的一个自带命令行工具,它主要用于对文件的批处理,利用SQL Server代理作业,加上这个工具,可以删除SQL Server陈旧的数据库备份文件,以往这个工作一般都依赖于SQL Server维护计划、xp_cmdshell扩展存储过程,或VBScript对象。下面的forfiles命令删除了E:\sqlbackup文件夹下两天及两天以前的所有.bak文件。
forfiles /p "e:\sqlbackup" /m "*.bak" /c "cmd /c del /Q @path" /d -2
关于forfiles的具体用法请查看其命令行帮助说明,或参考微软的官方文档:http://technet2.microsoft.com/WindowsServer/en/Library/9660fea1-65c7-48cf-b466-204ba159381e1033.mspx。
2、使用ALTER USER WITH LOGIN修复孤儿登录
从SQL Server 2005 SP2开始,T-SQL的ALTER USER命令就包含了WITH LOGIN子句,这个子句通过修改数据库用户的SID为服务器登录的安全标识符修复孤儿登录,它可以同时修复Windows和SQL Server登录的功能。从另一个服务器恢复数据库,登录是独立的创建的(不是从其它服务器复制过来的),这个时候创建的就是孤儿用户。关于ALTER USER WITH LOGIN的详细情况,请参考Laurentiu Cristofor的博客文章"SQL Server 2005:SP2中的一些新特性",或者参考SQL Server在线电子书中关于ALTER USER命令的页面。
3、使用sp_addsrvrolemember将自己提升为sysadmin角色
在SQL Server 2005中,默认情况下,Windows内置的Administrators组没有授予它sysadmin角色,作为Windows系统管理员,你可以讲 SQL Server启动到单用户模式(即维护模式),然后在Sqlcmd命令行环境中运行sp_addsrvrolemember系统存储过程,将你的 Windows登录用户添加到sysadmin角色。更多信息请参考Raul Garcia的博客文章"灾难恢复:SQL Server 2005中SA账号密码丢失时该怎么办"
4、使用PortQryUI排除连接故障
为了解决TCP/IP连接问题,可以选择微软提供的PortQryUI工具,这个工具和PortQry一样好用,其实它就是在PortQry外面套了一层外衣,它内置了一些服务,如一组端口扫描,包括UDP 1434和TCP 1433端口。因此,要检查这些端口的话,只需要输入目标SQL Server实例的IP地址或完全限定域名 (FQDN)即可,如果检查到端口可访问,PortQryUI就会告诉你端口正在监听,否则,它会告诉你端口可能被过滤掉了,或者没有监听。可以从 http://www.microsoft.com/downloads /details.aspx?FamilyID=8355e537-1ea6-4569-aabb-f248f4bd91d0& displaylang=en下载这个好用的工具。
5、在大型数据库上运行DBCC CHECKDB时采用不同的策略
由于数据库越变越大,使用诸如T-SQL的DBCC CHECKDB命令行工具检查数据库的完整性将会耗费很长时间。如果执行DBCC CHECKDB时超出了分配的维护窗口周期该怎么办?Paul S. Randal在他的博客中提供了几种方法(博客链接:http://sqlskills.com/BLOGS/PAUL/post/CHECKDB- From-Every-Angle-Consistency-Checking-Options-for-a-VLDB.aspx),其中一个解决办法就是一台独立的服务器上使用备份还原数据库,然后再在这个服务器上运行DBCC CHECKDB,另一个解决办法就是设置数据库的页面验证选项(从CHECKSUM改为PHYSICAL_ONLY),然后再运行DBCC CHECKDB,这样运行DBCC CHECKDB的时间就大大减小了,但它仍然会影响I/O子系统和页面腐化。