1. 程式人生 > >SQL2005疑難解決方案大全

SQL2005疑難解決方案大全

目錄

目錄

無法連線到伺服器   
伺服器:訊息18452,     級別16,狀態1   
[Microsoft][ODBC     SQL    Server     Driver][SQL     Server]使用者‘sa’登陸失敗。原因:未與信任SQL     Server連線相關聯   

該錯誤產生的原因是由於SQL     Server使用了"僅     Windows"的身份驗證方式,因此使用者無法使用SQL    Server的登入帳戶(例如     sa )進行連線,解決方法如下   
    
設定允許SQL     Server身份登入     (基本上這個很有用)
    操作步驟:
    1、在企業管理器中,展開"SQL    Server組",滑鼠右鍵點選SQL     Server伺服器的名稱   
    2、選擇"屬性"   
    3、再選擇"安全性"選項卡   
    4、在"身份驗證"下,選擇"SQL     Server和    Windows"
    5、確定,並重新啟動SQL     Server服務

6、選擇"安全性"   
    7、再選擇"登入名"-sa-右鍵屬性-狀態-將”登入”設定為啟用  
    8、從“開始選單”-SQL Server2005-配置工具-外圍配置器-服務和連線的外圍配置-遠端-本地連線和遠端連線-同時使用TCP/IP和named pipse
    9、確定,並重新啟動SQL     Server服務

開啟1433埠:

1、  開啟SQL Server Configuration Manager

2、SQL Native Client 配置-客戶端協議 - TCP/IP – 右鍵屬性-將IP地址預設埠改為1433

3、SQL Server 2005 網路配置 –Lydia的協議- TCP/IP – 右鍵屬性-將IP地址動態埠改為1433

一、使用SQL SERVER2005的時候常常遇到中文字元為亂碼的情況,經過研究發現,設定SQL的排序規則可以解決這個問題。

1、登入伺服器開啟Microsoft SQL ServerManagement Studio。

2、在要修改的資料庫上單擊滑鼠右鍵,並選擇“屬性”。

3、在彈出的資料庫屬性視窗中點選“選擇頁”中的“選項”。

4、將排序規則由預設的SQL_Latin1_General_CP1_CI_AS修改為Chinese_PRC_CI_AS。

5、點選確定就OK。

注:如果無法修改的話,請嘗試關閉所有與此資料庫的連線,實在不行的話請重啟動SQL SERVER服務。

1. ALTER DATABASE (DBNAME) SETOFFLINE WITH ROLLBACK IMMEDIATE
ALTER DATABASE (DBNAME) SET ONLINE WITH ROLLBACK IMMEDIATE
ALTER DATABASE (DBNAME) COLLATE (排序規則)

如果資料庫正在使用的話,可以依次執行以上語句

  • 確保具有重新建立使用者資料庫及這些資料庫中的所有物件所需的全部資訊或指令碼。
  • 使用工具(例如大容量複製)匯出所有資料。
  • 刪除所有使用者資料庫。
  • 重新生成指定新的排序規則的 master 資料庫(詳細步驟如下)。

重新生成 master 資料庫:

      一、將SQL Server 2005安裝光碟放入光碟機;

     二、在作業系統上選擇“開始”--“執行”(輸入CMD)--“回車”;

     三、於彈出的命令視窗通過“cd..”指令,回到磁碟的根目錄(如c:\);

     四、接著鍵入你光碟所在碟符,如“f:”,回車;

     五、接著鍵入(“setup.exe/qn INSTANCENAME=MSSQLSERVERREINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=123SQLCOLLATION=Chinese_PRC_90_CI_AS”)命令重新構建master 資料庫;

(備註:如果是預設例項,則INSTANCENAME的值為“MSSQLSERVER”,有例項則錄入例項;SAPWD的值為資料庫密碼;SQLCOLLATION為你所定義的排序規則,中文簡體則為“Chinese_PRC_90_CI_AS”)

     六、接著等幾分鐘候電腦自動執行,期間是沒有提示執行完成視窗的,待光碟機燈不閃爍及硬碟不連續讀盤的時候表示安裝完成;

七、接著重啟電腦,重新建資料庫,將之前匯出的資料匯入就OK了~!

方法如下:

配置工具-> SqlServer Configuration Manager-> MSSQLSERVER的協議

看看TCP/IP協議是否啟動,如果啟動,右鍵選單點"屬性" ,在分頁選單中選"IP地址",把"IP1"和"IP2"中"TCP埠"為1433,

"已啟用"改為"是"

配置工具-> SqlServer Configuration Manager-> SQL Native Client 配置-> 客戶端協議-> TCP/IP

選擇TCP/IP右鍵選單中"屬性",確認"預設埠"是1433,"已啟用"為"是"

從SQL SERVER 2000中備份的資料庫還原到SQL SERVER 2005上

,打算新建一個數據庫關係圖,可是在MicrosoftSQL Server Management Studio中一點資料庫關係圖的資料夾,就出現一個“此資料庫沒有有效所有者,因此無法安裝資料庫關係圖支援物件。若要繼續,請首先試用"資料庫屬性"對話方塊的"檔案"頁或ALTERAUTHORIZATION語句將資料庫所有者設定為有效登入名,然後再新增資料庫關係圖支援物件”的提示
按照他說的指定所有者,可惜還是不對,查了一下,應該執行如下語句:
USE [master]
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'資料庫名',@new_cmptlevel=90
GO

因為2000備份的資料庫還原到2005以後,相容級別是80,更新成90就OK了

當把從其它機器備份出來的資料庫,還原到自己的機器上後,在SSMS中點選這個資料庫的資料庫關係圖時,出現了以下提示:

此資料庫沒有有效所有者,因此無法安裝資料庫關係圖支援物件。若要繼續,請首先使用“資料庫屬性”對話方塊的“檔案”頁或ALTERAUTHORIZATION語句將資料庫所有者設定為有效登入名,然後再新增資料庫關係圖支援物件。

資料庫中確定是有資料庫關係圖的。提示給出了兩種方法,第一種試了幾次都不好用,第二種方法倒是一次成功,具體在SSMS中執行以下命令:

ALTER AUTHORIZATION ON database::mydbname TO sa

把mydbname修改為實際的資料庫名稱,就可以把所有者設定為sa了

2008年1月19日,1:06:00 | 浪淘沙

#中的Process類可方便的呼叫外部程式,所以我們可以通過呼叫cmd.exe程式

加入引數 "/c " 要執行的命令來執行一個dos命令
(/c代表執行引數指定的命令後關閉cmd.exe /k引數則不關閉cmd.exe)

1 private string RunCmd(string command)
2 {
3 //例項一個Process類,啟動一個獨立程序
4 Process p = new Process();
5
6 //Process類有一個StartInfo屬性,這個是ProcessStartInfo類,包括了一些屬性和方法,下面我們用到了他的幾個屬性:
7
8 p.StartInfo.FileName = "cmd.exe"; //設定程式名
9 p.StartInfo.Arguments = "/c " command; //設定程式執行引數
10 p.StartInfo.UseShellExecute = false; //關閉Shell的使用
11 p.StartInfo.RedirectStandardInput = true; //重定向標準輸入
12 p.StartInfo.RedirectStandardOutput = true; //重定向標準輸出
13 p.StartInfo.RedirectStandardError = true; //重定向錯誤輸出
14 p.StartInfo.CreateNoWindow = true; //設定不顯示視窗
15
16 p.Start(); //啟動
17
18 //p.StandardInput.WriteLine(command); //也可以用這種方式輸入要執行的命令
19 //p.StandardInput.WriteLine("exit"); //不過要記得加上Exit要不然下一行程式執行的時候會當機
20
21 return p.StandardOutput.ReadToEnd(); //從輸出流取得命令執行結果
22
23 }


以下實現複製步驟(以快照複製為例)
執行平臺SQL SERVER2005
一、準備工作:


1.建立一個 WINDOWS 使用者,設定為管理員許可權,並設定密碼,作為釋出快照檔案的有效訪問使用者。
2.在SQL SERVER下實現釋出伺服器和訂閱伺服器的通訊正常(即可以互訪)。開啟1433埠,在防火牆中設特例

