亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Best Practices Analyzer Tool for Microsoft S

系統(tǒng) 1928 0

from : http://www.cnblogs.com/yxp132/articles/49224.html


Best Practices Analyzer Tool for Microsoft SQL Server 2000 Microsoft SQL Server 開發(fā)團(tuán)隊(duì)開發(fā)的一個數(shù)據(jù)庫管理工具,可以讓你檢測設(shè)計(jì)的數(shù)據(jù)庫是否遵循 SQL Server 操作和管理的最佳實(shí)踐準(zhǔn)則。這些準(zhǔn)則公認(rèn)有助于提高數(shù)據(jù)庫的性能和效率,并讓應(yīng)用程序易于維護(hù)。

?

1,安裝SQL BPA后,啟動界面如下所示:
Best Practices Analyzer Tool for Microsoft SQL Server 2000

2,開始使用SQL BPA最佳實(shí)踐分析器

安裝完成后會有一個 SQL Server Best Practices Analyzer User Guide Word 文檔,如何使用講解的很清楚,基本步驟如下:

1 )登錄 SQL BPA

2 )添加分析 / 檢測的 SQL Server 實(shí)例

這里需要輸入 SQL Server 實(shí)例名稱, Friendly Name 用來和后面創(chuàng)建 Best Practice Group 相關(guān)聯(lián)(和 SQL Server 實(shí)例名稱保持一樣就可以了)。 Database List 的缺省值為 * ,表示包含當(dāng)前 SQL Server 實(shí)例的所有數(shù)據(jù)庫。但是, BPA 會跳過對‘ master ,? tempdb , msdb ,? pubs , and? northwind ’等數(shù)據(jù)庫的檢測。

3 )管理 Best Practice Groups (最佳實(shí)踐組)

首先需要創(chuàng)建一個 Best Practice Group ,其實(shí)是組合了一些 Rules ,并和前面輸入的 SQL Server 實(shí)例進(jìn)行關(guān)聯(lián)。

4) 分析 SQL Server 實(shí)例

將前面創(chuàng)建 Best Practice Group 移到 Best Practice Groups to be Executed 列表中,就可以按照前面定義的 Rules 來執(zhí)行,并產(chǎn)生 Report 提供改進(jìn)的建議和準(zhǔn)則。

?

3,SQL BPA v1.0包括的Rules

我覺得這個是重點(diǎn),因?yàn)橹挥忻靼琢诉@些 SQL Server 操作和管理的最佳實(shí)踐準(zhǔn)則,才能在設(shè)計(jì)數(shù)據(jù)庫和編寫 T-SQL 腳本時,盡量按照這些 Rules 來操作,提高 SQL Server 和應(yīng)用程序的性能和效率。

其實(shí)所有的 Rules 都在這里( English Version file:///C:/Program%20Files/Microsoft%20SQL%20Server%20Best%20Practices%20Analyzer/html/RuleInformation.html#_Rule:_Explicit_Index_Creation ,請注意我是采用默認(rèn)路徑安裝的 SQL BPA ,如果你改變的安裝路徑,就不在這里了。

?

下面將一些自己比較感興趣的 Rules 整理了一下:

1 )數(shù)據(jù)庫設(shè)計(jì)

Rule: Tables without Primary Keys or Unique Constraints

檢測數(shù)據(jù)庫確保所有的 table 都有定義一個 Primary Key 或一列有 Unique Constraint 的定義。

?

Rule: User Object Naming (用戶對象的命名)

檢測以 sp_, xp_, or fn_ 為前綴命名的用戶對象,避免和 SQL Server 的內(nèi)置對象發(fā)生命名沖突。如果 SQL Server 發(fā)現(xiàn)存儲過程以 sp_ 作為前綴,就會先到 master 數(shù)據(jù)庫中查詢這個存儲過程,影響性能呵。

因此,要符合下列準(zhǔn)則:

不要使用 sp_ 前綴來命名用戶定義的存儲過程;

不要使用 xp_ 前綴來命名用戶定義的擴(kuò)展存儲過程;

不要使用 fn_ 前綴來命名用戶定義的函數(shù)。

其實(shí),可以通過使用 usp_, uxp_, or ufn_ 等前綴來命名就可以了, u 表示 user defined

