适用于SQL Server生产环境DBA的七大技巧

摘自:http://database.ctocio.com.cn/452/8976452.shtml

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子系统和页面腐化。

 6、使用导入包选项将SQL Server集成服务(SSIS)部署到msdb数据库上

  SSIS有多种部署方法,最简单的方法是将SSIS部署到SQL Server的msdb数据库下,在In SQL Server Management Studio (SSMS)中,连接到集成服务,在存储包下,在MSDB文件夹上点击右键,然后选择导入包,在弹出的对话框中,选择SSIS包的当前位置和名字,根据服 务器存储和访问控制角色设置保护级别,然后点击确定按钮。手动拷贝与SSIS包相关的所有XML配置文件到目标服务器,如果这个包使用SQL Server配置,在导入之前,可能需要使用正确的服务器名更新连接SQL Server的连接字符串。详细信息请参考SQL Server在线电子书中的"如何使用集成服务服务导入包"页面。

  7、使用SQL Server 2008的本地服务器组和中央管理服务器同时查询多个服务器

  在SQL Server 2008中,你可以使用本地服务器组快速连接到那些你经常管理的服务器,也可以使用中央管理服务器来存储服务器的注册元数据,这样团队成员就可以使用相同 的注册信息,可以包括SQL Server 2008、SQL Server 2005和SQL Server 2000服务器。在SSMS中,可以查询本地服务器组或中央管理服务器中的服务器,并可以合并查询结果,进入SSMS已注册服务器窗口,在本地服务器组或 中央管理服务器上点击右键,选择新建查询,在查询编辑器中,输入T-SQL命令,点击执行,将会得到一个包含两列的结果集,第一列包括每个服务器的名字, 第二列就是从该服务器的命令输出内容。详细信息请参考SQL Server在线电子书中的"如何对多个服务器同时执行语句(SQL Server管理控制台)"。

原文地址:https://www.cnblogs.com/lfzwenzhu/p/1522967.html