3.在釋出伺服器上建立一個共享目錄,作為釋出快照檔案的存放目錄。例如:在D盤根目錄下建資料夾名為SqlCopy
4.設定SQL 代理(釋出伺服器和訂閱伺服器均設定)
開啟服務(控制面板---管理工具---服務)
---右擊SQLSERVERAGENT---屬性---登入---選擇“此帳戶“
---輸入或選擇第一步中建立的WINDOWS使用者
---“密碼“中輸入該使用者密碼

5.設定SQL SERVER 身份驗證,解決連線時的許可權問題(釋出、訂閱伺服器均設定)
步驟為:物件資源管理器----右擊SQL例項-----屬性----安全性----伺服器身份驗證------選“SQL Server和WINDOWS“,然後點確定
6.開啟SQL Server2005的網路協議TCP/IP和管道命名協議並重啟網路服務。

7.在SQL Server中建立步驟1中對應的系統使用者登陸名,作為釋出資料庫的擁有者(設定為dbo_owner和public)。

8.以系統超級使用者sa登陸SQL Server建立資料庫和表。
9.釋出伺服器和訂閱伺服器互相註冊
步驟如下:檢視----單擊以註冊伺服器----右鍵資料庫引擎----新建伺服器註冊-----填寫要註冊的遠端伺服器名稱------身份驗證選“SQL Server驗證“-----使用者名稱(sa) 密碼------建立組(也可不建)-----完成。

10.對於只能用IP,不能用計算機名的,為其註冊伺服器別名
二、開始:


釋出伺服器配置(在釋出伺服器上配置釋出和訂閱)
1. 選擇複製 節點
2. 右鍵本地釋出 ----下一步---------系統彈出對話方塊看提示----直到“指定快照資料夾“
----在“快照資料夾“中輸入準備工作中建立的目錄(指向步驟3所建的共享資料夾)------選擇釋出資料庫-------選擇釋出型別-------選擇訂閱伺服器型別-------選擇要釋出的物件------設定快照代理-------填寫釋出名稱。


3. 右鍵本地訂閱--------選擇釋出伺服器-------選擇訂閱方式(如果是在伺服器方訂閱的話選擇推送訂閱反之
選擇請求訂閱)-------填加訂閱伺服器--------選擇代理計劃(一般選擇連續執行)---------其餘選擇預設項。


至此, SQL SERVER2005 同步複製就完成了。使用複製技術,使用者可以將一份客戶端的資料釋出到多臺伺服器上,從而使不同的伺服器使用者都可以在許可權的許可的範圍內共享這份資料。複製技術可以確保分佈在不同地點的資料自動同步更新,從而保證資料的一致性,就無需程式設計實現客戶端和伺服器端資料同步了!大大提高了工作效率!

釋出系比較簡單嘅,冇咩需要技術難度。
但系訂閱就需要留意下了。喺設定好嘅釋出增加訂閱,會要求你新增訂閱伺服器。如果訂閱伺服器系用域名或IP地址去連線果陣會pop個嚴重錯誤:
------------------------------
無法連線到 remote.oicp.net。
SQL Server 複製需要有實際的伺服器名稱才能連線到伺服器。不支援通過伺服器別名、IP 地址或任何其他備用名稱進行連線。請指定實際的伺服器名稱“GZ-SVR”。 (Replication.Utilities)
------------------------------
咁樣就唔可以繼續落去了……
解決方案有2個:
1,將各遠端伺服器VPN至總公司,設好DNS,等總公司嘅SQL可以好似訪問區域網內機器咁訪問呢D遠端伺服器。
2,設好總公司SQL嘅“別名”,等SQL自己連去遠端伺服器。
我用緊2號方案:
EX:遠端伺服器的域名系'remote.oicp.net',實際機器名系'GZ-SVR'
=》喺總公司SQL度,開啟SQL Server Configuration Manager,去SQL Native Client配置,再開“別名”
=》新建別名:別名=GZ-SVR,埠=1433,伺服器=remote.oicp.net,協議=TCP/IP
搞掂!再做釋出就冇問題了。

2006-11-04補充:設定好之後,新增訂閱伺服器果陣就用GZ-SVR呢個別名去驗證連線。

另外,兩臺機器不能重名。如果重名的話要改成不一樣的名字。
然後安裝SQL 2005,注意,必須在改名後安裝,我就是卡在這裡了,安裝後再改名就不行了(也許能在哪裡改SQL認定的機器名的名稱,但是我沒找到)
然後,在配置工具裡建立別名,別名要和對方的機器名一樣,必須一樣。
然後就能釋出和訂閱了,用別名直接連上對方就可以了,另外訂閱必須在釋出的機器上做

Q.SQL Server 2005產品線主要有幾個版本?
A. SQL Server 2005 產品家族被重新設計以更好的滿足不同客戶的需求,它包含以下幾個版本:

      SQL Server 2005 企業版  是用於企業關鍵業務應用的完全整合的資料管理和商業智慧分析的平臺。它是對那些有著複雜的工作負荷,高階的分析需求和嚴格的高可用需求的公司適合的選擇。它的特性包括:無限的伸縮和分割槽功能,高階資料庫映象功能,完全的線上和並行操作能力,資料庫快照功能,包括完全的OLAP和資料探勘的高階分析工具,報表生成器和定製的高擴充套件的報表功能,先進的整合服務。64位企業版支援到64顆CPU, 記憶體不限。

      SQL Server 2005 標準版 是一個完全的資料管理和商業智慧分析平臺。它為那些需要比SQL Server 2005工作組版更多功能(如商業智慧工具)的中型企業和大型部門而設計。它的特性包括:高可用性,64-bit支援,資料庫映象,增強的整合服務,分析服務和報表服務,資料探勘,完全的資料複製功能和釋出功能。標準版支援4顆CPU,記憶體不限(64位)。

      SQL Server 2005 工作組版 是SQLServer 產品線中最新的SKU,它將提供一個更快捷且更易使用的資料庫解決方案。對那些不滿足SQL Server 2005 Express版功能,在尋找一個可負擔的起的完全資料庫產品的中小型組織而言,它是一個理想的選擇。它的特性包括:管理工具集、匯入/匯出、有限的複製/釋出能力、日誌傳遞備份等功能。工作組版支援2顆CPU,3GB記憶體。

      SQL Server 2005 精簡版(Express Edition) 是SQL Server 2005 資料庫引擎中免費的和可再分發的版本。它為新手程式設計師提供了學習,開發和部署小型的資料驅動應用程式最快捷的途徑。它的特性包括:一個簡單的管理工具,一個報表嚮導和報表控制元件,資料複製和客戶端。它可用免費從Web下載。精簡版支援1顆CPU, 1 GB 記憶體。

    現在的SQL Server版本家族把一個企業所需要的所有資料相關功能整合在一個產品包裡,並提供以上版本供不同客戶根據自己所需選擇最佳解決方案。SQL Server 2005將是一個集資料管理、商業智慧為一體的統一資料平臺,客戶可以在這個平臺上輕鬆搭建任何資料相關的應用,如資料管理、複製釋出、資料轉換、分析服務、報表服務、資料探勘等,並不再需要為上述各類複雜需求分別支付額外付費。

標題:    Microsoft    SQL    Server    Management    Studio   
   ------------------------------   
    
   建立    對於    登入“worthcom”失敗。      (Microsoft.SqlServer.Smo)   
   ------------------------------   
   其他資訊:   
    
   執行    Transact-SQL    語句或批處理時發生了異常。    (Microsoft.SqlServer.ConnectionInfo)   
    
   ------------------------------   
    
   此版本的    Microsoft    Windows    不支援    MUST_CHANGE    選項。    (Microsoft    SQL    Server,錯誤:    15195)   
   ------------------------------   