?

2 T-SQL

Rule: Cursor FOR UPDATE column list

檢測 stored procedures, functions, views and triggers FOR UPDATE 子句。當(dāng)一個 cursor 定義了 FOR UPDATE 子句,則推薦提供明確的 column 列。 FOR UPDATE 用來定義 cursor 內(nèi)可更新的列。如果提供了 ?OF column_name ,則只允許修改列出的列。如果在沒有指定列的列表,除非指定了 READ_ONLY 并發(fā)選項(xiàng),否則所有列均可更新。 SQL Server 可以基于指定的列優(yōu)化操作。

?

Rule: Cursor Usage

檢測 stored procedures, functions, views and triggers 中是否正確定義 cursor 可更新性。在如下情況下,會報告失敗:

當(dāng)一個 cursor 沒有定義 FOR UPDATE 子句,但通過 cursor 來更新;

當(dāng)一個 cursor 定義了 FOR UPDATE 子句,卻沒有通過 cursor 來更新。

?

不過,一般我們盡量避免使用服務(wù)器端 cursor ,因?yàn)楸容^占用服務(wù)器內(nèi)存資源,影響 SQL Server 的性能。可以使用嵌套查詢或者 WHILE 語句,來代替 cursor 。即使使用 cursor ,也應(yīng)注意定義 cursor 的一些選項(xiàng),如 FAST_FORWARD

?

Rule: Explicit Index Creation

推薦使用 CLUSTERED or NONCLUSTERED 顯式創(chuàng)建 index

?

Rule: INSERT Column List

要求在使用 INSERT 時,明確提供 column 列表,提高代碼的可維護(hù)性。

?

Rule: Nested Triggers Configuration

檢測由于 nested triggers 的配置問題,未觸發(fā)的 triggers 。這個比較少有,直接貼過來了。

When 'nested triggers' configuration option is set to 0, any AFTER trigger defined on tables/views updated inside an INSTEAD OF trigger is not fired. This rule:

1) Checks the value of the configuration option and exits if it is not 0.

2) Scans all INSTEAD OF triggers and generates a list of tables/view being target of DML from within a trigger.

3) Checks whether any of the identified DML targets have AFTER triggers defined on them.

4) Reports non-compliance for any such case.

?

Rule: NOCOUNT Option in Triggers

檢測 triggers ,確保在 triggers 前面寫有 SET NOCOUNT ON

SQL Server 在每一條語句執(zhí)行完成后,都會發(fā)送 ’done’ 信息。這些信息會導(dǎo)致觸發(fā) trigger 的應(yīng)用程序可能產(chǎn)生一些意外的后果。因此,在 trigger 前面加上 SET NOCOUNT ON 是一個良好的設(shè)計(jì)習(xí)慣。

?

當(dāng)然,在 stored procedures, functions 中都推薦在前面添加 SET NOCOUNT ON 。這樣一系列 SQL 命令執(zhí)行影響的行數(shù)不會傳回客戶端,減少網(wǎng)絡(luò)流量,提高性能。

?

Rule: NULL Comparisons

檢測 stored procedures, functions, views and triggers 中涉及 NULL 常量的等于或不等于比較。推薦設(shè)置 ANSI_NULLS ON ,并且使用 IS 關(guān)鍵字來呵 NULL 常量進(jìn)行比較。

?

Rule: Results in Triggers

檢測 triggers ,確保 triggers 沒有數(shù)據(jù)返回給調(diào)用者。因此,不推薦在 triggers 中使用如下語句:

PRINT statement

SELECT (without assignment or INTO clause)

FETCH (without assignment)

?

Rule: Scoping of Transactions

檢測 stored procedures and triggers 中的 transaction 范圍,推薦 transaction 的開始和結(jié)束在同一 T-SQL 結(jié)構(gòu)內(nèi)。

?

一般而言,盡量縮小 transaction 的范圍,避免占用大量的資源,影響 SQL Server 性能。

?

Rule: SELECT *

檢測 stored procedures, functions, views and triggers SELECT * 的使用。盡管 SELECT *? 比較方便,但是會降低程序的可維護(hù)性。對 table or view 的改變,可能會引起錯誤或性能的改變。

因此,推薦在 SELECT 語句后面顯式指定字段列表。

?

Rule: SET Options

檢測 stored procedures and triggers 中如下 SET 語句的使用。

推薦如下選項(xiàng)設(shè)置為 ON:

  • ANSI_NULLS
  • ANSI_PADDING
  • ANSI_WARNINGS
  • ARITHABORT
  • CONCAT_NULL_YIELDS_NULL
  • QUOTED_IDENTIFIER

推薦如下選項(xiàng)設(shè)置為 OFF:

  • NUMERIC_ROUNDABOUT

Rule: Temp Table Usage

檢測 stored procedures and triggers 中臨時表的使用。當(dāng)創(chuàng)建臨時表時,需要創(chuàng)建 CREATE INDEX ,并且在使用完成后,需要釋放該臨時表。

因?yàn)榕R時表會產(chǎn)生大量的磁盤 IO 操作,因此推薦采用 TABLE 變量替換臨時表的使用。

不過,由于并發(fā)執(zhí)行的限制和統(tǒng)計(jì)信息的維護(hù),當(dāng)有大量的數(shù)據(jù)插入臨時表時,仍推薦采用臨時表。

?

Rule: TOP without ORDER BY

檢測 stored procedures, functions, views and triggers 中缺少 ORDER BY TOP 語句。在使用 TOP 語句時,推薦指定排序條件。否則,產(chǎn)生的結(jié)果將于 SQL 執(zhí)行計(jì)劃相關(guān)而導(dǎo)致異常的行為。

?

Rule: Use of Schema Qualified Tables/Views

檢測 stored procedures, functions, views and triggers 中引用 tables and views 時,擁護(hù)者 owner 是否指定。雖然在 SQL Server 中引用特定的對象時,可以不指定 server, database and owner(schema) ,也就是說不用 server_name.database_name.owner_name.*** 這么麻煩,但是 SQL Server 推薦當(dāng)在 stored procedure, function, view or trigger 中引用 table or view 時,最好指定 table or view 的擁有者。

?

當(dāng) SQL Server 查詢未指定 owner table/view 對象時,首先查詢?nèi)笔〉? owner ,然后才是 dbo 。這樣,會導(dǎo)致 SQL Server 產(chǎn)品額外的運(yùn)行成本。通過指定 owner ,可以改進(jìn) SQL Server 的性能。(第一次聽到這種說法)

?

4,參考文檔及相關(guān)資源

工具下載 URL:

http://www.microsoft.com/downloads/details.aspx?FamilyId=B352EB1F-D3CA-44EE-893E-9E07339C1F22&displaylang=en

視頻下載 URL:

http://www.microsoft.com/china/msdn/events/webcasts/shared/msdntv/episode.aspx?xml=/china/msdn/events/webcasts/msdntv/20040610sqlserverck/manifest.xml

Best Practices Analyzer Tool for Microsoft SQL Server 2000


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品久久久久久久久福利 | 色综合天天综合 | 亚洲成a人片毛片在线 | 五月天激情在线 | 亚洲精品欧洲精品 | 久久国产影视免费精品 | 日本在线网址 | 99久久精品免费看国产一区二区 | www夜夜操 | 伊人色综 | 亚洲综合视频一区 | 国产高清不卡 | 色婷婷精品大全在线视频 | 97伦理| 免费国内精品久久久久影院 | 中文字幕在线观看免费视频 | 伊人久久青草青青综合 | 曰本亚洲欧洲色a在线 | 免费黄色一级网站 | 日韩毛片最新看 | 99热久久这里只有精品6 | 青草社区在线观看 | 女人十八毛片一级毛片免费看 | 精品国产综合区久久久久久 | 男女91视频| 在线高清免费爱做网 | 香蕉国产在线 | 在线观看欧美国产 | 99热热| 美女久久久久久久久久久 | 国产999视频| 欧美在线成人免费国产 | 天天射天天干天天舔 | 精品国产免费人成高清 | 奇米影| 91成人影院未满十八勿入 | 免费特黄一级欧美大片 | 停停色 | 日本久久久久中文字幕 | 全毛片 | 性xxx免费视频|