Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/2/1 0:18:00 两个SQL,Server维护技巧_[SQL,Server教程]
CREATE DATABASE test GO USE test GO EXEC sp_helpuser GO
这些代码执行后,输出应该列出数据库拥有者的清单(db_owner)。如果你使用Windows NT认证身份,那么清单中应该有一个NULL的登录名字和一个SID值。 然后,让我们加上两个登录用户:ISUser1和ISUser2作为db_owner的别名,并把数据库的拥有者改为系统管理员:
EXEC sp_addlogin @loginame = 'ISUser1', @passwd = 'ISUser1',@defdb = 'master' EXEC sp_addlogin @loginame = 'ISUser2', @passwd = 'ISUser2',@defdb = 'master' EXEC sp_addalias @loginame = 'ISUser1', @name_in_db = 'dbo' EXEC sp_changedbowner @loginame = 'sa', @map = 'TRUE' EXEC sp_helpuser
输出内容应该显示出系统管理员作为db_owner、ISUser1作为db_owner的别名。
现在我们用过程sp_changedbowner来指定ISUser2为数据库新的拥有者。我们将使用该过程的@map参数并把该参数赋值为“否”,这样把用户将为别名。
EXEC sp_changedbowner @loginame = 'ISUser2', @map = 'FALSE' EXEC sp_helpuser GO
输出应该显示出ISUser2现在成为数据库新的拥有者,ISUser1降为别名。下面,我们应该停止这个数据库并结束本演示过程。
USE master GO DROP DATABASE test GO
用DBCC INDEXDEFRAG命令来实现维护
对索引进行维护工作是一件冗长费力的工作,不过在SQL Server 2000中,微软已经引入了一条维护命令DBCC INDEXDEFRAG,它相对SQL Server7.0的DBREINDEX命令来说,有好几个优点。最主要的优点就是它是一种在线操作,这样,在该命令运行期间用户仍可以连续工作。这是因为它不像DBREINDEX那样在运行时需要锁定操作所涉及的资源,它还可以降低内容阻塞。 DBCC INDEXDEFRAG操作一小段、一小段的数据,这样该操作随时都可以停止下来并跟踪它已经完成的工作。该操作每隔五分钟就报告一次估计已完成工作的百分比。 从技术的角度来看,DBCC INDEXDEFRAG从新安排了目标索引所在的当前分配页上的物理叶。当操作完成后,目标索引的物理顺序与它的逻辑顺序相对应,因此可以加速索引的扫描速度。 该操作还重新安排分配分配给目标索引的空间中的其它索引页。SQL Server将会为以一个填充因子为目标、根据索引数据的密度和为该索引分配的空间大小,来为索引缓冲页上的空间。操作后空下来的页将会被释放,这就使得索引变得更加紧凑。 DBCC INDEXDEFRAG也有几个缺点需要你注意: 如果一个表格中的两个索引共享一个盘区的同一个空间,而这两个索引并不相邻,那么最好重新建立索引让它们相邻。
如果索引中的碎片太多,那么DBCC INDEXDEFRAG命令执行的速度可能要低于 DBREINDEX命令;但是如果索引中的碎片不太多,那么DBCC INDEXDEFRAG 应该比DBREINDEX快的多,用DBCC INDEXDEFRAG取代DBREINDEX的好处网上有介绍。
非叶式(nonleaf)索引页不能重新排序。
DBCC INDEXDEFRAG不能更新统计数字。
来源:网络
赞