解決方法:只需建立時取消強制密碼過期選項

 因為在安裝的時候,選擇WIN驗證模式,現在不知道如何啟用。 
   
  如果在安裝過程中選擇“Windows   身份驗證模式”,則  sa   登入將被禁用。如果稍後將身份驗證模式更改為“SQL  Server   和   Windows   身份驗證模式”,則  sa   登入仍處於禁用狀態。若要啟用  sa   登入,請使用   ALTER  LOGIN   命令。  
  sa   登入只能使用   SQL   身份驗證連線到伺服器。 
   
  在   SQL   Server  Management   Studio   物件資源管理器中,右鍵單擊伺服器,再單擊“屬性”。 
  在“安全性”頁上的“伺服器身份驗證”下,選擇新的伺服器身份驗證模式,再單擊“確定”。 
  在   SQL   Server  Management   Studio   對話方塊中,單擊“確定”以確認需要重新啟動  SQL   Server。  
  在物件資源管理器中,右鍵單擊您的伺服器,再單擊“重新啟動”。如果執行有  SQL   Server   代理,則也必須將其重新啟動。 
   
  執行下列語句以啟用   sa   密碼並分配一個密碼。 
  ALTER   LOGIN   sa   ENABLE   ;  
  GO  
  ALTER   LOGIN   sa   WITH   PASSWORD  
=   '<password>'  ;  
  GO  

在 SQL Server 2005 Manger Studio 中錄入資料的時候,不要把游標移動到只讀的列中,否則你的中文就不要想錄入了

另外,設計表的時候可能也得注意,如果你想在SQL Server 2005 Manger Studio 中錄入中文,則不要把只讀列設定為第1列,比如上面的測試表 ta, 如果你已經錄入了資料,再用SQL Server 2005 Manger Studio 開啟的時候,你會發現游標是定位在第1條記錄的第1列(標識列,也是隻讀列)的,這樣會導致你根本無法錄入中文

這應該算是SQL Server 2005Manger Studio 的一個BU吧

在 SQL Server 2005 Manger Studio 中,只讀列顯示的資料是灰色的(比正常列的顏色稍淡一些,仔細看一下就能區分出來

安裝 sql2005 時 com+ 警告的問題

2008-07-29 17:52

今天安裝 MSSQL2005,由於原來我的電腦上安裝了 MSSQL2000,上網查了些資料,說是可以共存,不過需要先安裝 MSSQL2005, 然後安裝 MSSQL2000,因為sql2000下有很多資料庫,想了下,先解除安裝sql2000,再裝sql2005,再裝 sql2000 比較麻煩,於是就直接安裝.


安裝的時候提示 com+ 元件有一個"警告",想了下,只是一個警告,也不是錯誤,大不了一個功能用不了,而且使用jdbc的,和com+應該沒有什麼關係吧,就跳過了,安裝過程中提示了幾個錯誤,想問題不大,就沒有管,直接忽略.


安裝完成後,想在2005下新建一個庫,報錯,無法安裝.重啟,問題依舊.為了解除安裝完全2000和2005,重啟進入安全模式,先解除安裝2000,沒有問題,然後解除安裝2005,無法解除安裝,似乎是一個install服務無法啟動.想想問題不大,安全模式很多服務沒有啟動,於是重啟正常啟動,噩夢就來了.


首先是卡巴無法啟動,防火牆點選無反應,網路連線圖示沒有顯示(就是那個兩個小電腦),以為中病毒了,開啟IE,無法上網,但是ping www.baidu.com,可以ping通,開啟控制面板新增刪除程式,暈死,竟然沒有反應,一片空白,沒有顯示程式列表,重啟若干次無法解決,速度超級慢,不想重灌呀,好多東西,也沒辦法,誰讓自己做了吃螃蟹的人呢.後來想到啟動選單裡有個"使用最後一次正確配置",死馬當活馬醫,沒想到進入後卡巴復活了,嗯,有門.

進入控制面板新增刪除程式,嘿嘿,有顯示了,趕快解除安裝掉sql2005,刪除MicorSoft SQLServer的資料夾,最後還用優化大師清理了一下注冊表,重啟,似乎一切都過去了.


重新安裝sql2005,還是老問題,com+有一個"警告",這次不能大意,不然又要折騰好久,
上網查了一下,似乎是MSTDC這個服務出現問題,也順便找到了解決方法:

在命令列下執行 msdtc -uninstall ,解除安裝 msdtc 服務;
再執行 msdtc -install ,安裝 msdtc 服務。

之後再安裝SQL2005,問題解決,阿彌陀佛!

SQL2005分五個版本,如下所列,
  1.Enterprise(企業版),
2.Development(開發版),
  3.Workgroup,(工作群版)
  4.Standard,(標準版)
  5.Express.(嗯,估且就叫它簡易版吧)
  這幾個版本,我們究竟應該使用哪一版呢﹖
  這是許多初學SQL2005的人最常問的問題。
  我簡單的比較一下Enterprise,Development和Express等三個版本:以功能言,Enterp
rise版和Development版的功能一模一樣。兩者的差別,除了授權不同外,最主要的差別是
:
  Enterprise版的資料庫引擎只能安裝在Win2003Server(或其他Server)。
  如果你想安裝在WindowsXPPro系統上,你應該安裝SQL2005Development版(開發版)。
  注:有人問,什麼是「資料庫引擎」。嗯,資料庫引擎是SQL2005的核心,是最主要的
資料庫管理功能模組。沒有它,就不是資料庫管理系統了。
  很多人下載SQL2005Express版,因為它是免費的,可以直接從微軟網站上下載。但是
,它除了支援的記憶體比較少外,最主要的是
  它缺少相當於SQL2000下的「企業管理器」和「查詢分析器」。
  注:SQL2000下的「企業管理器」和「查詢分析器」在SQL2005已合為一,稱為Managem
entStudio。
  因此,如果你是初學者,如果你只是想要在家裡學習學習,如果你的環境是WindowsX
PPro,那麼,你應該選擇的是SQL2005Development(開發版),而不是SQL2005Enterprise(
企業版)或SQL2005Express(簡易版)。
  SQL2005入門者,你選擇正確了嗎﹖
我就是從“Microsoft.SQL.Server.2005.Enterprise.Edition.DVD-ZWTiSO,請大家下載加
速"
上下載的,說明檔案裡顯示是"標準版和企業版",但是我在安裝的時候顯示不能滿足最低的
硬體要求(我的機器的配置:server2003企業版AMD2800+,512MDDR400記憶體,系統盤有16
G的空閒空間),在元件選擇框裡,只能看見nativeclient和安裝sample資料庫,這究竟是
什麼原因?2005的硬體要求真的那麼高嗎?或者說這到底影響安裝和使用嗎?
在我不改變硬體的情況下怎麼解決上面的問題啊
應該是滿足硬體要求的,看安裝時的提示是什麼吧

2005資料庫安裝心得

我的環境是xpsp2EN,SQL2005Dev版,記憶體512MB。
  首先,我的系統已經使用半年多了,裝有VS2003,以前還裝過SQL2000,netFramewor
k2.0beta,還有好幾個beta版的SQL2005,可謂十分“骯髒”了,呵呵。最早的時候我下過
一個2005EE版,怎麼也安裝不上,後來發現原來是EE不支援xp=_=,然後就下了DE版的。
  剛開始安裝的時候嚇了我一跳,丫的居然要佔用我C盤1300多MB!!忍了。(我是把SQL裝
在F盤的,但是居然還需要C盤1300多MB)。但是卻安裝失敗,看了一下安裝日誌,天書,不
明白。只知道是nativeclient幾個元件安裝不成功。重複多次問題依舊。
  研究安裝包之後,發現裡面有兩個主要的資料夾,是server和tools。顧名思義,ser
ver裡面肯定是服務的安裝檔案了,而tools裡面應該是那些工具元件的安裝檔案。進入to
ols裡面,果然有個setup,執行之,竟然安裝成功了,而且只佔了我C盤200多MB,好興奮
(沒有選擇BI,就是那個商業智慧元件,太大了)。然後重啟電腦(不是必須的,只是一次s
etup之後系統慢的不行了),進入server目錄下面,當然也有一個setup啦,執行之,呵呵
,果然是安裝服務用的啊。這次也順利安裝成功了。再去看C盤,哈哈,一共只用了我300
多MB,竟然節省了1GB。
  當然了,其實一起安裝的話,也不一定會用完1300MB的空間的,因為安裝結束之後還
會自動刪除一些垃圾檔案的。但是不管怎麼說,至少讓我能正常安裝了。我的C盤只有140
0的空閒空間了,不知道起初安裝失敗是不是跟這有關係。
  至此,SQL2005已經成功的在我電腦上安家了。安裝的時候,如果你的電腦和我的一樣
是記憶體不足(小於1GB),效能也不足夠大(我的CPU是centrio1.3G,呵呵,裝在本本上了),
建議在安裝的時候把系統開始是需要執行的服務全都不選擇,用的時候再手動執行好了。
  執行ManagementStudio,嗯,速度還挺快的呢。連線伺服器,竟然沒有localhost,呵
呵,開啟serverconfigurationmanager,把右邊那個MSSQLSERVER執行起來。ok,這次沒有
問題了。
  使用一切正常,就是發現從sql2000裡面備份出來的資料庫在2005下只能通過sql語句
修改資料,而不能所見及所得的修改,不知道怎麼回事。
  btw:後來又把商業智慧元件裝上了,只用了C盤150MB,開心。

SQL2005安裝過程提示com+目錄問題警告處理

安裝sql2005一直失敗,以為提示的問題是這個com+目錄問題警告所致,找了很久找到這個問
題的解決方案
sql2005_STD_X86在XPSP2下安裝失敗的一點經驗
軟環境是XPSP2,安裝SQL2005_STD_X86版。
故障提示:
1。如果SQLServer安裝程式失敗,安裝程式將回滾所安裝的系統,但可能不會刪除所有.m
anifest檔案。解決方法是重新命名這些檔案,然後重新執行安裝程式。有關詳細資訊,請參
閱“如何處理SQLServer安裝過程中的COM+檢查失敗問題”。如果未執行Microsoft分散式
事務處理協調器(MSDTC),或者,在使用Microsoft群集伺服器的情況下,如果MSDTC不是群
集資源,則可能會發生COM+錯誤。COM+依賴於MSDTC,而IntegrationServices中的訊息隊
列任務依賴於COM+。如果出現COM+錯誤,則只有將COM+系統正確配置後,IntegrationSer
vices中的訊息佇列任務才可用。
2。對效能監視器計數器登錄檔值執行系統配置檢查失敗。有關詳細資訊,請參閱自述檔案
或SQLServer聯機叢書中的“如何在SQLServer2005中為安裝程式增加計數器登錄檔項值”
安裝中止。
查詢聯機叢書,有如下提示:
1。MicrosoftSQLServer2005安裝程式檢查COM+是否已正確配置。如果發現配置錯誤,安裝
程式仍將繼續,但是在系統配置檢查(SCC)報告中顯示以下警告:
“如果SQLServer安裝程式失敗,安裝程式將回滾所進行的安裝,但可能不會刪除所有的.
manifest檔案。解決方法是重新命名這些檔案,然後重新執行安裝程式。”
如果未執行Microsoft分散式事務處理協調器(MSDTC),或者,在使用Microsoft群集伺服器
的情況下,如果MSDTC不是群集資源,則可能會發生COM+錯誤。COM+依賴於MSDTC,而Inte
grationServices中的訊息佇列任務依賴於COM+。如果出現COM+錯誤,則只有將COM+系統正
確配置後,IntegrationServices中的訊息佇列任務才可用。
若要使用訊息佇列(亦稱MSMQ),請確保MSDTC正在執行並且已正確配置。如果SQLServer
安裝在群集上,則MSDTC必須是群集資源。
按照下列過程重新安裝COM+。
安裝元件服務管理單元
在Windows桌面上,單擊“開始”,然後單擊“執行”。
在“開啟”框中,鍵入MMC,然後單擊“確定”。
在“控制檯”視窗中,單擊選單欄上的“檔案”,然後單擊“新增/刪除管理單元”。
在“新增/刪除管理單元”視窗,單擊“新增”。
在“新增獨立管理單元”視窗,從管理單元列表中選擇“元件服務”,然後單擊“新增”
單擊“關閉”以關閉“新增獨立管理單元”視窗,然後單擊“確定”以關閉“新增/刪除管
理單元”視窗。
在“控制檯根節點\元件服務”視窗,展開“元件服務”樹。這就是當COM+出現問題時,錯
誤訊息可能發生的地方。
再次執行SQLServer2005安裝程式。如果收到錯誤訊息,請重新安裝COM+。
重新安裝COM+
從控制面板的“新增或刪除程式”中,單擊“新增/刪除Windows元件”。
在“Windows元件嚮導”中,不對選擇做任何更改,單擊“下一步”。
一直單擊以完成嚮導,然後再次執行SQLServer2005安裝程式。
2。在SQLServer安裝開始前,MicrosoftSQLServer安裝程式中的安裝配置檢查器(SCC)會驗
證計數器登錄檔項的值。如果SCC無法驗證現有的登錄檔項,或SCC無法執行lodctr.exe系統程式,則SCC檢查會失敗,致使安裝受阻。
錯誤編輯登錄檔會嚴重損壞您的系統。更改登錄檔項之前,建議您備份計算機中的所有重
要資料。
手動設定計數器登錄檔項的增量
在MicrosoftWindows2003或WindowsXP桌面上,依次單擊“開始”、“執行”,然後在“打
開”中鍵入regedit.exe,再單擊“確定”。在Windows2000中,使用regedt32.exe啟動注
冊表編輯器。
定位到以下注冊表項:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Perflib]
"LastCounter"=dword:00000ed4(5276)
"LastHelp"=dword:00000ed5(5277)
上一步的“LastCounter”值(5276)必須與以下注冊表項中“Perflib\009”的“Counter”
項的最大值匹配,並且上一步的“LastHelp”值(5277)必須與以下注冊表項中“Perflib\
009”的“Help”項的最大值匹配。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Perflib\009]
注意009是英文中的一個示例。“LastCounter”和“LastHelp”值是由Windows動態分配的
;這兩個值會因計算機的不同而不同。
如有必要,可修改“\Perflib”項中的“LastCounter”和“LastHelp”值的值:在右側窗
格中,右鍵單擊“LastCounter”或“LastHelp”,單擊“修改”,再單擊“Base="Decim
al"”,在“值資料”中設定值,再單擊“確定”。如有必要,對另一個項重複以上過程,
然後關閉登錄檔編輯器。
再次執行SQLServer安裝程式。
解決過程:
COM+檢查失敗不用說肯定是元件訊息佇列下的元件沒安裝或服務沒啟動。本機沒有安裝過
訊息佇列,找出系統盤安裝訊息佇列元件,在元件安裝中提示MSDTC服務沒有啟動,在這步
暈了長很時間,MSTDC在服務中怎麼也找不到,後來想會不會是DTC(腦子有點笨,其實從
MSMQ這名稱上就應該想到),一看果然有DistributedTransactionCoordinator(DTC),
但是這個服務啟動不了,後來查詢相關資料:MSDTC(DistributedTransactionCoordinato
r)服務必須在NTAUTHORITY\NetworkService帳戶下執行;即使是NTAUTHORITY\NetworkSer
vice(注意,Network和Service中間有空格)也不行(至於這兩個帳戶的區別,在網上也
沒有找到,還望大家不吝賜教)。如果登入帳戶被更改,MSDTC服務會繼續執行,但是在執
行的時候可能會出錯。而且,在事件日誌的“應用程式”裡面可以發現如下的出錯資訊:
正在執行MSDTC服務的帳戶無效。如果使用MicrosoftManagementConsole(MMC)中的“服務
”管理單元更改了服務帳戶資訊,就會發生這種情況。MSDTC服務將繼續啟動。請確認使用
“元件服務管理器”更新了MSDTC服務帳戶資訊。
要更改成正確的登入帳戶,我們可以:
在服務中找到DistributedTransactionCoordinator服務,選擇“屬性”;
在“登入”選項卡中,選擇“此帳戶”,帳戶名填寫“NTAUTHORITY\NetworkService”,
密碼為空;
在點選“確定”後重新啟動服務。
或者,在命令列下執行msdtc-uninstall,解除安裝msdtc服務;
再執行msdtc-install,安裝msdtc服務。
MSTDC服務成功啟動,元件服務中“COM+應用程式”可以訪問,上面第2項故障沒去解決,
先試著安裝看看有沒有錯誤,令人驚喜,安裝檢查一切順利,第2項錯誤同時也解決了。
當然,解決問題的過程同樣的系統環境也不盡相同,在這裡談一下我安裝的小挫折,希望
可以給碰到相同問題的朋友有些提示作用。

sql2005安裝過程owc11錯誤處理

