知识大全 两个SQL Server维护技巧

Posted 数据库

篇首语:我希望在颠沛流离之后,还能够重新遇见温暖的你,那时候,你刚好成熟,而我,刚好学会温柔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 两个SQL Server维护技巧相关的知识,希望对你有一定的参考价值。

两个SQL Server维护技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  确实 数据库的维护常常交给那些专业的数据库管理员 但是作为一个开发者 你也许偶尔需要暂时从事这个工作 所以 试一试这两个SQL服务器维护技巧 轻松改变数据库拥有者 整理索引碎片 谁会想到你甚至可以给那些数据库管理员教上一两个新技巧呢?重指定数据库拥有者  当回复或者新建数据库时 你有没有注意到SQL Server把数据库的拥有者置为你的NT登录名?仅仅为了确保不同数据库间的一致性(更别提安全性因素了) 你也许考虑用系统过程sp_changedbowner来把数据库拥有者改为其它用户如系统管理员(SA) 你也许已经写了这样一段脚本用来扫描所有用户数据库并把数据库拥有者重指定为系统管理员     系统过程sp_changedbowner有一个参数 即@map 其缺省值为空(null) 该过程可以把数据库旧有的拥有者的别名重映射为新的数据库拥有者 如系统管理员        为了演示该过程 让我们首先建立一个尽可能小的数据库模型 然后运行sp_helpuser指令来看看新创建的用户名清单       CREATE DATABASE test  GO  USE test  GO  EXEC sp_helpuser  GO    这些代码执行后 输出应该列出数据库拥有者的清单(db_owner) 如果你使用Windows NT认证身份 那么清单中应该有一个NULL的登录名字和一个SID值     然后 让我们加上两个登录用户 ISUser 和ISUser 作为db_owner的别名 并把数据库的拥有者改为系统管理员       EXEC sp_addlogin @loginame = ISUser @passwd = ISUser @defdb = master   EXEC sp_addlogin @loginame = ISUser @passwd = ISUser @defdb = master   EXEC sp_addalias @loginame = ISUser @name_in_db = dbo   EXEC sp_changedbowner @loginame = sa @map = TRUE   EXEC sp_helpuser    输出内容应该显示出系统管理员作为db_owner ISUser 作为db_owner的别名   现在我们用过程sp_changedbowner来指定ISUser 为数据库新的拥有者 我们将使用该过程的@map参数并把该参数赋值为 否 这样把用户将为别名       EXEC sp_changedbowner @loginame = ISUser @map = FALSE     EXEC sp_helpuser  GO       输出应该显示出ISUser 现在成为数据库新的拥有者 ISUser 降为别名 下面 我们应该停止这个数据库并结束本演示过程       USE master  GO  DROP DATABASE test  GO      用DBCC INDEXDEFRAG命令来实现维护  对索引进行维护工作是一件冗长费力的工作 不过在SQL Server 中 微软已经引入了一条维护命令DBCC INDEXDEFRAG 它相对SQL Server 的DBREINDEX命令来说 有好几个优点 最主要的优点就是它是一种在线操作 这样 在该命令运行期间用户仍可以连续工作 这是因为它不像DBREINDEX那样在运行时需要锁定操作所涉及的资源 它还可以降低内容阻塞     DBCC INDEXDEFRAG操作一小段 一小段的数据 这样该操作随时都可以停止下来并跟踪它已经完成的工作 该操作每隔五分钟就报告一次估计已完成工作的百分比     从技术的角度来看 DBCC INDEXDEFRAG从新安排了目标索引所在的当前分配页上的物理叶 当操作完成后 目标索引的物理顺序与它的逻辑顺序相对应 因此可以加速索引的扫描速度     该操作还重新安排分配分配给目标索引的空间中的其它索引页 SQL Server将会为以一个填充因子为目标 根据索引数据的密度和为该索引分配的空间大小 来为索引缓冲页上的空间 操作后空下来的页将会被释放 这就使得索引变得更加紧凑     DBCC INDEXDEFRAG也有几个缺点需要你注意     如果一个表格中的两个索引共享一个盘区的同一个空间 而这两个索引并不相邻 那么最好重新建立索引让它们相邻   如果索引中的碎片太多 那么DBCC INDEXDEFRAG命令执行的速度可能要低于 DBREINDEX命令 但是如果索引中的碎片不太多 那么DBCC INDEXDEFRAG 应该比DBREINDEX快的多 用DBCC INDEXDEFRAG取代DBREINDEX的好处网上有介绍   非叶式(nonleaf)索引页不能重新排序   DBCC INDEXDEFRAG不能更新统计数字 cha138/Article/program/SQLServer/201311/22245

相关参考

知识大全 如何模拟SQL Server的两个日期处理函数

如何模拟SQLServer的两个日期处理函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //

知识大全 向外扩展SQL Server系统的两个选项

向外扩展SQLServer系统的两个选项  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当我提到

知识大全 向外扩展SQL Server系统的两个选项[2]

向外扩展SQLServer系统的两个选项[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 向外扩展SQL Server系统的两个选项[1]

向外扩展SQLServer系统的两个选项[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 减少SQL Server数据库死锁的技巧

减少SQLServer数据库死锁的技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果两个用

知识大全 如何用SQL SERVER 2005连接SQL SERVER 2008

如何用SQLSERVER2005连接SQLSERVER2008  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 SQL Server 2005和SQL Server 2000数据的相互导入

SQLServer2005和SQLServer2000数据的相互导入  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 安装sql server 2008 management提示已安装 SQL Server 2005

安装sqlserver2008management提示已安装SQLServer2005  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布

知识大全 在sql server里建一个表,表中有一资料项是char型别的,最多要放20个汉字的话,长度最好是多少

在sqlserver里建一个表,表中有一资料项是char型别的,最多要放20个汉字的话,长度最好是多少?一个汉字占两个位元组,20个汉字,char型别的话,最长40个位元组。所以设定为40就可以了。但

知识大全 SQL Server执行动态SQL正确方式

SQLServer执行动态SQL正确方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQLS