﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-巷尾的酒吧-随笔分类-sql</title><link>http://www.blogjava.net/abin/category/52771.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 13 Oct 2012 10:44:27 GMT</lastBuildDate><pubDate>Sat, 13 Oct 2012 10:44:27 GMT</pubDate><ttl>60</ttl><item><title>SQL Server DBA工作内容详解</title><link>http://www.blogjava.net/abin/archive/2012/10/13/389510.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Sat, 13 Oct 2012 05:00:00 GMT</pubDate><guid>http://www.blogjava.net/abin/archive/2012/10/13/389510.html</guid><wfw:comment>http://www.blogjava.net/abin/comments/389510.html</wfw:comment><comments>http://www.blogjava.net/abin/archive/2012/10/13/389510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/abin/comments/commentRss/389510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/abin/services/trackbacks/389510.html</trackback:ping><description><![CDATA[<div>　　在Microsoft SQL Server 2008系统中，数据库管理员(Database Administration，简称为DBA)是最重要的角色。DBA的工作目标就是确保Microsoft SQL Server 2008系统正常高效地运行。DBA的工作也是最繁忙的工作，无论是性能调整，还是灾难恢复，都离不开DBA的支持。</div><div></div><div>　　一般地，作为一个DBA，至少应该做好以下12项任务：</div><div></div><div>　　任务一：安装和配置;</div><div>　　任务二：容量规划;</div><div>　　任务三：应用架构设计;</div><div>　　任务四：管理数据库对象;</div><div>　　任务五：存储空间管理;</div><div>　　任务六：安全管理;</div><div>　　任务七：备份和恢复;</div><div>　　任务八：性能监视和调优;</div><div>　　任务九：调度作业;</div><div>　　任务十：网络管理;</div><div>　　任务十一：高可用性和高可伸缩性管理;</div><div>　　任务十二：故障解决;</div><div>　　下面简单描述这些DBA的任务</div><div></div><div>　　任务一：安装和配置。</div><div></div><div>　　DBA的第一项任务是安装和配置Microsoft SQL Server 2008软件系统，为顺利使用Microsoft SQL Server 2008软件创建良好的环境。无论是安装还是配置，都应该根据实际需要来进行，使得系统满足用户的实际需求。需要注意的是，系统配置不是一劳永逸的，应该随时根据需求的变化和环境的需要，进行监视和适当地调整。</div><div></div><div>　　任务二：容量规划。</div><div></div><div>　　容量规划是对整个Microsoft SQL Server 2008系统进行一个总体的规划。规划的重点应该放在解决瓶颈问题上。可以从内容和期限两个方面考虑系统的容量规划。</div><div></div><div>　　从内容上来看，应该考虑的主要内容包括：硬件容量规划、软件规划、网络规划。硬件容量规划包括磁盘空间、CPU、I/O等规划。软件规划包括操作系统的安装和配置规划、数据库规划、数据库对象内容和数量规划等。网络规划包括网络硬件、网络软件和协议、网络客户数量流量和分布、网络拓扑结构等规划。</div><div></div><div>　　从期限上来看，应该考虑短期、中期和长期规划。短期规划的目的是满足当前日常业务的需要。中期规划主要是满足业务发展和扩大的需要。长期规划主要是满足业务极限需要等。例如，如果预测某个系统的当前并发用户数量是1000，3年后的用户可能达到1000万，那么这时既不能按照1000用户的需求来设计，也不能一下子按照1000万用户的需求来设计，一定要采取一个折中的形式。</div><div></div><div>　　任务三：应用架构设计。</div><div></div><div>　　应用架构设计包括数据库设计、应用程序设计和相应的技术架构设计。</div><div></div><div>　　数据库设计应该考虑数据库的逻辑需求、数据库的创建方式和数量、数据库数据文件和日志文件的物理位置等。一般情况下，可以在Microsoft SQL Server 2008系统成功安装之后，根据规划的目标，手工创建数据库。</div><div></div><div>　　应用设计应该考虑开发工具的选择、API技术、内部资源和外部资源的结合、应用架构的分布等。需要强调是在应用设计时，DBA应该与开发人员共同工作，确保他们编写出优化的代码，尽可能地使用服务器的资源。</div><div></div><div>　　技术架构设计主要包括表示层、逻辑层和数据层的分布。这些分布不应该考虑到硬件资源和用户需求。既不能片面地追求过高的硬件资源，也不能仅仅局限于当前的环境，一定要按照可扩展的观点来综合考虑。</div><div></div><div>　　任务四：管理数据库对象。</div><div></div><div>　　管理数据库对象是使用数据库的最基本、最重要的工作。这些对象包括表、索引、视图、存储过程、函数、触发器、同义词等。为了完成管理数据库对象的工作，DBA应该能够很好地回答诸如下面的这些问题。</div><div></div><div>　　系统应该包括哪些数据?</div><div>　　应该怎样存储这些数据?</div><div>　　应该在系统中创建哪些表?</div><div>　　应该在这些表中创建哪些索引，以便加速检索?</div><div>　　是否应该创建视图?为什么要创建这些视图?</div><div>　　应该创建哪些存储过程、函数、CLR对象?</div><div>　　应该在哪些表上创建触发器?应该针对哪些操作创建触发器?</div><div>　　是否应该创建同义词?</div><div>　　任务五：存储空间管理。</div><div></div><div>　　存储空间管理任务就是怎样为数据分配空间、怎样保持空间可以满足数据的不断增长。随着业务量的继续和扩大，数据库中的数据也会逐渐地增加，事务日志也不断地增加。存储空间管理任务主要围绕下面几个问题。</div><div></div><div>　　当前的数据库由那些数据文件组成?</div><div>　　事务日志的大小应该如何设置?</div><div>　　数据的增长速度是多大?</div><div>　　如何配置数据文件和日志文件的增长方式?</div><div>　　数据库中的数据何时可以清除或转移到其他地方?</div><div>　　任务六：安全管理。</div><div></div><div>　　安全性是DBA重要的日常工作之一。安全管理的主要内容包括账户管理和权限管理。账户管理就是在数据库中应该增加哪些账户、这些账户应该组合成哪些角色等等。权限管理是对象权限和语句权限的管理，应该回答下面这些问题：</div><div></div><div>　　这些账户或角色应该使用哪些对象?</div><div>　　这些账户或角色应该对这些对象执行哪些操作?</div><div>　　这些账户或角色应该在数据库中执行哪些操作?</div><div>　　如何设置架构?如何建立架构和对象、架构和用户的关系?</div><div>　　任务七：备份和恢复。</div><div></div><div>　　无论系统运行如何，系统的灾难性管理是不可缺少的。天灾、人祸、系统缺陷都有可能造成系统的瘫痪、失败。怎样解决这些灾难性问题呢?办法就是制订和实行备份和恢复策略。备份就是制作数据的副本，恢复就是将数据的副本复原到系统中。备份和恢复工作是DBA的一项持续性的重要工作，其执行频率根据数据的重要程度和系统的稳定程度来确定。</div><div></div><div>　　任务八：性能监视和调优。</div><div></div><div>　　根据企业的经营效益评价企业的管理水平，根据学生的考试成绩评价学生的学习好坏。作为一个大型软件系统，Microsoft SQL Server 2008系统的运行好坏必须得到正确地监视、评价和相应的调整。这是DBA的一项高级工作。借助一些工具和运行性能指标，DBA应该能够监视系统的运行。如果某些运行指标出现了问题，DBA应该及时地采取补救措施，使得系统始终保持高效运行状态。</div><div></div><div>　　任务九：调度作业。</div><div></div><div>　　DBA不可能一天24小时不停地盯住系统的运行，及时地执行某些指定的操作。Microsoft SQL Server 2008系统提供了许多工具，DBA应该充分利用这些工具和机制，解决下面一些问题。</div><div></div><div>　　调度哪些作业应该由系统执行?</div><div>　　这些作业应该在何时执行?</div><div>　　如何确保这些作业可以正确地执行?</div><div>　　如果自动执行的作业执行失败时，应该如何处理?</div><div>　　如何使得系统可以均衡地执行相应的操作?</div><div>　　任务十：网络管理。</div><div></div><div>　　作为一种分布式的网络数据库，网络管理的任务更加的重要。Microsoft SQL Server 2008系统提供了网络管理工具和服务，DBA应该借助这些工具进行服务规划和管理网络操作。</div><div></div><div>　　任务十一：高可用性和高可伸缩性管理。</div><div></div><div>　　作为一个DBA，必须保持系统具有高可用性和高可伸缩性。可用性是一项度量计算机系统正常运行时间的指标。可伸缩性描述应用程序可以接受的并发用户访问的数量问题。影响系统可用性的主要因素包括：网络可靠性、硬件故障、应用程序失败、操作系统崩溃、自然灾害等。无论是数据库系统管理员，还是应用程序设计人员，都应该最小化系统破坏的几率，最大化系统的可用性。在设计系统的可用性时，应该确定采取什么样的可用性策略来满足可用性的需求。</div><div></div><div>　　可用性的需求可以通过3个方面描述，即运行的时间、连接性需求和数据的紧密和松散要求。在确定可用性的需求时，首先考虑系统的运行时间。一般地，数据库应用程序有两种运行时间，即在工作时间是可用的和在任何时间都是可用的。如果只是要求在工作时间是可用的，那么可以把系统的维护等工作安排在周末进行。但是，有许多应用程序要求每天运行24小时、每周运行7天，例如，在线超市等，这时必须采取措施保证系统总是运行的。不同的应用程序有不同的连接性要求。大多数的应用程序和电子商务解决方案要求采用可靠的网络连接。这时，要求永久性的在线连接，必须最小化各种异常现象的发生。有些应用程序允许用户离线使用。这时，系统的可用性要求降低了。大多数应用程序要求数据是同步使用的。用户对数据的请求，系统必须立即做出回应。这是紧密型的数据要求，这种情况必须保证系统的高可用性。有些应用程序不需要数据是同步的，对用户的请求可以延迟回应。这种要求是数据松散型的要求，这时系统的可用性需求比较低。</div><div></div><div>　　任务十二：故障解决。</div><div></div><div>　　虽然不希望Microsoft SQL Server 2008系统出现故障，但是故障可能是无法避免的。这些故障可能每天都会发生。有些故障是人为不小心造成的，有些故障可能是系统中的缺陷形成的，有些故障可能是莫名其妙的。作为一个DBA，在系统中的其他用户心目中是Microsoft SQL Server系统的权威。无论是大事还是小事，DBA都应该做到迅速诊断、准确判断、快速修复。从这个意义上来说，DBA是一个数据库系统的专业医生。</div><div></div><div>原文出处：http://www.mysqlops.com/2011/11/03/sql-server-dba.html</div><div>TechTarget中国原创内容，原文链接：http://www.searchdatabase.com.cn/showcontent_54849.htm</div><img src ="http://www.blogjava.net/abin/aggbug/389510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/abin/" target="_blank">abing</a> 2012-10-13 13:00 <a href="http://www.blogjava.net/abin/archive/2012/10/13/389510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql in exists</title><link>http://www.blogjava.net/abin/archive/2012/10/11/389373.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Thu, 11 Oct 2012 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/abin/archive/2012/10/11/389373.html</guid><wfw:comment>http://www.blogjava.net/abin/comments/389373.html</wfw:comment><comments>http://www.blogjava.net/abin/archive/2012/10/11/389373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/abin/comments/commentRss/389373.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/abin/services/trackbacks/389373.html</trackback:ping><description><![CDATA[<div>select t.empno,nvl(t.mgr,'MGR') from emp t where t.deptno in&nbsp;(select s.deptno from dept s where s.deptno='1')<br /><div>select t.empno,nvl(t.mgr,'MGR') from emp t where exists&nbsp;(select s.deptno from emp s where s.deptno='1' and t.deptno=s.deptno)<br /><div>select t.empno,nvl(t.mgr,'MGR') from emp t where t.deptno is not null and exists&nbsp;(select s.deptno from emp s where s.deptno='1' and t.deptno=s.deptno)</div></div><div>select t.empno,nvl(t.mgr,'MGR') from emp t where not exists&nbsp;(select s.* from dept s where s.deptno &nbsp;in(2,3) and t.deptno=s.deptno)</div><div>select t.empno,nvl(t.mgr,'MGR') from emp t where t.deptno in&nbsp;(select s.deptno from dept s where s.deptno not in(2,3))</div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div><img src ="http://www.blogjava.net/abin/aggbug/389373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/abin/" target="_blank">abing</a> 2012-10-11 13:31 <a href="http://www.blogjava.net/abin/archive/2012/10/11/389373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>