最近安裝了很久的sql2005,過程中間出現很多問題,之前的com+目錄警告是一個部分,處理
過之後還是發現一直無法安裝成功,(為此我安裝了10+)次才解決問題
在安裝過程中發現以下錯誤
Product:OWC11
Error:錯誤1706。安裝程式找不到需要的檔案。請檢查網路連線或CD-ROM驅動器狀態。對
於這個問題的其他可能的解決方案,請參閱C:\ProgramFiles\MicrosoftOffice\OFFICE11
\2052\SETUP.CHM。
------------------------------------------------------------------------------
--
發現自己的ocw11沒有安裝導致伺服器的有關元件全部無法安裝,每次都是安裝失敗,
在microsoftocw11下載地址
找到microsoft的ocw11,選擇簡體中文後下載安裝後發現還是出現相同的問題,
把下載下來的ocw11解壓縮後觀察該ocw11.xml,發現sql2005的server的setup目錄下面有相
同文件名檔案,再次逐次對比發現該ocw11裡面的檔案包裡面的檔案對應的setup裡面全部都
有,不過發現2個chm的字尾不同,一個是10XX,一個是2052,呵呵,原來是版本不同
直接執行setup目錄下面的setup,選擇修復或全新安裝全部提示錯誤的檔案源,再次觀察,把
setup目錄下面對應的的ocw11檔案全部拷貝到硬碟上面,再次執行修復成功,之後安裝sql2
005終於一路成功,困擾了我2天的問題終於解決,特此把本文於全體學習sql2005的朋友分享
,希望大家少走彎路.一起交流sql的有關功能 

50種方法優化SQL Server資料庫查詢(有N多錯別字)
http://database.51cto.com/art/200612/35820.htm

查詢速度慢的原因很多,常見如下幾種:
  
  1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程式設計的缺陷)
  
  2、I/O吞吐量小,形成了瓶頸效應。
  
  3、沒有建立計算列導致查詢不優化。
  
  4、記憶體不足
  
  5、網路速度慢
  
  6、查詢出的資料量過大(可以採用多次查詢,其他的方法降低資料量)
  
  7、鎖或者死鎖(這也是查詢慢最常見的問題,是程式設計的缺陷)
  
  8、sp_lock,sp_who,活動的使用者檢視,原因是讀寫競爭資源。
  
  9、返回了不必要的行和列
  
  10、查詢語句不好,沒有優化

  可以通過如下方法來優化查詢 :
  
  1、把資料、日誌、索引放到不同的I/O裝置上,增加讀取速度,以前可以將Tempdb應放在RAID0上,SQL2000不在支援。資料量(尺寸)越大,提高I/O越重要.
  
  2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)
  
  3、升級硬體
  
  4、根據查詢條件,建立索引,優化索引、優化訪問方式,限制結果集的資料量。注意填充因子要適當(最好是使用預設值0)。索引應該儘量小,使用位元組數小的列建索引好(參照索引的建立),不要對有限的幾個值的欄位建單一索引如性別欄位
  
  5、提高網速;
  
  6、擴大伺服器的記憶體,Windows 2000和SQLserver 2000能支援4-8G的記憶體。配置虛擬記憶體:虛擬記憶體大小應基於計算機上併發執行的服務進行配置。執行 Microsoft SQL Server?2000 時,可考慮將虛擬記憶體大小設定為計算機中安裝的實體記憶體的 1.5 倍。如果另外安裝了全文檢索功能,並打算執行 Microsoft 搜尋服務以便執行全文索引和查詢,可考慮:將虛擬記憶體大小配置為至少是計算機中安裝的實體記憶體的 3 倍。將 SQL Server max server memory 伺服器配置選項配置為實體記憶體的 1.5 倍(虛擬記憶體大小設定的一半)。
  
  7、增加伺服器 CPU個數;但是必須明白並行處理序列處理更需要資源例如記憶體。使用並行還是序列程是MsSQL自動評估選擇的。單個任務分解成多個任務,就可以在處理器上執行。例如耽擱查詢的排序、連線、掃描和GROUP BY字句同時執行,SQL SERVER根據系統的負載情況決定最優的並行等級,複雜的需要消耗大量的CPU的查詢最適合並行處理。但是更新操作Update,Insert, Delete還不能並行處理。
  
  8、如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查詢時,查詢耗時和欄位值總長度成正比,所以不能用CHAR型別,而是VARCHAR。對於欄位的值很長的建全文索引。
  
  9、DB Server 和APPLicationServer 分離;OLTP和OLAP分離
  
  10、分散式分割槽檢視可用於實現資料庫伺服器聯合體。聯合體是一組分開管理的伺服器,但它們相互協作分擔系統的處理負荷。這種通過分割槽資料形成資料庫伺服器聯合體的機制能夠擴大一組伺服器,以支援大型的多層 Web 站點的處理需要。有關更多資訊,參見設計聯合資料庫伺服器。(參照SQL幫助檔案'分割槽檢視')
  
  a、在實現分割槽檢視之前,必須先水平分割槽表
  
  b、在建立成員表後,在每個成員伺服器上定義一個分散式分割槽檢視,並且每個檢視具有相同的名稱。這樣,引用分散式分割槽檢視名的查詢可以在任何一個成員伺服器上執行。系統操作如同每個成員伺服器上都有一個原始表的複本一樣,但其實每個伺服器上只有一個成員表和一個分散式分割槽檢視。資料的位置對應用程式是透明的。
  
  11、重建索引 DBCC REINDEX ,DBCCINDEXDEFRAG,收縮資料和日誌 DBCC SHRINKDB,DBCC SHRINKFILE. 設定自動收縮日誌.對於大的資料庫不要設定資料庫自動增長,它會降低伺服器的效能。在T-sql的寫法上有很大的講究,下面列出常見的要點:首先, DBMS處理查詢計劃的過程是這樣的:
  
  1、 查詢語句的詞法、語法檢查
  
  2、 將語句提交給DBMS的查詢優化器
  
  3、 優化器做代數優化和存取路徑的優化
  
  4、 由預編譯模組生成查詢規劃
  
  5、 然後在合適的時間提交給系統處理執行
  
  6、 最後將執行結果返回給使用者其次,看一下SQL SERVER的資料存放的結構:一個頁面的大小為8K(8060)位元組,8個頁面為一個盤區,按照B樹存放。
  
  12、Commit和rollback的區別 Rollback:回滾所有的事物。 Commit:提交當前的事物. 沒有必要在動態SQL裡寫事物,如果要寫請寫在外面如: begin tran exec(@s) commit trans 或者將動態SQL 寫成函式或者儲存過程。
  
  13、在查詢Select語句中用Where字句限制返回的行數,避免表掃描,如果返回不必要的資料,浪費了伺服器的I/O資源,加重了網路的負擔降低效能。如果表很大,在表掃描的期間將表鎖住,禁止其他的聯接訪問表,後果嚴重。
  
  14、SQL的註釋申明對執行沒有任何影響
  15、儘可能不使用游標,它佔用大量的資源。如果需要row-by-row地執行,儘量採用非游標技術,如:在客戶端迴圈,用臨時表,Table變數,用子查詢,用Case語句等等。遊標可以按照它所支援的提取選項進行分類: 只進 必須按照從第一行到最後一行的順序提取行。FETCH NEXT 是唯一允許的提取操作,也是預設方式。可滾動性可以在遊標中任何地方隨機提取任意行。遊標的技術在SQL2000下變得功能很強大,他的目的是支援迴圈。有四個併發選項 READ_ONLY:不允許通過遊標定位更新(Update),且在組成結果集的行中沒有鎖。 OPTIMISTIC WITH valueS:樂觀併發控制是事務控制理論的一個標準部分。樂觀併發控制用於這樣的情形,即在開啟遊標及更新行的間隔中,只有很小的機會讓第二個使用者更新某一行。當某個遊標以此選項開啟時,沒有鎖控制其中的行,這將有助於最大化其處理能力。如果使用者試圖修改某一行,則此行的當前值會與最後一次提取此行時獲取的值進行比較。如果任何值發生改變,則伺服器就會知道其他人已更新了此行,並會返回一個錯誤。如果值是一樣的,伺服器就執行修改。選擇這個併發選項 OPTIMISTIC WITH ROWVERSIONING:此樂觀併發控制選項基於行版本控制。使用行版本控制,其中的表必須具有某種版本識別符號,伺服器可用它來確定該行在讀入遊標後是否有所更改。在 SQL Server 中,這個效能由 timestamp 資料型別提供,它是一個二進位制數字,表示資料庫中更改的相對順序。每個資料庫都有一個全域性當前時間戳值:@@DBTS。每次以任何方式更改帶有 timestamp 列的行時,SQL Server 先在時間戳列中儲存當前的 @@DBTS 值,然後增加 @@DBTS 的值。如果某 個表具有 timestamp 列,則時間戳會被記到行級。伺服器就可以比較某行的當前時間戳值和上次提取時所儲存的時間戳值,從而確定該行是否已更新。伺服器不必比較所有列的值,只需比較 timestamp 列即可。如果應用程式對沒有 timestamp 列的表要求基於行版本控制的樂觀併發,則遊標預設為基於數值的樂觀併發控制。 SCROLL LOCKS 這個選項實現悲觀併發控制。在悲觀併發控制中,在把資料庫的行讀入遊標結果集時,應用程式將試圖鎖定資料庫行。在使用伺服器遊標時,將行讀入遊標時會在其上放置一個更新鎖。如果在事務內開啟遊標,則該事務更新鎖將一直保持到事務被提交或回滾;當提取下一行時,將除去遊標鎖。如果在事務外開啟遊標,則提取下一行時,鎖就被丟棄。因此,每當使用者需要完全的悲觀併發控制時,遊標都應在事務內開啟。更新鎖將阻止任何其它任務獲取更新鎖或排它鎖,從而阻止其它任務更新該行。然而,更新鎖並不阻止共享鎖,所以它不會阻止其它任務讀取行,除非第二個任務也在要求帶更新鎖的讀取。滾動鎖根據在遊標定義的 Select 語句中指定的鎖提示,這些遊標併發選項可以生成滾動鎖。滾動鎖在提取時在每行上獲取,並保持到下次提取或者遊標關閉,以先發生者為準。下次提取時,伺服器為新提取中的行獲取滾動鎖,並釋放上次提取中行的滾動鎖。滾動鎖獨立於事務鎖,並可以保持到一個提交或回滾操作之後。如果提交時關閉遊標的選項為關,則 COMMIT 語句並不關閉任何開啟的遊標,而且滾動鎖被保留到提交之後,以維護對所提取資料的隔離。所獲取滾動鎖的型別取決於遊標併發選項和遊標 Select 語句中的鎖提示。鎖提示 只讀 樂觀數值 樂觀行版本控制 鎖定無提示 未鎖定 未鎖定 未鎖定 更新NOLOCK 未鎖定未鎖定未鎖定 未鎖定 HOLDLOCK 共享 共享 共享 更新UPDLOCK 錯誤 更新 更新 更新 TABLOCKX 錯誤 未鎖定未鎖定更新其它 未鎖定 未鎖定 未鎖定 更新 *指定NOLOCK 提示將使指定了該提示的表在遊標內是隻讀的。
  
  16、用Profiler來跟蹤查詢,得到查詢所需的時間,找出SQL的問題所在;用索引優化器優化索引
  
  17、注意UNion和UNionall 的區別。UNION all好
  
  18、注意使用DISTINCT,在沒有必要時不要用,它同UNION一樣會使查詢變慢。重複的記錄在查詢裡是沒有問題的
  
  19、查詢時不要返回不需要的行、列
  
  20、用sp_configure 'query governor costlimit'或者SET QUERY_GOVERNOR_COST_LIMIT來限制查詢消耗的資源。當評估查詢消耗的資源超出限制時,伺服器自動取消查詢,在查詢之前就扼殺掉。 SET LOCKTIME設定鎖的時間
  
  21、用select top 100 / 10 Percent 來限制使用者返回的行數或者SET ROWCOUNT來限制操作的行
  
  22、在SQL2000以前,一般不要用如下的字句: "IS NULL", "<>", "!=","!>", "!<", "NOT", "NOT EXISTS","NOT IN", "NOT LIKE", and "LIKE '%500'",因為他們不走索引全是表掃描。也不要在Where字句中的列名加函式,如Convert,substring等,如果必須用函式的時候,建立計算列再建立索引來替代.還可以變通寫法:Where SUBSTRING(firstname,1,1)= 'm'改為Where firstname like 'm%'(索引掃描),一定要將函式和列名分開。並且索引不能建得太多和太大。NOT IN會多次掃描表,使用EXISTS、NOT EXISTS ,IN , LEFT OUTER JOIN 來替代,特別是左連線,而Exists比IN更快,最慢的是NOT操作.如果列的值含有空,以前它的索引不起作用,現在2000的優化器能夠處理了。相同的是IS NULL,"NOT","NOT EXISTS", "NOT IN"能優化她,而"<>"等還是不能優化,用不到索引。
  
  23、使用Query Analyzer,檢視SQL語句的查詢計劃和評估分析是否是優化的SQL。一般的20%的程式碼佔據了80%的資源,我們優化的重點是這些慢的地方。
  
  24、如果使用了IN或者OR等時發現查詢沒有走索引,使用顯示申明指定索引: Select * FROM PersonMember (INDEX = IX_Title) Whereprocessid IN ('男','女')
  
  25、將需要查詢的結果預先計算好放在表中,查詢的時候再Select。這在SQL7.0以前是最重要的手段。例如醫院的住院費計算。
  
  26、MIN() 和MAX()能使用到合適的索引。
  
  27、資料庫有一個原則是程式碼離資料越近越好,所以優先選擇Default,依次為Rules,Triggers, Constraint(約束如外健主健CheckUNIQUE……,資料型別的最大長度等等都是約束),Procedure.這樣不僅維護工作小,編寫程式質量高,並且執行的速度快。
  
  28、如果要插入大的二進位制值到Image列,使用儲存過程,千萬不要用內嵌Insert來插入(不知JAVA是否)。因為這樣應用程式首先將二進位制值轉換成字串(尺寸是它的兩倍),伺服器受到字元後又將他轉換成二進位制值.儲存過程就沒有這些動作: 方法:Create procedure p_insert as insert into table(Fimage) values (@image), 在前臺呼叫這個儲存過程傳入二進位制引數,這樣處理速度明顯改善。
  
  29、Between在某些時候比IN 速度更快,Between能夠更快地根據索引找到範圍。用查詢優化器可見到差別。 select * fromchineseresume where title in ('男','女') Select * fromchineseresume where between '男' and '女' 是一樣的。由於in會在比較多次,所以有時會慢些。
  
  30、在必要是對全域性或者區域性臨時表建立索引,有時能夠提高速度,但不是一定會這樣,因為索引也耗費大量的資源。他的建立同是實際表一樣。
  
  31、不要建沒有作用的事物例如產生報表時,浪費資源。只有在必要使用事物時使用它。
  
  32、用OR的字句可以分解成多個查詢,並且通過UNION 連線多個查詢。他們的速度只同是否使用索引有關,如果查詢需要用到聯合索引,用UNION all執行的效率更高.多個OR的字句沒有用到索引,改寫成UNION的形式再試圖與索引匹配。一個關鍵的問題是否用到索引。
  
   33、儘量少用檢視,它的效率低。對檢視操作比直接對錶操作慢,可以用stored procedure來代替她。特別的是不要用檢視巢狀,巢狀檢視增加了尋找原始資料的難度。我們看檢視的本質:它是存放在伺服器上的被優化好了的已經產生了查詢規劃的SQL。對單個表檢索資料時,不要使用指向多個表的檢視,直接從表檢索或者僅僅包含這個表的檢視上讀,否則增加了不必要的開銷,查詢受到干擾.為了加快檢視的查詢,MsSQL增加了檢視索引的功能。
  
  34、沒有必要時不要用DISTINCT和ORDERBY,這些動作可以改在客戶端執行。它們增加了額外的開銷。這同UNION 和UNIONALL一樣的道理。
  

  select top 20 ad.companyname,comid,position,ad.referenceid,worklocation, convert(varchar(10),ad.postDate,120) as postDate1,workyear,degreedescription FROM jobcn_query.dbo.COMPANYAD_query ad where referenceID in('JCNAD00329667','JCNAD132168','JCNAD00337748','JCNAD00338345',
  'JCNAD00333138','JCNAD00303570','JCNAD00303569',
  'JCNAD00303568','JCNAD00306698','JCNAD00231935','JCNAD00231933',
  'JCNAD00254567','JCNAD00254585','JCNAD00254608',
  'JCNAD00254607','JCNAD00258524','JCNAD00332133','JCNAD00268618',
  'JCNAD00279196','JCNAD00268613') order by postdate desc

  
  35、在IN後面值的列表中,將出現最頻繁的值放在最前面,出現得最少的放在最後面,減少判斷的次數。
  
  36、當用Select INTO時,它會鎖住系統表(sysobjects,sysindexes等等),阻塞其他的連線的存取。建立臨時表時用顯示申明語句,而不是 select INTO. drop table t_lxh begin tran select * intot_lxh from chineseresume where name = 'XYZ' --commit 在另一個連線中Select * from sysobjects可以看到 Select INTO 會鎖住系統表,Create table 也會鎖系統表(不管是臨時表還是系統表)。所以千萬不要在事物內使用它!!!這樣的話如果是經常要用的臨時表請使用實表,或者臨時表變數。
  
  37、一般在GROUP BY 個HAVING字句之前就能剔除多餘的行,所以儘量不要用它們來做剔除行的工作。他們的執行順序應該如下最優:select 的Where字句選擇所有合適的行,Group By用來分組個統計行,Having字句用來剔除多餘的分組。這樣Group By 個Having的開銷小,查詢快.對於大的資料行進行分組和Having十分消耗資源。如果Group BY的目的不包括計算,只是分組,那麼用Distinct更快
  
  38、一次更新多條記錄比分多次更新每次一條快,就是說批處理好
  
  39、少用臨時表,儘量用結果集和Table類性的變數來代替它,Table 型別的變數比臨時表好
  
  40、在SQL2000下,計算欄位是可以索引的,需要滿足的條件如下:
  
  a、計算欄位的表達是確定的
  
  b、不能用在TEXT,Ntext,Image資料型別
  
  c、必須配製如下選項 ANSI_NULLS = ON,ANSI_PADDINGS = ON, …….
  
  41、儘量將資料的處理工作放在伺服器上,減少網路的開銷,如使用儲存過程。儲存過程是編譯好、優化過、並且被組織到一個執行規劃裡、且儲存在資料庫中的SQL語句,是控制流語言的集合,速度當然快。反覆執行的動態SQL,可以使用臨時儲存過程,該過程(臨時表)被放在Tempdb中。以前由於SQL SERVER對複雜的數學計算不支援,所以不得不將這個工作放在其他的層上而增加網路的開銷。SQL2000支援UDFs,現在支援複雜的數學計算,函式的返回值不要太大,這樣的開銷很大。使用者自定義函式象游標一樣執行的消耗大量的資源,如果返回大的結果採用儲存過程
  
  42、不要在一句話裡再三的使用相同的函式,浪費資源,將結果放在變數裡再呼叫更快
  
  43、Select COUNT(*)的效率教低,儘量變通他的寫法,而EXISTS快.同時請注意區別: select count(Field ofnull) from Table 和 select count(Field of NOT null) from Table 的返回值是不同的!!!
  
  44、當伺服器的記憶體夠多時,配製執行緒數量 = 最大連線數+5,這樣能發揮最大的效率;否則使用 配製執行緒數量<最大連線數啟用SQL SERVER的執行緒池來解決,如果還是數量 = 最大連線數+5,嚴重的損害伺服器的效能。
  
  45、按照一定的次序來訪問你的表。如果你先鎖住表A,再鎖住表B,那麼在所有的儲存過程中都要按照這個順序來鎖定它們。如果你(不經意的)某個儲存過程中先鎖定表B,再鎖定表A,這可能就會導致一個死鎖。如果鎖定順序沒有被預先詳細的設計好,死鎖很難被發現
  
  46、通過SQL Server Performance Monitor監視相應硬體的負載 Memory: Page Faults / sec計數器如果該值偶爾走高,表明當時有執行緒競爭記憶體。如果持續很高,則記憶體可能是瓶頸。
  Process:
  
  1、% DPC Time 指在範例間隔期間處理器用在緩延程式呼叫(DPC)接收和提供服務的百分比。(DPC 正在執行的為比標準間隔優先權低的間隔)。 由於 DPC 是以特權模式執行的,DPC 時間的百分比為特權時間百分比的一部分。這些時間單獨計算並且不屬於間隔計算總數的一部 分。這個總數顯示了作為例項時間百分比的平均忙時。
  
  2、%Processor Time計數器 如果該引數值持續超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。
  
  3、% Privileged Time 指非閒置處理器時間用於特權模式的百分比。(特權模式是為作業系統元件和操縱硬體驅動程式而設計的一種處理模式。它允許直接訪問硬體和所有記憶體。另一種模式為使用者模式,它是一種為應用程式、環境分系統和整數分系統設計的一種有限處理模式。作業系統將應用程式執行緒轉換成特權模式以訪問作業系統服務)。特權時間的 % 包括為間斷和 DPC 提供服務的時間。特權時間比率高可能是由於失敗裝置產生的大數量的間隔而引起的。這個計數器將平均忙時作為樣本時間的一部分顯示。
  
  4、% User Time表示耗費CPU的資料庫操作,如排序,執行aggregate functions等。如果該值很高,可考慮增加索引,儘量使用簡單的表聯接,水平分割大表格等方法來降低該值。 Physical Disk: Curretn Disk QueueLength計數器該值應不超過磁碟數的1.5~2倍。要提高效能,可增加磁碟。 SQLServer:Cache Hit Ratio計數器該值越高越好。如果持續低於80%,應考慮增加記憶體。 注意該引數值是從SQL Server啟動後,就一直累加記數,所以執行經過一段時間後,該值將不能反映系統當前值。
  
  47、分析select emp_name form employeewhere salary > 3000 在此語句中若salary是Float型別的,則優化器對其進行優化為Convert(float,3000),因為3000是個整數,我們應在程式設計時使用3000.0而不要等執行時讓DBMS進行轉化。同樣字元和整型資料的轉換。
  
  48、查詢的關聯同寫的順序
  

  select a.personMemberID, * from chineseresume a,personmember b where personMemberID = b.referenceid and a.personMemberID = 'JCNPRH39681' (A = B ,B = '號碼')
  
  select a.personMemberID, * from chineseresume a,personmember b where a.personMemberID = b.referenceid and a.personMemberID = 'JCNPRH39681' and b.referenceid = 'JCNPRH39681' (A = B ,B = '號碼', A = '號碼')
  
  select a.personMemberID, * from chineseresume a,personmember b where b.referenceid = 'JCNPRH39681' and a.personMemberID = 'JCNPRH39681' (B = '號碼', A = '號碼')


  
  49、
  
  (1)IF 沒有輸入負責人程式碼 THEN code1=0code2=9999 ELSE code1=code2=負責人程式碼 END IF 執行SQL語句為: Select 負責人名 FROM P2000 Where 負責人程式碼>=:code1 AND負責人程式碼 <=:code2
  
  (2)IF 沒有輸入負責人程式碼 THEN  Select負責人名 FROM P2000 ELSE code= 負責人程式碼 Select 負責人程式碼 FROM P2000 Where 負責人程式碼=:code END IF 第一種方法只用了一條SQL語句,第二種方法用了兩條SQL語句。在沒有輸入負責人程式碼時,第二種方法顯然比第一種方法執行效率高,因為它沒有限制條件; 在輸入了負責人程式碼時,第二種方法仍然比第一種方法效率高,不僅是少了一個限制條件,還因相等運算是最快的查詢運算。我們寫程式不要怕麻煩
  
  50、關於JOBCN現在查詢分頁的新方法(如下),用效能優化器分析效能的瓶頸,如果在I/O或者網路的速度上,如下的方法優化切實有效,如果在CPU或者記憶體上,用現在的方法更好。請區分如下的方法,說明索引越小越好。
  
  

begin
  
  DECLARE @local_variable table (FID int identity(1,1),ReferenceID varchar(20))
  
  insert into @local_variable (ReferenceID)
  
  select top 100000 ReferenceID from chineseresume order by ReferenceID
  
  select * from @local_variable where Fid > 40 and fid <= 60
  
  end

 和
  
  

begin
  
  DECLARE @local_variable table (FID int identity(1,1),ReferenceID varchar(20))
  
  insert into @local_variable (ReferenceID)
  
  select top 100000 ReferenceID from chineseresume order by updatedate
  
  select * from @local_variable where Fid > 40 and fid <= 60
  
  end 

的不同  

  begin
  
  create table #temp (FID int identity(1,1),ReferenceID varchar(20))
  
  insert into #temp (ReferenceID)
  
  select top 100000 ReferenceID from chineseresume order by updatedate
  
  select * from #temp where Fid > 40 and fid <= 60 drop table #temp
  
  end

儲存過程編寫經驗和優化措施
From:網頁教學網

  一、適合讀者物件:資料庫開發程式設計師,資料庫的資料量很多,涉及到對SP(儲存過程)的優化的專案開發人員,對資料庫有濃厚興趣的人。  

  二、介紹:在資料庫的開發過程中,經常會遇到複雜的業務邏輯和對資料庫的操作,這個時候就會用SP來封裝資料庫操作。如果專案的SP較多,書寫又沒有一定的規範,將會影響以後的系統維護困難和大SP邏輯的難以理解,另外如果資料庫的資料量大或者專案對SP 的效能要求很,就會遇到優化的問題,否則速度有可能很慢,經過親身經驗,一個經過優化過的SP要比一個性能差的SP的效率甚至高几百倍。  

相關推薦

SQL2005疑難解決方案大全

目錄 目錄 無法連線到伺服器    伺服器:訊息18452,     級別16,狀態1    [Microsoft][ODBC     SQL    Se

端口占用解決方案大全,最方便快速的解除端口被占用,強制解除占用端口

強制解除端口占用 切換mysql windows 綠色環境搭建 解除端口占用 強制解除端口占用可以使用我最新開發的新版本PHPWAMP8.8.8.8(截止目前最新版)PHPWAMP最新版支持自定義Mysql版本和自定義PHP版本,是目前唯一集成了VC運行庫的真正純綠色軟件。最新版PHPWA

【獨家】終生受用的Redis高可用技術解決方案大全

帶寬 技術分享 學習 控制 單個 即使 效應 pan 元數據 最近很多朋友向我咨詢關於高可用的方案的優缺點以及如何選擇合適的方案線上使用,剛好最近在給宜人貸,光大銀行做企業內訓的時候也詳細講過,這裏我再整理發出來,供大家參考,如有不妥之處,歡迎批評指正,也歡迎推薦更好的技術

寫的很全面的Redis高可用技術解決方案大全

很多朋友向我諮詢關於裡面提到的高可用的方案的優缺點以及如何選擇合適的方案線上使用,這裡再整理髮出來,供大家參考,如有不妥之處,歡迎批評指正,也歡迎推薦更好的技術方案。不廢話了,來看看方案吧~ Redis常見的幾種主要使用方式: Redis 單副本 Redis 多副本(主

Unity打安卓包 Android 所有錯誤解決方案大全(幾乎囊括所有打包錯誤 )

Unity打包出錯解決方案 本文提供全流程,中文翻譯。 Chinar 堅持將簡單的生活方式,帶給世人!(擁有更好的閱讀體驗 —— 高解析度使用者請根據需求調整網頁縮放比例) C

硬盤故障大全解決方案

重設 bio 三方 prml 包含 type 的人 sym erro 硬盤故障大全2.BIOS設置中硬盤模式的含義3.Fdisk無法讀取硬盤分區4.Windows XP掛起到硬盤後的異常故障解決5.報廢硬盤維修實錄6.常見硬盤自舉失敗的分析7.從死神手中搶回寶貴的硬盤數據8

(springboot)shiro安全框架自定義過濾器出現的幾個疑難雜症解決方案

問題一:多次重複重定向問題(匹配多個過濾器鏈重複呼叫其對應過濾器) 問題二:shiro認證時Realm會執行兩次 在使用springboot框架整合shiro安全認證框架時踩了很多坑,每次出問題網上都找不到其中的解決方案,這裡貼兩個我遇到的坑,以及其解決方案給大家,希望大

Python踩坑之路-Python-3.6 安裝pycrypto 2.6.1各種疑難雜症及解決方案

最近接觸公司後臺管理系統的開發,其中涉及到加密模組pycrypto。 重點來了!!!!敲黑板!!!! pycrypto在PyCharm中跟其他的模組不一樣,pip install pycrypto安裝的是1.4.1版本,然後雖然模組能夠install成功,但

gitlab各類問題大全解決方案

關於gitlab伺服器的搭建或使用時,經常會遇到一些問題,下面是關於一些常見問題的解決方案。 一、GitLab軟體安裝問題 1. sudo lokkit -s http -s ssh 提示無法找到lokkit命令 centos6中: 進行手動安裝

SQL2005升級到2008版本,資料查詢很慢解決方案

1)更新統計資訊 EXEC sp_updatestats 2)重建表索引 SELECT name  INTO #table FROM sys.tables  ORDER BY name DECLARE @tableName VARCHAR(50) WHILE(EXISTS(

Spring+Spring MVC+Mybatis整合配置AOP不生效的解決方案以及Bean初始化重複載入兩次(疑難雜症)

之前上班做spring+spring mvc +hibernate開發, 2年之久不做想複習一下aop的使用,結果配置遇見aop不生效,解決而記錄! 先上程式碼直接看反例效果會明顯: 首先看一下我的程式碼的包路徑: 接下來看Spring-MVC的配置檔案部分程式碼:

疑難雜症解決方案

1、cuda下載問題,可以藉助deb與run格式的都可以裝,但deb格式的需要 sudo apt-get updata命令列,如果已經有了更新,想裝之前版本(特別是更新了cuda版本然後發現補相容的問題!!!),後你的cuda更新已經到了8.0,想要回到7.5 只能藉助run

VS 解決方案文件結構分析

nbsp 項目文件 需要 管理器 TTT lease new projects build VS2013 解決方案文件結構分析 Visual Studio 的解決方案文件是一個文本文件,其中的內容不是太復雜,有些時候 Visual Studio 會把這個文件搞亂,理解一下

Ultimus BPM 市場營銷費用解決方案

市場營銷費用 工作流 BPM 流程管理 采購管理流程 Ultimus BPM 市場營銷費用解決方案 解決方案簡介 實現營銷費用閉環管理、建立以促銷活動為主線的費用預算、費用申請、費用變更、費用督導、費用核銷、費用分析為核心的營銷費用控制

JAVA開發中文亂碼的幾個解決方案

ont character delete bsp mage gbk net utf-8 type 一:html亂碼或者引入的JS亂碼 1:第一步,text file encoding 首先確保文件的保存格式要UTF-8,如在eclipse中,要在文件上點屬性,確保這裏選擇U

U盤安裝CentOS7的最終解決方案

u盤安裝 發現 clas usb 設置 電腦 安裝 軟件 哪裏 U盤安裝CentOS7的最終解決方案 終於將CentOS7裝上筆記本了,過程無比艱辛,因為我發現網上大家提到的所有U盤安裝CentOS7時碰到的問題幾乎都被我碰到了,像什麽: 1.刻錄鏡像的時候只能刻

ASP.NET Zero--解決方案結構(層)

ges 檢測 lan auto git png 其他 nan repos 解決方案結構(層) 創建和下載項目後,您將具有如下所示的解決方案結構: 解決方案有8個項目: Core項目包含域層類(如 實體 和 域服務)。 Application項目包含應用

Android studio 代碼突然報錯解決方案

cache dst roi image 技術分享 users 方案 file sdn 1.點擊File->Invalidate Caches / Restart... 2.重啟Gradle,清除緩存 3.Clean Project 4.關閉Android Stud

C#進階系列——WebApi 異常處理解決方案(轉)

機制 輸出 ges 如果 但是 rom lba slist 解決 出處:http://www.cnblogs.com/landeanfen/p/5363846.html 閱讀目錄 一、使用異常篩選器捕獲所有異常 二、HttpResponseException自

ubuntu MySQL數據庫輸入中文亂碼 解決方案

title str itl alt 查詢 ref cte class nbsp 一、登錄MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,顯示如下:+--------------------------+--------------