數據庫高手(DBA專家 ,SSIS,replacation ,tourble shooting)

http://www.cnblogs.com/qanholas/category/266780.htmlhtml

 

 

隨筆分類 - mssql

摘要: 好久沒寫blog,不是懶,實在是最近我這的訪問速度很差,用firefox常常上傳不了圖片 .......今天無心發現了SQL Server 2008 Datetime Cast 成 Date 類型能夠使用索引,分享一下:測試環境:USETEMPDBGOCREATETABLETB(IDINTIDENT... 閱讀全文
posted @ 2015-07-13 10:48 qanholas 閱讀(44) | 評論 (0) 編輯
摘要: 對於一個數據庫完整備份來講,備份的速度很大程度上取決於下面兩個因素:讀磁盤數據、日誌文件的吞吐量,寫磁盤數據文件的吞吐量。下圖是備份過程當中磁盤的 變化狀況:讀吞吐量讀吞吐量的大小取決於磁盤讀取數據的速度,而磁盤讀取的速度又取決於數據文件在磁盤中的位置。所以,位於不一樣盤符上不一樣數據庫文件的讀 取速度都不相... 閱讀全文
posted @ 2015-06-23 11:32 qanholas 閱讀(51) | 評論 (0) 編輯
摘要: setANSI_WARNINGSOFFDECLARE@TBTABLE( C1NVARCHAR(2))INSERTINTO@TB(C1)VALUES(N'34324'--C1-nvarchar(2))SELECT*FROM@TB 閱讀全文
posted @ 2015-06-19 10:10 qanholas 閱讀(21) | 評論 (0) 編輯
摘要: alter database 置疑數據庫 set emergencygoalter database 置疑數據庫 set single_user with rollback immediategouse mastergoalter database 置疑數據庫 Rebuild Log on(name... 閱讀全文
posted @ 2015-06-04 22:37 qanholas 閱讀(36) | 評論 (0) 編輯
摘要: 1.主服務器掛了,備機緊急啓動而且開始服務 --備機執行: USE master; ALTER DATABASE SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;二、原來的主服務器恢復,能夠繼續工做,須要從新設定鏡像 --備機執行: USE master;... 閱讀全文
posted @ 2015-06-03 11:46 qanholas 閱讀(21) | 評論 (0) 編輯
摘要: 在大多數狀況下,人爲更新統計信息能夠得到更好的性能。這個文章,咱們能夠來看下如何檢測過時的統計信息。在SQL Server 2005之後的版本里,SQL Server使用ColModCtr對統計的主要列對象進行跟蹤。但在SQL server 2005或SQL server 2008裏沒有對應的DMV... 閱讀全文
posted @ 2015-05-26 10:11 qanholas 閱讀(12) | 評論 (0) 編輯
摘要: 環境:windows server 2003 SP2 + mssql 2000 SP4最近在開發一個報表查詢系統,使用到連接數據庫技術,因爲第一次接觸該技術,因此在開發的過程當中遇到了重重困難,幸虧有百度,幸虧有熱心的同事,問 題也如願以償的解決了。在整個開發過程當中使用了兩種連接技術:1.ODBC連接方... 閱讀全文
posted @ 2015-05-13 09:40 qanholas 閱讀(29) | 評論 (0) 編輯
摘要: 筆者做爲一個菜鳥,沒什麼好分享的,就把在學習期間的一點當心得拿出來曬曬。學習數據庫的時候層突發奇想能不能根據表名直接找出來該表的主鍵,進而能夠進 行排序之類的操做,下面就把本身的具體實現分享給你們吧!一、查詢表名(tblstudent爲例)的id號select id from sysobjects w... 閱讀全文
posted @ 2014-09-25 15:38 qanholas 閱讀(73) | 評論 (0) 編輯
摘要: 除了MSDB,還須要添加master的權限 閱讀全文
posted @ 2014-09-05 15:28 qanholas 閱讀(33) | 評論 (0) 編輯
摘要: 最近個人兩個庫出現,出現較多的CXPACKET等待,在網上找了一下資料。其中有篇一個SQL Server專欄做家的文章不錯,也解決了個人一些疑問,就翻譯在這裏。 翻譯整理僅用於傳播資訊之目的。 原文出處:http://blog.sqlauthority.com/2011/02/06/sql-serv... 閱讀全文
posted @ 2014-09-01 14:58 qanholas 閱讀(48) | 評論 (0) 編輯
摘要: 在用SQL語句建立SQL Server做業時有時出現以下錯誤:消息515,級別16,狀態2,過程sp_add_job,第137行不能將值NULL插入列 'owner_sid',表'msdb.dbo.sysjobs';列不容許有空值。INSERT失敗。語句已終止。這可能與爲做業建立的數據庫登陸ID 有關,... 閱讀全文
posted @ 2014-08-12 10:29 qanholas 閱讀(105) | 評論 (0) 編輯
摘要: SQL SERVER 理論上有32767個邏輯鏈接,SQL SERVER根據系統自行調配鏈接池。首先 ,操做系統的用戶數:即同時經過網絡鏈接到這臺電腦上面的用戶限制,以5用戶操做系統,搭建的文件服務器爲例,去同時訪問這個文件服務器的網絡用戶爲5 個。下面說說SQL server,購買數據庫有兩種方式,... 閱讀全文
posted @ 2014-08-11 15:28 qanholas 閱讀(1945) | 評論 (0) 編輯
摘要: /*unicode編碼範圍:漢字:[0x4e00,0x9fa5](或十進制[19968,40869])數字:[0x30,0x39](或十進制 [48, 57])小寫字母:[0x61,0x7a](或十進制[97, 122])大寫字母:[0x41,0x5a](或十進制[65, 90])--根據編碼範圍來判... 閱讀全文
posted @ 2014-07-22 14:41 qanholas 閱讀(514) | 評論 (0) 編輯
摘要: 原來使用中的sql2005的全文檢索的速度老是不如意,尤爲是帶rank的。今天搜了一下,原來在freetexttable中還有一個參數 top_n_by_rank,是第4個參數。注意還要設置:EXEC sp_configure 'precompute rank', '1'EXEC sp_configu... 閱讀全文
posted @ 2014-06-23 17:07 qanholas 閱讀(91) | 評論 (0) 編輯
摘要: "五一"時進行了系統重裝,在沒有卸載SQL Server 2008狀況下嘗試安裝SQL Server 2008r2 ,安裝提示成功但提示出現幾個錯誤,發現沒有找到SSMS,以及在SQL SERVER配置管理器裏的服務也只有可憐的一項,瞬間感受不妙,沒辦法只能從新卸載安裝,在網上無緒找到了幾個介紹卸載... 閱讀全文
posted @ 2014-06-23 15:38 qanholas 閱讀(13548) | 評論 (0) 編輯
摘要: 一安裝MySQL數據庫的ODBC驅動下載MySQL Connector ODBC 3.51.rar單擊setup按默認安裝便可!以下圖所示,在ODBC數據源管理器中看到「MySQL ODBC 3.51 Driver」即表示安裝成功!固然看不到,那麼你就要從新安裝了!固然還有不一樣的版本!二創建MySQ... 閱讀全文
posted @ 2014-06-09 16:54 qanholas 閱讀(237) | 評論 (0) 編輯
摘要: 原文譯自:http://www.mssqltips.com/sqlservertip/2766/sql-server-auto-update- and-auto-create-statistics-options/?utm_source=dailynewsletter&utm_medium=email... 閱讀全文
posted @ 2014-05-27 15:19 qanholas 閱讀(62) | 評論 (0) 編輯
摘要: 使用備份文件初始化日誌複製對於大的數據庫使用快照初始化既影響性能又花費大量的時間,在某些狀況下咱們能夠使用數據庫備份作初始化。1. 首先根據建立的Article創建發佈。2.修改 allow initialization from backup的選項爲True.3.備份發佈數據庫。Backup ... 閱讀全文
posted @ 2014-05-21 16:55 qanholas 閱讀(22) | 評論 (0) 編輯
摘要: 進行備份一般會更改數據庫,而這又會影響其餘備份以及還原這些備份的方式。例如,常規數據備份能夠用做一個或多個後續差別備份的差別基準。可是,有時必須 針對特殊目的執行數據備份,而且不該該影響數據庫的總體備份和還原過程。爲此,SQL Server 2005 引入了僅複製備份,它獨立於正常的備份序列。僅複製備... 閱讀全文
posted @ 2014-05-08 14:23 qanholas 閱讀(272) | 評論 (0) 編輯
摘要: 數據庫鏡像中成功收縮事務日誌文件數據庫已經運行在數據庫鏡像的時候怎麼收縮事務日誌文件呢??咱們有一個產品數據庫發現事務日誌文件已經到到了 60GB,而數據庫自己才30GB。須要收縮事務日誌文件。通過一個禮拜的觀察,平均沒有有1.5GB的日誌,99%的日誌是在晚上產生的,週末有 16GB的日誌,看來大部分... 閱讀全文
posted @ 2014-05-07 15:26 qanholas 閱讀(37) | 評論 (0) 編輯
摘要: 目標:主機作了Mirror和Replication,當主機出現問題時,Replication和Mirror實現自動的故障轉移(Mirror和 Replication都切換到備機,而當主機從新啓動後,自動充當備機的角色)。環境:五臺虛擬機,配置均爲 Windows2008Enterprise + SQLS... 閱讀全文
posted @ 2014-05-04 12:41 qanholas 閱讀(82) | 評論 (0) 編輯
摘要: BACKUP LOG jmd8 TO DISK = N'C:\jmd8_20140429014500.trn' WITH NOREWIND, NOUNLOADUSE [JMD8]GODBCC SHRINKFILE (N'ChaoRan_Log' , 1)GO 閱讀全文
posted @ 2014-04-29 10:00 qanholas 閱讀(47) | 評論 (0) 編輯
摘要: 微軟linq技術已經出現好久,不少公司已經開始商業使用,做爲咱們暫時沒有用到的人來講,也應該適當的瞭解下相關知識,可是直到目前網絡上對他的見解仍 然是褒貶不一,固然任何事情都不可能完美的,下面就針對大多數人比較關注的效率問題作一次試驗,來實實在在的用事實說次話,(因爲過年在家無事突發奇想作 的試驗也沒用... 閱讀全文
posted @ 2014-04-21 14:03 qanholas 閱讀(136) | 評論 (0) 編輯
摘要: 在用了LINQ語法之後的一個月,我幾乎把SQL語法所有拋到腦後了,不過LINQ好用歸好用,可是實際上操做資料庫的還是SQL語法,若是不知道 LINQ語法編譯過後產生怎樣的SQL語法,一不當心效能就會變差,因此今天來記錄三種查詢LINQ所轉換的SQL語法。第一種:參考自:ADO.Net Entity F... 閱讀全文
posted @ 2014-04-21 13:55 qanholas 閱讀(146) | 評論 (0) 編輯
摘要: 咱們知道,SQL Server 2005/2008的系統存儲過程在正常狀況下是沒法直接修改的。儘管本文是介紹怎樣修改它的,但在這裏,我仍是建議你們儘可能不要去修改它。(好像有點繞 哈...)OK,閒話少說,下面我舉個實際案例講解一下,如對於系統存儲過程sp_Monitor,若要運行此存儲過程,用戶必須是 sysadmin 固定服務器角色的成員。經過執行命令:sp_helptext 'sp_Monitor',咱們能夠看到,該過程當中存在這樣的語句:[c-sharp]view plaincopyif(not(is_srvrolemember('sysadmin')=1)) 閱讀全文
posted @ 2014-04-10 12:49 qanholas 閱讀(1078) | 評論 (0) 編輯
摘要: SQL Server 對數據庫損壞的錯誤類型作了細化,在此對幾個典型的錯誤做一下介紹。錯誤信息是:「在文件 '%ls'中、偏移量爲 %#016I64x 的位置執行 %S_MSG 期間,操做系統已經向 SQL Server 返回了錯誤 %ls。」「The operating systemreturned error %ls to SQL Server during a %S_MSGat offset %#016I64x in file '%ls'.」例如:Msg 823, Level 24, State 3, Line 1The operating system 閱讀全文
posted @ 2014-01-16 10:53 qanholas 閱讀(236) | 評論 (0) 編輯
摘要: 概要鎖升級爲表鎖插入轉換不少細粒度的鎖 (如行或頁鎖) 的過程。Microsoft SQL Server 動態肯定什麼時候執行鎖升級。做出決定以前,SQL Server 將特定的掃描,整個事務,而且用於鎖定在系統中做爲一個總體的內存由持有的鎖的數目只會保留的鎖的數量考慮。一般狀況下,SQL Server 默認行爲致使位置,這會提升性能,或當必須將過多的系統鎖定內存減小到更合理水平,只能在這些時間點發生的鎖升級。可是,一些應用程序或查詢的設計可能會 觸發一次時不太理想,並已呈報的表鎖可能會阻止其餘用戶的鎖升級。本文討論如何肯定是否鎖升級而致使阻塞和如何處理不須要的鎖升級。回到頂端|提供反饋更 多信息如何 閱讀全文
posted @ 2013-12-14 17:04 qanholas 閱讀(160) | 評論 (0) 編輯
摘要: 全部Select加 With (NoLock)解決阻塞死鎖,在查詢語句中使用 NOLOCK 和 READPAST處理一個數據庫死鎖的異常時候,其中一個建議就是使用 NOLOCK 或者 READPAST 。有關 NOLOCK 和 READPAST的一些技術知識點:對於非銀行等嚴格要求事務的行業,搜索記錄中出現或者不出現某條記錄,都是在可容忍範圍內,因此碰到死鎖,應該首先考 慮,咱們業務邏輯是否能容忍出現或者不出現某些記錄,而不是尋求對雙方都加鎖條件下如何解鎖的問題。NOLOCK 和 READPAST 都是處理查詢、插入、刪除等操做時候,如何應對鎖住的數據記錄。可是這時候必定要注意NOLOCK 和 閱讀全文
posted @ 2013-12-14 15:52 qanholas 閱讀(65) | 評論 (0) 編輯
摘要: 說明Chaos沒法改寫隔離級別更高的事務中的掛起的更改。ReadCommitted在正在讀取數據時保持共享鎖,以免髒讀,可是在事務結束以前能夠 更改數據,從而致使不可重複的讀取或幻像數據。ReadUncommitted能夠進行髒讀,意思是說,不發佈共享鎖,也不接受獨佔鎖。 RepeatableRead在查詢中使用的全部數據上放置鎖,以防止其餘用戶更新這些數據。防止不可重複的讀取,可是仍能夠有幻像行。 Serializable在DataSet上放置範圍鎖,以防止在事務完成以前由其餘用戶更新行或向數據集中插入行。Snapshot經過在一個應用程序 正在修改數據時存儲另外一個應用程序能夠讀取的相同數據版原本 閱讀全文
posted @ 2013-12-14 10:01 qanholas 閱讀(55) | 評論 (0) 編輯
摘要: SELECT CONVERT(VARCHAR(100), 列名) FROM Table提示錯誤:沒法執行varchar值到varchar的隱式轉換,緣由是,因爲排序規則衝突,該值的排序規則未經解析。修改成:SELECT CONVERT(VARCHAR(100), 列名 COLLATE Chinese_PRC_CI_AS) FROM Table 閱讀全文
posted @ 2013-11-28 09:03 qanholas 閱讀(115) | 評論 (0) 編輯
摘要: --90兼容模式以上,2005+-- http://raresql.com/2012/10/24/sql-server-how-to-find-who-deleted-what-records-at-what-time/-- Script Name: Recover_Deleted_Data_With_UID_Date_Time_Proc-- Script Type : Recovery Procedure -- Develop By: Muhammad Imran-- Date Created: 24 Oct 2012-- Modify Date: -- Version : 1.2-- No 閱讀全文
posted @ 2013-11-09 17:06 qanholas 閱讀(215) | 評論 (0) 編輯
摘要: DECLARE @dbNameSYSNAME,@schemaNameSYSNAME,@ObjectNameSYSNAME,@sqlNVARCHAR(max)SELECT @dbName='DBname',@schemaName='dbo',@ObjectName='tablename'SET @sql='SELECT COUNT(1) AS DataCount FROM '+@dbName+'.'+@schemaName+'.'+@ObjectName+' WITH (NOLOCK)' 閱讀全文
posted @ 2013-11-09 15:32 qanholas 閱讀(69) | 評論 (0) 編輯
摘要: 最近遇到了一個看上去很奇怪,分析起來頗有意思的死鎖問題。這個死鎖看上去難以理解。而分析過程當中,又使用了不少分析SQL Server死鎖的典型方法。記錄下來整個分析過程仍是頗有意義的。問題重現步驟:通過提煉,問題重現的步驟很是簡單,在SQL 2008上能夠很容易地重現。1. 首先,建立一張表格,上面有一個clustered index,兩個non-clustered index。 createtablett(idintidentityprimarykey,achar(36),bchar(36),dvarchar(max))gocreateindexix_a_bcontt(a)include(d)c 閱讀全文
posted @ 2013-11-09 15:29 qanholas 閱讀(249) | 評論 (1) 編輯
摘要: 插入光盤後不要用autorun的安裝,使用命令行安裝!cd進安裝光盤的根目錄,輸入命令:setup.exe /INSTALLSHAREDDIR="D://Program Files//Microsoft SQL Server//" /INSTALLSHAREDWOWDIR="D://Program Files (x86)//Microsoft SQL Server//"安裝便可,其中INSTALLSHAREDDIR爲x64部件安裝的路徑,INSTALLSHAREDWOWDIR爲x32部件安裝的 路徑。切記不可以使用默認的setup.exe就安裝的方式,一旦進 閱讀全文
posted @ 2013-11-02 14:24 qanholas 閱讀(717) | 評論 (0) 編輯
摘要: 安裝以下步驟安裝asp.net應用程序開發功能便可==>(WIN7 IIS7)控制面板-->程序和功能-->打開或關閉windows功能-->Internet信息服務-->萬維網服務 -->應用程序開發功能選擇asp.net,安裝便可 閱讀全文
posted @ 2013-11-01 08:49 qanholas 閱讀(12) | 評論 (0) 編輯
摘要: 最近因為在查一個SQL的效能問題,透過sys.dm_os_wait_stats來取得Top的Wait(fromWait statistics, or please tell me where it hurts) ,以下,SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;GO--1.取得目前最高的WaitWITH [Waits] AS (SELECT [wait_type], [wait_time_ms] / 1000.0 AS [WaitS], ([wait_time_ms] - [signal_w... 閱讀全文
posted @ 2013-10-19 11:46 qanholas 閱讀(827) | 評論 (0) 編輯
摘要: 爲了創建冗餘較小、結構合理的數據庫,設計數據庫時必須遵循必定的規則。在關係型數據庫中這種規則就稱爲範式。範式是符合某一種設計要求的總結。要想設計 一個結構合理的關係型數據庫,必須知足必定的範式。在實際開發中最爲常見的設計範式有三個:1.第一範式(確保每列保持原子性)第一範式是最基本的範式。 若是數據庫表中的全部字段值都是不可分解的原子值,就說明該數據庫表知足了第一範式。第一範式的合理遵循須要根據系統的實際需求來定。好比某些數據庫系統 中須要用到「地址」這個屬性,原本直接將「地址」屬性設計成一個數據庫表的字段就行。可是若是系統常常會訪問「地址」屬性中的「城市」部分,那麼就非要將 「地址」這個屬性從新拆分 閱讀全文
posted @ 2013-09-04 08:51 qanholas 閱讀(86) | 評論 (0) 編輯
摘要: 不少人都知道SQL注入,也知道SQL參數化查詢能夠防止SQL注入,可爲何能防止注入卻並非不少人都知道的。本文主要講述的是這個問題,也許你在部 分文章中看到過這塊內容,固然了看看也無妨。首先:咱們要了解SQL收到一個指令後所作的事情:具體細節能夠查看文章:Sql Server 編譯、重編譯與執行計劃重用原理在這裏,我簡單的表示爲:收到指令 -> 編譯SQL生成執行計劃 ->選擇執行計劃 ->執行執行計劃。具體可能有點不同,但大體的步驟如上所示。接着咱們來分析爲何拼接SQL 字符串會致使SQL注入的風險呢?首先建立一張表Users:CREATE TABLE [dbo].[U 閱讀全文
posted @ 2013-09-03 15:51 qanholas 閱讀(73) | 評論 (0) 編輯
摘要: Unicode字符集就是爲了解決字符集這種不兼容的問題而產生的,它全部的字符都用兩個字節表示,即英文字符也是用兩個字節表示若是還爲了這個糾結,就 直接看看後面的解說,作決定吧。通常若是用到中文或者其它特殊字符,我就會使用n開頭的類型,不然的話直接使用var開頭的。sql server中的varchar和Nvarchar有什麼區別?答:varchar(n)長度爲 n 個字節的可變長度且非 Unicode 的字符數據。n 必須是一個介於 1 和 8,000 之間的數值。存儲大小爲輸入數據的字節的實際長度,而不是 n 個字節。nvarchar(n)包含 n 個字符的可變長度 Unicode 字符數據。 閱讀全文
posted @ 2013-09-03 15:48 qanholas 閱讀(57) | 評論 (0) 編輯
摘要: 在作項目中,使用了float類型來定義一些列,如:Price,可是發現了不少問題一、當值的位數大於6位是float型再轉varchar型的時候會 變爲科學技術法顯示 此時只好將float型轉換成numeric型,再轉換成varchar二、float型變量在存入值時,有時值得大小會發生改變。這個現象發生在對報價 保存時,如:保存一個3.8,但到了數據庫中變成了3.80001124或3.79998999等在SqlServer的幫助中是這樣描述float類型 的:用於表示浮點數字數據的近似數字數據類型。浮點數據爲近似值;並不是數據類型範圍內的全部數據都能精確地表示。因此從此這個類型必定要慎用評論#1樓 218 閱讀全文
posted @ 2013-09-03 12:02 qanholas 閱讀(91) | 評論 (0) 編輯
摘要: 今天在將txt文件導入MSSQL2005時,出了這個錯誤,到網上查了一下資料,說是由於沒有安裝SQL 2005 SP1的緣由,因此我就下載了個。安裝後,再次導入數據,OK 沒問題了。http://www.microsoft.com/zh-cn/download/details.aspx?id=22954 閱讀全文
posted @ 2013-09-02 09:33 qanholas 閱讀(32) | 評論 (0) 編輯
摘要: 最近,數據庫系統常常出現「 消息[298] SQLServer Error: 10054, TCP Provider: 遠程主機強迫關閉了一個現有的鏈接。 [SQLSTATE 08S01]」一開始很迷惑,不知道緣由,後來查詢資料,發現 max worker thread 設置問題,因爲前期 max worker thread 設置爲255,鏈接太小,修改爲0。SQL SERVER SQLOS的任務調度【介紹】SQL Server經過WORKER, SCHEDULER, TASK等來對任務進行調度和處理。瞭解這些概念,對於瞭解SQL Server內部是如何工做,是很是有幫助的。一般來說,SCHE 閱讀全文
posted @ 2013-08-29 10:45 qanholas 閱讀(52) | 評論 (0) 編輯
摘要: 隱式事務模式,在這種模式中,SQL Server在沒有事務存在的狀況下會開始一個事務,但不會像在自動模式中那樣自動執行COMMIT或ROLLBACK語句。隱式事務必須顯式結束(既 Commit 或者Rollback)。如下語句在沒有事務時隱式開始一個事務。ALTER TABLEGRANTFETCHDELETECREATEREVOKEINSERTSELECTDROPOPENUPDATETRUNCATE TABLEØ使用隱式事務1.啓動SQL Server Management Studio並打開一個「新建查詢」窗口。2.鍵入並執行如下語句來設置鏈接爲隱式事務模式(此例的代碼包含在示例文件 閱讀全文
posted @ 2013-08-28 20:26 qanholas 閱讀(32) | 評論 (0) 編輯
摘要: sqlserver 2008不管是什麼類型的備份,完成後都將寫入一個記錄到errorlog中,若是長時間不清理,錯誤日誌文件可能很大!設置關閉便可--關閉數據備份信息寫入數據庫日誌DBCC TRACEON (3226,-1) 閱讀全文
posted @ 2013-08-10 09:56 qanholas 閱讀(24) | 評論 (0) 編輯
摘要: 一: RAID簡介 RAID(Redundant Array of Independent Disk 獨立冗餘磁盤陣列)是一項數據保護策略. 二: RAID的幾種經常使用級別 1. RAID 0: 經過並行讀取來提升數據I/O, 讀取操做效率很高, 可是不提供數據容錯及保護. 不推薦做爲SQL Server使用. 2. RAID 1: 鏡像保護,有兩個驅動器,一個作主驅動器,一個作鏡像, 因此是實際須要兩倍的驅動器,第二個所爲冗餘使用. 使用RAID 1咱們的存儲容量應該是(n*s/2)。 一次寫操做寫入到兩個磁盤, 因此雖寫入速度會稍微有影響, 可是讀取速度幾乎是大多數狀況下的... 閱讀全文
posted @ 2013-08-05 22:03 qanholas 閱讀(53) | 評論 (0) 編輯
摘要: RAID 爲 Redundant Array of Indepent Disks (獨立磁盤冗餘陣列) 的縮寫,最經常使用的四種RAID爲 RAID 0、RAID 一、RAID 五、RAID 10,下面以圖解的方式解釋這四種RAID的特色和區別。在後面的圖示中,用到如下標識:A,B,C,D,E和F - 表示數據塊p1,p2,p3 - 表示奇偶校驗信息塊RAID 0RAID 0的特色:最少須要兩塊磁盤數據條帶式分佈沒有冗餘,性能最佳(不存儲鏡像、校驗信息)不能應用於對數據安全性要求高的場合RAID 1如下爲RAID 1的特色:最少須要2塊磁盤提供數據塊冗餘性能好RAID 5RAID 5特色:最少3塊 閱讀全文
posted @ 2013-08-05 21:55 qanholas 閱讀(97) | 評論 (0) 編輯
摘要: 策略管理是SQL Server 2008中的一個新特性,用於管理數據庫實例、數據庫以及數據庫對象的各類屬性。策略管理在SSMS的對象資源管理器數據庫實例下的「管理」節點下,如 圖:從圖中能夠看到,策略管理中包含三個節點:策略、條件、方面。方面就是策略要應用的對象,包括:服務器、表、觸發器、視圖、存儲過程……這些方面對象 都是系統定義好了的,僅供瞻仰不可更改。雙擊具體的某一個方面能夠查看該方面的屬性,在定義條件時便可對這些屬性進行判斷,如圖爲存儲過程方面的屬性。條 件就是一個布爾表達式判斷策略是否爲真。策略就是在條件爲假的狀況下要執行的操做,即評估模式。策略中的評估模式有4種:按需、按計劃、更改時記錄 閱讀全文
posted @ 2013-08-01 13:26 qanholas 閱讀(43) | 評論 (0) 編輯
摘要: 在搞清楚這個問題的過程當中作了很多的實驗,與各位共享。這一篇是開篇,主要說明的是 SQL Server 的四種(其實還有別的)經典的事務隔離級別,以及在不一樣的隔離級別下鎖的使用手段,以及所帶來的不一樣的數據一致性。SQL Server 中鎖的種類(Schema操做就暫時不涉及了)鎖類型描述(Shared Lock)用於只讀操做數據鎖定(Update Lock)用於數據的更新,在數據真正的須要更新的時候會申請升級爲X鎖。X(Exclusive Lock)獨佔鎖,用於數據的更改。Key-Range Lock(稍後討論)僅僅在 Serializable 隔離級別保護數據,以免任何有可能使得本事務第二次 閱讀全文
posted @ 2013-07-31 10:37 qanholas 閱讀(60) | 評論 (0) 編輯
摘要: SQL Server Service Broker服務體系結構消息類型 — 定義應用程序間交換的消息的名稱。還能夠選擇是否驗證消息。約定 — 指定給定會話中的消息方向和消息類型。隊列 — 存儲消息。此存儲機制使服務間能夠進行異步通訊。Service Broker 隊列還有其餘優勢,好比自動鎖定同一個會話組中的消息。服務 — 是可尋址的會話端點。Service Broker 消息從一個服務發送到另外一個服務。服務指定一個隊列來保存消息,還指定一些約定,約定指明該服務可做爲「目標」。約定向服務提供一組定義完善的消息類型。 處理的先決條件.USE master;GOALTER DATABASE 目標數據 閱讀全文
posted @ 2013-07-22 16:30 qanholas 閱讀(81) | 評論 (0) 編輯
摘要: 複製存儲過程執行應用於事務複製中,當在發佈服務器上執行配置的存儲過程時,存儲過程致使的數據變動不會作爲多步驟事務發送到訂閱服務器,而僅僅是把執行 存儲過程的命令發送到訂閱服務器。 好比,若是你爲一個100萬條記錄的表增長了一個字段,而且初始化爲一個值,若是不使用複製存儲過程執行的話,那麼這個操做就會造成100萬個更新操做發 送到訂閱服務器,訂閱服務器將將進行100萬次更新,這個操做一般會花費很長時間,並致使後續的數據變動也沒法獲得及時的同步。 若是使用複製存儲過程執行的話,你能夠建立一個存儲過程來實現這個更新,而且把這個存儲過程添加到事務複製中,而後當你在發佈服務器上執行完成這個存儲過 程後,這個. 閱讀全文
posted @ 2013-07-22 16:13 qanholas 閱讀(87) | 評論 (0) 編輯
摘要: 在SQL Server 2005中,經過新增的Service Broker能夠實現異步觸發器的處理功能。本文提供一種使用Service Broker實現的通用異步觸發器方法。在本方法中,經過Service Broker構造異步觸發器處理架構,對於要使用這種架構的表,只須要建立相應的觸發器及處理觸發器中數據的存儲過程,而且在異步觸發器架構中登記觸發器 和處理的存儲過程便可。若是一個觸發器中的數據要被多個表使用,只須要在dbo.tb_async_trigger_subscribtion中登記相應 處理數據的存儲過程便可,即一個表的數據變動能夠被多個表訂閱(使用)。架構的步驟以下:1.數據庫配置須要配置 閱讀全文
posted @ 2013-07-22 16:08 qanholas 閱讀(57) | 評論 (0) 編輯
摘要: CREATE TABLE #test(id INT IDENTITY(1,1), NAME varchar(30))INSERT #test(name)SELECT '41545'SELECT * FROM #testINSERT #test(name)SELECT '9999999999999999999999999999999999999999999999999999999999999999999999'SELECT * FROM #testINSERT #test(name)SELECT 'uiii'SELECT * FROM #test 閱讀全文
posted @ 2013-07-18 09:35 qanholas 閱讀(53) | 評論 (0) 編輯
摘要: 困擾二天的問題終於得以解決,貌似一個棘手的問題只要知道方法也彷佛變得異常簡單,記錄這次的解決方法,避免遺忘。沒法對 數據庫'UDS' 執行 刪除,由於它正用於複製。 (.Net SqlClient Data Provider)在網上找了些答案無非是先讓數據庫"UDS"脫機,而後進行分離,但仍是不能解決問題。根據查看錯誤的詳細信息,原來微軟的幫助與支持 裏面早就有此問題的解決方案,因此結合本身的實際狀況執行下述語句,而後再進行DROP即 可.sp_removedbreplication'UDS'DROP DATABASEUDS----------- 閱讀全文
posted @ 2013-07-15 08:47 qanholas 閱讀(640) | 評論 (0) 編輯
摘要: DECLARE @ip VARCHAR(60)='113.118.138.159'DECLARE @ip_int BIGINT=[dbo].[f_IP2Int](@ip)SELECT[IPstart], [IPend], [M1], [M2], [M3], [M4]FROM[master].[dbo].[ipv]WHEREipstart @ip_intGOSET STATISTICS IO ON SET STATISTICS TIME ON CREATE CLUSTERED INDEX ix_action ON [ipv](ipstart,[IPend])select dbo. 閱讀全文
posted @ 2013-07-11 11:09 qanholas 閱讀(188) | 評論 (0) 編輯
posted @ 2013-07-10 14:48 qanholas 閱讀(20) | 評論 (0) 編輯
摘要: using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace SQLServerDAL //能夠修改爲實際項目的命名空間名稱 { public abstract class DbHelperSQL { protected static string connectionString = @"Data Source=.;Initial 閱讀全文
posted @ 2013-07-05 17:20 qanholas 閱讀(9147) | 評論 (0) 編輯
摘要: --SELECT stuid FROM dbo.BZList WHERE AreaOrganID=-1 AND AreaPointCode=-1 AND DeptOrganID=-1SELECT bzid,stuid, BZKTypeID, BZKTypeName, BZDate, BZData, BZRemark, PointCode FROM dbo.BZList WHERE StuID =338180 ORDER BY BZDateSELECT bzid,stuid, BZKTypeID, BZKTypeName, BZDate, BZData, BZRemark, PointCode 閱讀全文
posted @ 2013-07-05 15:35 qanholas 閱讀(110) | 評論 (0) 編輯
摘要: 原文http://www.cnblogs.com/tc310/archive/2010/09/17/1829276.htmlCREATE TABLE #test(fphm INT ,kshm CHAR(8))INSERT #testSELECT 2014,'00000001' UNION ALL SELECT 2014,'00000002' UNION ALL SELECT 2014,'00000003' UNION ALL SELECT 2014,'00000004' UNION ALL SELECT 2014,'000 閱讀全文
posted @ 2013-07-04 15:51 qanholas 閱讀(69) | 評論 (0) 編輯
摘要: --建立md5函數CREATE FUNCTION [dbo].[MD5](@src varchar(255) )RETURNS varchar(255)ASBEGIN DECLARE @md5 varchar(34) SET @md5 = sys.fn_VarBinToHexStr(hashbytes('MD5', @src)); --RETURN SUBSTRING(@md5,11,16) --16位 RETURN SUBSTRING(@md5,3,32) --32位ENDGO 閱讀全文
posted @ 2013-07-03 15:04 qanholas 閱讀(710) | 評論 (0) 編輯
摘要: SQL代理沒法啓動,版本2008R2,啓動帳戶修改成新的管理員帳戶後啓動不了,本地帳戶能夠,處理:安全性-登陸名添加該用戶 閱讀全文
posted @ 2013-06-28 15:12 qanholas 閱讀(65) | 評論 (0) 編輯
摘要: 在上一篇Sql Server參數化查詢之where in和like實現詳解中介紹了在Sql Server使用參數化查詢where in的幾種實現方案,遺漏了xml和表值參數,這裏作一個補充文章導讀方案5使用xml參數方案6 使用表值參數TVP,DataTable傳參6種實現方案總結方案5 使用xml參數對sql server xml類型參數不熟悉的童鞋須要先了解下XQuery概念,這裏簡單提下XQuery 是用來從 XML 文檔查找和提取元素及屬性的語言,簡單說就是用於查詢xml的語言說到這就會牽着到XPath,其實XPath是XQuery的一個子集,XQuery 1.0 和 XPath 2. 閱讀全文
posted @ 2013-06-28 09:11 qanholas 閱讀(37) | 評論 (0) 編輯
摘要: 文章導讀拼SQL實現where in查詢使用CHARINDEX或like實現where in 參數化使用exec動態執行SQl實現where in 參數化爲每個參數生成一個參數實現where in 參數化使用臨時表實現where in 參數化like參數化查詢xml和DataTable傳參身爲一名小小的程序猿,在平常開發中不能夠避免的要和where in和like打交道,在大多數狀況下咱們傳的參數很少簡單作下單引號、敏感字符轉義以後就直接拼進了SQL,執行查詢,搞定。如有一天你不可避免的須要 提升SQL的查詢性能,須要一次性where in 幾百、上千、甚至上萬條數據時,參數化查詢將是必然進行 閱讀全文
posted @ 2013-06-28 09:10 qanholas 閱讀(60) | 評論 (0) 編輯
摘要: 解決方法很簡單:卸載刪除跟IIS相關的幾個漏洞安全更新補丁便可,包括KB93937三、KB2290570和KB2124261。卸載微軟安全更新補 丁的方法:打開控制面板的「添加刪除程序」面板,勾選頂部的「顯示更新」可顯示系統中全部安裝的補丁,找到如上所述的幾個補丁,依次卸載掉便可。若是還沒 解決能夠把如下幾個相關的補丁也卸載掉:KB97048三、KB2347290 、KB97555八、KB942830、KB94283一、 KB212154六、KB98280二、KB981322。若是不想卸載以上全部補丁,能夠在添加刪除Windows組件中先卸載IIS,再從新安裝 IIS,註冊asp.net也可。 閱讀全文
posted @ 2013-06-18 11:59 qanholas 閱讀(2028) | 評論 (0) 編輯
摘要: --方法1.求分組數據中最小的前三條SELECT t1.*FROM dbo.info t1WHERE t1.name IN ( SELECT TOP 3 t2.name FROM info t2 WHERE t2.class = t1.class ORDER BY t2.score ASC ) ORDER BY t1.class DESC ,t1.score asc--方法2.求分組數據中最小的前三條SELECT * FROM(SELECT * , ( SELECT COUNT(1) FROM dbo.info t2 WHERE t1.score > t2.score AND t1.cl 閱讀全文
posted @ 2013-06-03 15:16 qanholas 閱讀(44) | 評論 (0) 編輯
摘要: //一、HTML直接轉文本//使用方法HtmlToText convert = new HtmlToText();textBox2.Text = convert.Convert(textBox1.Text);//代碼/// <summary>/// Converts HTML to plain text./// </summary>class HtmlToText{ // Static data tables protected static Dictionary<string, string> _tags; protected static HashSet 閱讀全文
posted @ 2013-05-31 08:33 qanholas 閱讀(74) | 評論 (0) 編輯
摘要: 一個備份集出錯的恢復例子/******************************************嘗試修復,出現錯 誤*******************************************/restoredatabaseth114_oafromdisk='D:\DESK\2010-02-05.bak'withmove'TH114_OA_Data'to'd:\TH114_OA_Data.MDF',move'TH114_OA_Log'to'd:\TH114_OA_Log.ldf',stats/ 閱讀全文
posted @ 2013-05-22 14:40 qanholas 閱讀(1076) | 評論 (0) 編輯
摘要: 1、問題現象在執行分佈式事務時,在sql server 2005下收到以下錯誤:消息 7391,級別 16,狀態 2,過程 xxxxx,第 16 行沒法執行該操做,由於連接服務器 "xxxxx" 的 OLE DB 訪問接口 "SQLNCLI" 沒法啓動分佈式事務。2、解決方案1.雙方啓動MSDTC服務MSDTC服務提供分佈式事務服務,若是要在數據庫中使用分佈式事務,必須在參與的雙方服務 器啓動MSDTC(Distributed Transaction Coordinator)服務。2.打開雙方135端口MSDTC服務依賴於RPC(Remote Proced 閱讀全文
posted @ 2013-05-15 16:06 qanholas 閱讀(1031) | 評論 (0) 編輯
摘要: ----容許對系統表進行更新exec sp_configure 'allow updates',1reconfigure with overrideGO----取消標識列標記update syscolumns set colstat = 0 where id = object_id('tablename') and colstat = 1GO--插入id=8001-8003的行...----恢復標識列標記update syscolumns set colstat = 1 where id = object_id('tablename') and 閱讀全文
posted @ 2013-05-10 21:36 qanholas 閱讀(55) | 評論 (0) 編輯
摘要: SQL Server 2008中的FileStream支持服務器有一個屬性,即指定該服務器是怎麼支持文件流的/*實際上文件流的出現就是爲了解決對大對象的存儲中一個矛 盾。對於大對象,第一種方式是存儲在數據庫裏面,這種方式通常使用image字段,或者varbinary(max)來作。好處是能夠統一備份,但實際上 讀取效率比較低。大於1MB的文件就會有問題第二種方式是文件存儲在文件系統,而數據庫中存儲了一個路徑。這種方式數據庫壓力減輕了,卻很不方便統一備份 和管理。SQL SERVER 2008的文件流其實就是兩者的統一。文件仍是放在文件系統的,但由數據庫進行管理。能夠統一備份和還原。FILESTREA 閱讀全文
posted @ 2013-05-09 16:20 qanholas 閱讀(73) | 評論 (0) 編輯
摘要: 常常會有需求記錄用戶表中由DML操做(Insert/Updae/Delete)引發的數據變化,在SQL Server 2008 之前的版本中,要實現這樣的功能只能經過Trigger或者數據比對(例如SCD處理),並且必須針對每一個用戶表開發。SQL Server 2008中新增了兩種記錄數據變化的功能,本文就Change Data Capture(CDC)和Change Tracking的特性作簡要對比。 Change Data Capture CDC經過對事務日誌的異步讀取,記錄DML操做的發生時間、類型和實際影響的數據變化,而後將這些數據記錄到啓用CDC時自動建立的表中。經過cdc相 關的.. 閱讀全文
posted @ 2013-04-26 11:20 qanholas 閱讀(101) | 評論 (0) 編輯
摘要: 今天在將一個 SQL Server 2005 數據庫附加到 SQL Server 2008 R2 時出現以下的錯誤:沒法升級數據庫 'SchoolPlatForm1',由於它是隻讀的,或者具備只讀文件。請將數據庫或文件設爲可寫,而後從新運行恢復操做。 (Microsoft SQL Server,錯誤: 3415)查看了數據庫文件,他們並無只讀屬性,在 SQL Server 2005 中附加都是一切正常的啊。從網上找了幾種方式:1.將要附加的文件拷貝到 SQL Server 默認的 Data 目錄,此時附加就會成功;(我用之種方式就可能正常附加數據.下面的幾種方式沒有嘗試).( 閱讀全文
posted @ 2013-04-26 09:25 qanholas 閱讀(56) | 評論 (0) 編輯
摘要: SQL2005系統服務啓動不了,具體出錯信息:TITLE: 鏈接到服務器------------------------------沒法鏈接到 SHARESUN/SQL2005。------------------------------ADDITIONAL INFORMATION:在創建與服務器的鏈接時出錯。在鏈接到 SQL Server 2005 時,在默認的設置下 SQL Server 不容許進行遠程鏈接可能會致使此失敗。 (provider: SQL 網絡接口, error: 26 - 定位指定的服務器/實例時出錯) (Microsoft SQL Server, Error: -1) 閱讀全文
posted @ 2013-04-26 09:22 qanholas 閱讀(4164) | 評論 (0) 編輯
摘要: 權限不要疊加 閱讀全文
posted @ 2013-04-24 11:42 qanholas 閱讀(35) | 評論 (0) 編輯
摘要: 在SQL Server 2005數據庫中,經過新增的Service Broker能夠實現異步觸發器的處理功能。本文提供一種使用Service Broker實現的通用異步觸發器方法。 在本這個方法中,經過Service Broker構造異步觸發器處理架構,對於要使用這種架構的表,只須要建立相應的觸發器及處理觸發器中數據的存儲過程,而且在異步觸發器架構中登記觸發器 和處理的存儲過程便可。若是一個觸發器中的數據要被多個表使用,只須要在dbo.tb_async_trigger_subscribtion中登記相應 處理數據的存儲過程便可,即一個表的數據變動能夠被多個表訂閱(使用)。 架構的步驟以下: 1.. 閱讀全文
posted @ 2013-04-23 08:49 qanholas 閱讀(77) | 評論 (0) 編輯
摘要: 最近因爲工做須要,研究了一下2008 CDC功能,以爲還不錯,下面整理了一下研究過程,雖然比較粗略,可是基本上能用了,若是有補充請你們回覆,我視狀況修改原帖,謝謝。背景:在 SQLServer2008以前,對數據變動的捕獲一般使用觸發器、時間戳等低效高成本的功能來實現,因此不少系統都沒有作數據變動或者僅僅對核心表作監 控。自從SQLServer2008引入了數據變動捕獲功能(後面簡稱爲CDC)後,解決了不少煩惱問題,如客戶2個月前更改了一個數據,可是因爲服務器 空間不足,常常只能保留一個月的備份。此時客戶爲了逃避由於更改數據帶來的較大負面影響,每每會把責任推給軟件開發商或者運維商,若是此時有變動捕獲 閱讀全文
posted @ 2013-04-18 15:47 qanholas 閱讀(332) | 評論 (0) 編輯
摘要: /********運行Sql Server Profiler所需的權限(performance)*********/--EG.-- 使用TRACE賬戶(Performancetest)跟蹤Sql Server事件.-- 建立TRACE登錄賬戶(Performancetest),並授予其 ALTER TRACE和VIEW SERVER STATE的權限.USE MasterCREATE LOGIN Performancetest WITH PASSWORD='abc@1234'; GO GRANT ALTER TRACE TO Performancetest; GRANT VIE 閱讀全文
posted @ 2013-04-17 09:27 qanholas 閱讀(90) | 評論 (0) 編輯
摘要: 操做步驟;1、檢查tempdb的邏輯名字和它的存在位置。能夠使用下面語 句:SELECTname,physical_nameFROMsys.master_filesWHEREdatabase_id=DB_ID('tempdb'); 2、暫停數據庫服務.3、拷貝原來tempdb的文件到新的位置(原來文件位置能夠經過上述查詢獲得)。3、拷貝完畢後,啓動數據庫服務。4、執行以下命 令:USEmaster;GOALTERDATABASEtempdbMODIFYFILE(NAME=tempdev,FILENAME='E:\tempdb \tempdb.mdf');GOALTERD 閱讀全文
posted @ 2013-04-11 11:29 qanholas 閱讀(34) | 評論 (0) 編輯
摘要: 企業級的數據庫應用大多部署在RAID磁盤陣列的服務器上,這樣能提升磁盤的訪問性能,並可以實現容錯/容災。RAID(冗餘磁盤陣列),簡單理解,就是 拿一些廉價的硬盤來作成陣列。其目的無非是爲了擴展存儲容量,提高讀寫性能,實現數據冗餘(備份容災)。就像很早就有老外拿N臺舊PC,作成一個強大的 「服務器集羣」。RAID技術誕生於1987年,由美國加州大學伯克利分校提出。主流的大概能夠分爲幾個級別:RAID 0,RAID 1,RAID 5,RAID 10 。配置起來也不是很複雜,有興趣和條件的朋友能夠找相關的資料,本身動手實踐。SQL Server 2005經常使用的有幾個級別0,1,5,10 下面我來簡單說 閱讀全文
posted @ 2013-04-03 15:24 qanholas 閱讀(150) | 評論 (2) 編輯
摘要: 簡介 在SQL Server中,數據是按頁進行存放的。而爲表加上彙集索引後,SQL Server對於數據的查找就是按照彙集索引的列做爲關鍵字進行了。所以對於彙集索引的選擇對性能的影響就變得十分重要了。本文從旨在從性能的角度來談聚 集索引的選擇,但這僅僅是從性能方面考慮。對於有特殊業務要求的表,則須要按實際狀況進行選擇。彙集索引所在的列或列的組合最好是惟一的 這個緣由須要從數據的存放原理來談。在SQL Server中,數據的存放方式並非以行(Row)爲單位,而是以頁爲單位。所以,在查找數據時,SQL Server查找的最小單位其實是頁。也就是說即便你只查找一行很小的數據,SQL Server也 閱讀全文
posted @ 2013-03-26 10:25 qanholas 閱讀(73) | 評論 (0) 編輯
摘要: 簡介 SQL Server每一個表中各列的數據類型的選擇一般顯得很簡單,可是對於具體數據類型的選擇的不一樣對性能的影響仍是略有差異。本篇文章對SQL Server表列數據類型的選擇進行一些探索。一些數據存儲的基礎知識 在SQL Server中,數據的存儲以頁爲單位。八個頁爲一個區。一頁爲8K,一個區爲64K,這個意味着1M的空間能夠容納16個區。如圖1所示: 圖1.SQL Server中的頁和區 如圖1(PS:發現用windows自帶的畫圖程序畫博客中的圖片也不錯)能夠看出,SQL Server中的分配單元分爲三種,分別爲存儲行內數據的In_Row_Data,存儲Lob對象的LOB_Data,存儲 閱讀全文
posted @ 2013-03-26 10:24 qanholas 閱讀(40) | 評論 (0) 編輯
摘要: 有關T-SQL的10個好習慣1. 在生產環境中不要出現Select * 這一點我想你們已是比較熟知了,這樣的錯誤相信會犯的人不會太多。但我這裏仍是要說一下。 不使用Select *的緣由主要不是坊間所流傳的將*解析成具體的列須要產生消耗,這點消耗在我看來徹底能夠忽略不計。更主要的緣由來自如下兩點:擴展方面的問題形成額外的 書籤查找或是由查找變爲掃描 擴展方面的問題是當表中添加一個列時,Select *會把這一列也囊括進去,從而形成上面的第二種問題。 而額外的IO這點顯而易見,當查找不須要的列時天然會產生沒必要要的IO,下面咱們經過一個很是簡單的例子來比較這兩種差異,如圖1所示。圖1.*帶... 閱讀全文
posted @ 2013-03-26 10:19 qanholas 閱讀(172) | 評論 (1) 編輯
摘要: SELECT referencing_schema_name +'.'+ referencing_entity_name AS ReferencedEntityName, referencing_class_desc AS ReferencingEntityDescription FROM sys.dm_sql_referencing_entities ('dbo.BZLIST', 'OBJECT'); GO 閱讀全文
posted @ 2013-03-23 11:23 qanholas 閱讀(20) | 評論 (0) 編輯
摘要: 用Windows Storage Server 2008作iSCSI存儲服務器Windows Storage Server 2008(如下簡稱WSS2008)是Windows Server 2008系列中的存儲服務器版本,是企業級的文件服務器平臺,支持多Administrator文件存儲相關的優化特性、副本管理,以及iSCSI功能。 簡單來講,就是能夠在普通的服務器上,安裝上WSS2008,能夠做爲iSCSI存儲服務器來講。而在之前,存儲服務器的硬件、軟件成本都很是的昂貴,有 了WSS2008,構建低成本、易於管理的存儲服務器成爲可能。本節將介紹WSS2008作iSCSI服務器及其在網絡中的應用。 閱讀全文
posted @ 2013-03-15 15:59 qanholas 閱讀(124) | 評論 (0) 編輯
摘要: 在項目中,你們可能都遇到過,須要把十進制轉換爲其餘進制的狀況,google上一搜,已經有不少2進制、8進制、16進制和十進制的轉換方法。可是在一 些項目中,這些可能沒法知足要求,可能須要1七、18甚至是3二、36進制和十進制的轉換,那麼咱們應該怎麼辦呢?不可能爲每一種進制都去寫一個函數,那 樣可不是明智之舉。因此我這裏提供一個十進制與N進制之間的互轉函數(N<=32)。N進制函數一、準備工做在寫N進制函數以前,須要有一個用於存 儲表示N進制字符的基礎表,這裏我用一個表函數表示:CREATE FUNCTION xavi.fn_NSystemTable()RETURNS @temp TABLE ( 閱讀全文
posted @ 2013-03-14 10:20 qanholas 閱讀(28) | 評論 (0) 編輯
摘要: SQL Server 2008數據庫複製是經過發佈/訂閱的機制進行多臺服務器之間的數據同步,咱們把它用於數據庫的同步備份。這裏的同步備份指的是備份服務器與主服務器進行 實時數據同步,正常狀況下只使用主數據庫服務器,備份服務器只在主服務器出現故障時投入使用。它是一種優於文件備份的數據庫備份解決方案。在選擇數據庫同 步備份解決方案時,咱們評估了兩種方式:SQL Server 2008的數據庫鏡像和SQL Server 2008數據庫複製。數據庫鏡像的優勢是系統能自動發現主服務器故障,而且自動切換至鏡像服務器。但缺點是配置複雜,鏡像數據庫中的數據不可見(在SQL Server Management St 閱讀全文
posted @ 2013-03-13 11:32 qanholas 閱讀(109) | 評論 (0) 編輯
摘要: SQL Server2005同步複製設置1、前言本文介紹的數據庫同步設置步驟僅爲可行性方案,中間可能走了彎路。因爲公司內部的網絡環境沒有現場的複雜,加之 對SQL Server2005瞭解很少,有些部分沒有足夠的時間去測試。現提供現場的情況以便於技術部能夠在公司內部適當的模擬現場的直實狀況。現場情況:l 各數據庫服務器不在同一個網段內,主服務器192.168.1.XXX,子服務器192.168.10.XXX。l 因爲沒有域名服務器,各服務器之間能夠互相Ping通對方的IP地址,Ping對方的機器名失敗其它情況(若有域名服務器,在同一網段內)須逐一測試。 2、同步設置以前l 在SQL Server2 閱讀全文
posted @ 2013-03-12 16:55 qanholas 閱讀(896) | 評論 (0) 編輯
摘要: 服務器的環境是Server2008+SQL2008,作本機的發佈,再推送到本機,但是總提示,「日誌讀取代理器未運行」錯誤提示:進程沒法在 「WIN-XXX」上執行「sp_replcmds」。 (源: MSSQL_REPL,錯誤號: MSSQL_REPL20011)獲取幫助:http://help/MSSQL_REPL20011沒法做爲數據庫主體執行,由於主體 "dbo" 不存在、沒法模擬這種類型的主體,或您沒有所需的權限。 (源: MSSQLServer,錯誤號: 15517)獲取幫助:http://help/15517進程沒法在「WIN-XXX」上執行「sp_replcmd 閱讀全文
posted @ 2013-03-12 16:11 qanholas 閱讀(1283) | 評論 (0) 編輯
摘要: sp_removedbreplication '數據庫名稱' 閱讀全文
posted @ 2013-03-11 08:50 qanholas 閱讀(34) | 評論 (0) 編輯
摘要: 費了半天勁,今天終於裝好SQL Server2012了。按照MSDN中的新特性資料(Columnstore Indexes for Fast DW QP SQL Server 11)。嘗試了下ColumnStore Index。ColumnStore Index按照其字面意思所示。是基於列存儲的索引。這個概念如圖1所示。 圖1.ColumnStoreIndex和基於行的Index比較 ColumnStoreIndex是按照列存入頁當中,而不是按照傳統的以行爲單位存入頁。所以帶來的好處能夠歸結以下: 以往的數據按照行存儲,select哪怕只有一列,也會將整個行所在的頁提取出來,而使用基於列的索. 閱讀全文
posted @ 2013-03-08 08:54 qanholas 閱讀(69) | 評論 (0) 編輯
摘要: 隨着大數據時代的到來,日益增加的數據給數據庫帶來了愈來愈大的壓力。據統計如今咱們天天大概將會產生2.5 quintillion bytes的數據,大數據時代的數據查詢效率引發了愈來愈多的關注。SQL Server 2012新增長了列存儲索引,微軟稱這是其獨有的特性,能夠爲數據倉庫查詢創建只讀索引,數據被組織成扁平化的壓縮形式存儲,能夠減小 I/O 和內存使用。 下面咱們具體研究一下這個列存儲索引是否是真的如宣傳的那樣:比利用常規索引來查詢快幾百倍。 關於列存儲絕對不是一個新名詞了,大概能夠追溯到上個世紀八十年代,本文主要是來研究SQL Server 2012的列存儲索引(Columnsto.. 閱讀全文
posted @ 2013-03-08 08:51 qanholas 閱讀(1531) | 評論 (1) 編輯
摘要: SQL2008 在索引類型中新增了一個名為篩選索引的新成員,線上叢書說明篩選索引是最佳化的非叢集索引,特別適合從已定義的資料子集進行查詢篩選。簡單來說就是在創建 非叢集索引時可加上簡單的 WHERE 子句來提升選擇性,竟而提高查詢效能、下降索引儲存和維護成本..等,很少說,馬上來實測看看效果如何。參考線上叢書情境以下:當資料行中的值大部分都是 NULL 且查詢只會從非 NULL 值進行選取時(疏鬆資料行),您能夠針對非 NULL 的資料列創建篩選索引。所產生的索引比在相同的索引鍵資料行上定義的全資料表非叢集索引還小,維護成本也比較低。CANCEL_REASON資料行資料內 容以下:is null筆 閱讀全文
posted @ 2013-03-05 11:09 qanholas 閱讀(144) | 評論 (0) 編輯
摘要: 數據表test如圖:要求統計截止到某月的總額。。。sql:方法1:?select t2.month,Sum(t1.amount) from test t1 inner join test t2 on t1.month<=t2.month group by t2.month方法2:?select t1.month,(select sum(t2.amount) from test t2 where t2.month<=t1.month) from test t1 閱讀全文
posted @ 2013-03-04 17:34 qanholas 閱讀(89) | 評論 (0) 編輯
摘要: 以前看了園子裏的宋大俠《淺談SQL Server 對於內存的管理》的文章,裏面講到NUMA架構,究竟NUMA架構是啥東西網上的資料說得讓人一頭霧水恰好上星期在MSDN上找到一篇關於NUMA架構的 文章,文章是2011年寫的,如今分享給你們o(∩_∩)o文章:SQL SERVER在NUMA架構下實現性能最佳化就目前而言,CPU主頻速度的迅速提高以及CPU數量的高速增加,並無可以促使CPU在訪問內存時的速度有 所長進。儘管L3 Cache的提出解決了部分問題,不過,CPU訪問內存速度慢的現象並未有所改觀,瓶頸依然存在。爲了更有效的解決CPU訪問內存的速度問題,工業界引入 了NUMA概念首先介紹一下 N 閱讀全文
posted @ 2013-03-04 16:01 qanholas 閱讀(68) | 評論 (0) 編輯
摘要: 1.跟蹤標記用於臨時設置特定服務器的特徵和關閉特定行爲。跟蹤標記常常用於診斷性能問題,或調試存儲過程或複雜的計算機系統。(1)啓用指定的跟蹤標 記。DBCC TRACEON ( trace# [ ,...n ][ , -1 ] ) [ WITH NO_INFOMSGS ](2)禁用指定的跟蹤標記。DBCC TRACEOFF ( trace# [ ,...n ] [ , -1 ] ) [ WITH NO_INFOMSGS ](3)顯示跟蹤標誌的狀態。DBCC TRACESTATUS ( [ [ trace# [ ,...n ] ] [ , ] [ -1 ] ] ) [ WITH NO_INFOMS 閱讀全文
posted @ 2013-02-28 08:54 qanholas 閱讀(416) | 評論 (0) 編輯
摘要: 方法一:使用T-SQL語句實現移動數據庫--首先讓你的數據庫狀態變成脫機狀態ALTER DATABASE Test SET OFFLINE WITH ROLLBACK IMMEDIATE;--執行這個命令以後,SQL Server當即斷開全部的鏈接並回退它們的事務(此時若是有執行未完的事務就容易讓數據庫丟失)--全部正在執行事務的用戶都會接收到一個鏈接錯誤,而 且他們不能再鏈接數據庫。--查看Test數據庫是否存在,對對看數據庫名字是否正確SELECT name ,physical_name AS CurrentLocation ,state_descFROM sys.master_files- 閱讀全文
posted @ 2013-02-28 08:50 qanholas 閱讀(61) | 評論 (0) 編輯
摘要: 在咱們編寫程序的時候,有時候要進行復雜的查詢時,就會出現執行sql時間過長,引發頁面執行不了並提示執行腳本超時,這就是咱們遇到超時異常。超時異常 分兩種狀況:一種,是鏈接超時;一種,是執行超時。前者,經過SqlConnection.ConnectionTimeOut進行設置。後者,經過 SqlCommand.CommandTimeOut進行設置。SqlConnection.ConnectionTimeout獲取在嘗試創建鏈接時終 止嘗試並生成錯誤以前所等待的時間。等待鏈接打開的時間(以秒爲單位)。默認值爲 15 秒。SqlCommand.CommandTimeout獲取或設置在終止執行命令的嘗試並生 閱讀全文
posted @ 2013-02-26 15:17 qanholas 閱讀(1847) | 評論 (0) 編輯
摘要: 在進行數據持久化的時候,咱們會常常用到事務處理。通常狀況下,ADO.NET中的事務處理就可以知足咱們的須要,可是,ADO.NET中的事務不能同事 對多個數據庫鏈接進行原子性的操做;若是在你的業務環境中存在多個數據庫、文件寫入等操做,同時須要保證數據完整性和一致性的時候,你能夠考慮使 用.NET提供的分佈式事務處理。 使用分佈式事務處理,須要Windows系統的支持,因此,咱們須要將系統的MSDTC服務開啓。步驟:管理工具>組件服務;依次展開 控制檯根節點>組件服務>計算機>個人電腦;在「個人電腦」節點上右鍵打開「屬性」;在選項卡中勾選「使用本地協調器」,而後點擊「確 定」按鈕 閱讀全文
posted @ 2013-02-03 13:44 qanholas 閱讀(94) | 評論 (0) 編輯
摘要: 首先,我須要強調下,這篇主旨是揭示堆表的刪除記錄找回的原理,我所考慮的方面並不適用於每一個人的每種狀況,望你們見諒~ 不少朋友認爲數據庫在簡單模式下,堆表誤刪除一條記錄,是沒法找回的,由於沒有日誌記錄。其實否則,某種意義上是能夠找回的,由於堆表在刪除記錄時,沒有 回收空頁面的前提下,只更改了行偏移,實際數據沒有被物理刪除,因此利用這點,測試了下恢復數據,果真成功了,可是還有點問題沒有研究出結果:若是不關閉 頁面校驗,除了更改偏移量,刪除數據時還須要更改頁眉,這點還沒時間去琢磨,因此恢復數據時還要能推斷出頁眉的16進制對應關係,有興趣的朋友能夠分享下 經驗給我。這裏爲了排除頁眉的校驗錯誤,關閉後測試.. 閱讀全文
posted @ 2013-02-01 17:23 qanholas 閱讀(52) | 評論 (0) 編輯
摘要: SQL Server Insert 操做效率(堆表 VS 彙集索引表) 「SQL Server的Insert操做在堆表或者彙集索引表的時候,哪一個效率更高?爲何高?」 以前有同事問過我這個問題,爲了確保日誌庫的記錄效率,因而我作了簡單測試了,首先要先強調幾點概念: 堆表:沒有彙集索引的表,記錄經過IAM頁以及PFS頁來肯定哪頁有空閒空間。 彙集索引表:有彙集索引的表,記錄是根據彙集鍵值所在頁的鍵值邏輯順序維護的Demo:以下 分別對堆表和彙集表進行5個併發線程,每一個線程各10000次循環插入 1. 堆表測試--1. 建立一張堆表create table Insert_Test... 閱讀全文
posted @ 2013-02-01 17:05 qanholas 閱讀(86) | 評論 (0) 編輯
摘要: 緣由及解決方案:此爲文件寫入權限問題,可以下操做解決(XP系統IIS5下嘗試可行)一、資源管理器->工具->文件夾選項->查看 不選"使用簡單文件共享"二、右擊該xml文件(或者該文件所在文件夾),選"屬性"點"安全"添加"aspnet",選中「寫入」賦予寫入權限,或者 選"徹底控制",而後肯定便可。如下爲網絡獲取在windows2003服務器IIS6下出現該錯誤提示的參考解決方案,在此摘錄僅供備份參考:解決方案 一在須要進行讀寫操做的目錄下添加Network Service這個賬 閱讀全文
posted @ 2013-01-12 12:08 qanholas 閱讀(1915) | 評論 (1) 編輯
摘要: 以前寫過一篇關於SQL Server 訪問MySQL 數據庫的文章,最近正好又遇到須要訪問Oracle 的狀況,將配置過程記錄下來也供你們參考。準備工做事先在須要訪問Oracle 數據庫的主機上完成如下工做:1. 安裝SQL Server 數據庫:SQL Server 2008 R2 Express2. 安裝Oracle 客戶端訪問程序:Oracle 10g Client3. 配置Oracle 客戶端tnsnames.ora 文件,其中須要注意文件中的數據庫別名「ORADB」,該名稱在下文建立Linked Server 時將會使用到。ORADB = (DESCRIPTION = (A... 閱讀全文
posted @ 2013-01-10 14:52 qanholas 閱讀(51) | 評論 (0) 編輯
摘要: ALTER FUNCTION [dbo].[fn_subordinates1](@root AS INT) RETURNS @Subs TABLE( empid INT NOT NULL PRIMARY KEY NONCLUSTERED, lvl INT NOT NULL, UNIQUE CLUSTERED(lvl, empid) )ASbegin declare @lv int set @lv=0insert @Subs values(@root,@lv)while @@rowcount>0begin set @lv=@Lv+1; insert @subs select b.empid 閱讀全文
posted @ 2013-01-10 12:57 qanholas 閱讀(32) | 評論 (0) 編輯
摘要: DECLARE @login nvarchar(30)-- 查詢設定密碼逾期的登入帳號SELECT @login = name FROM sys.sql_loginsWHERE (type = 's') AND (is_expiration_checked = 1)-- 計算登入帳號密碼已使用天數SELECT @login AS 'login', DATEDIFF(d, CAST(LOGINPROPERTY(@login, 'PasswordLastSetTime') AS datetime), GETDATE()) AS 'pwd_us 閱讀全文
posted @ 2013-01-05 11:00 qanholas 閱讀(49) | 評論 (0) 編輯
摘要: 虛擬機共享磁盤,VMware稍顯複雜,沒想到,VirtualBox卻如此簡單,下面是詳細的步驟 一:添加磁盤二:選擇建立一個新的磁盤三:選擇VDI類型四:固定大小(此處必需要選此項)五:指定磁盤大小及存放位置,下一步六:建立七:已建立、加載 完畢,肯定八:點擊「管理」菜單,選擇「虛擬介質管理」九:選中剛剛建立的磁盤,點擊Modify(或右鍵選擇Modify)十:選擇「共享」,肯定十 一:關閉管理窗口十二:選擇另外一臺虛擬機,點擊「設置」十三:選擇「存儲」-「控制器」-「增長磁盤」十四:選擇已存在的磁盤,點擊後,找到剛剛建立好的 磁盤,肯定十五:磁盤已加載至此,本塊磁盤已共享至兩臺虛擬機服務器另:Vir 閱讀全文
posted @ 2012-12-17 15:56 qanholas 閱讀(1148) | 評論 (0) 編輯
摘要: 今天維護計劃任務時,常常出現,c001f011錯誤,到網上找了一些解決方案,以下:建立維護計劃失敗。其餘信息:從 ICLassFactory 爲CLSID爲{17BCA6E8-A95D-497E-B2F9-AF6AA475916F}的COM組件建立實例失敗,緣由是出現之後錯 誤:c001f011.(Microsoft.SqlServer.ManagedDTS)從ICassFactory爲CLSID爲 {17BCA6E8-A950-497E-B2F9-AF6AA475916F}的COM組件建立實例失敗,緣由是出現如下錯誤:c001f011. (Microsoft.Server.manageDTS)解決 閱讀全文
posted @ 2012-12-12 10:10 qanholas 閱讀(2555) | 評論 (1) 編輯
摘要: 問題:開啓SQLServer2008以後,本地管理員組再也不須要手動添加,由於在安裝的時候已經默認添加。你甚至只須要把當前用戶手動添加到本地管理員 用戶便可。這意味着,特別是若是你不使用混合認證模式(或者忘記了sa密碼),你可能會被拒絕登陸本身的SQLServer實例。我遇到過一個情景,一個 職員離開,可是他的windows帳號,只擁有SQLServer管理員權限,會徹底阻塞系統。固然也只有這我的知道sa密碼。做爲本地管理員甚至域管理 員將對你沒有幫助。典型的解決方案是以單用戶模式重啓SQLServer。可是,這將要求必定時間的停機。對於某些系統,這是不可接受的。而且依靠管理服 務器的須要,可能沒有切實 閱讀全文
posted @ 2012-12-05 11:04 qanholas 閱讀(663) | 評論 (0) 編輯
摘要: 問題: 我在個人應用程序中使用簡單的查詢/存儲過程訪問一個很大的表。但執行了很長時間。在where子句中,我使用了有索引而且高選擇性 (selective)而且沒有用函數包裹的字段。可是看起來就像沒有使用索引同樣,問題出在那裏?解決方案: 出現這種微秒的問題緣由多是做爲參數的數據類型與查詢中的數據類型不一致。在這種狀況下,SQLServer將會要麼把where中的列,要麼把參數的 數據類型隱式轉換爲更高級或者更低級的數據類型。看成爲被查詢列被轉換時(轉換競爭中的犧牲者),將引發掃描(scan)來知足查詢請求。讓咱們看看如下 兩個例子,第一個例子使用示例數據庫AdventureWorks,咱們將經過 閱讀全文
posted @ 2012-12-05 10:50 qanholas 閱讀(260) | 評論 (0) 編輯
摘要: 問題:在SQL Server Management Studio中能夠運行做業可是用T-SQL運行則失敗,反之亦然.分析:這種狀況多數爲執行時上下文(Context)安全性問題。在SSMS中執行的 時候,T-SQL語句是在當前登陸名下運行的。可是做業在SQL Server Agent中是以SQL Server Agent 服務(SQL Server Agent Service account)運行的,若是SQL Server Agent的帳號與在SSMS中執行T-SQL的帳號不同或者權限不一樣的話,做業就會失敗。本人的實踐是使用高權限的帳號來運行SQL Server Agent,而且具備獨立帳號 閱讀全文
posted @ 2012-12-05 10:48 qanholas 閱讀(64) | 評論 (0) 編輯
摘要: 參照完整性在設計數據庫時須要重視,在我做爲DBA的生涯中,看到不少設計走了極端的路子。在進入DELETE CASCADE選項的詳細說明前,先來看看另一個選項,能夠在具備外鍵的表中設置UDPATE CASCADE選項。在個人工做生涯中,我歷來沒有遇到過必須經過外鍵來更新一列或多列。建立實例表:在本例中,建立兩個表,並用外鍵關聯起來。主表有 99999行記錄,子表對於每條父記錄,有19條記錄。下面是建立語句:-- Table creation logic--parent tableCREATE TABLE [dbo].[Order]([OrderID] [bigint] NOT NULL,[Ord 閱讀全文
posted @ 2012-12-05 10:38 qanholas 閱讀(47) | 評論 (0) 編輯
摘要: 使用情景:有時候會發如今觸發器中的業務邏輯沒有執行,多是由於觸發器的邏輯錯誤所引發的。可是有時候倒是由於一些觸發器被禁用了。 因爲SQLServer默認不跟蹤觸發器的啓用仍是禁用。且禁用觸發器的命令(Disable Trigger)不在默認跟蹤裏面捕獲。可是能夠在服務器級別的跟蹤(不是使用Profiler)獲取這些信息,捕獲SQL:StmtCompleted 並在TextData列篩選,可是對於負載較重的系統,這樣會有比較大的影響。 若是你的是企業版,能夠考慮使用一個新特性:SQL Server Audit。能夠使用DATABASE AUDIT SPECIFICATION來捕獲這些事件。使用步 閱讀全文
posted @ 2012-12-05 10:34 qanholas 閱讀(115) | 評論 (0) 編輯
摘要: -----------------------------------------------------------------------創 建主密鑰use masterCreate MASTER KEY ENCRYPTIONBY PASSWORD = 'zhouwei123!'GO--建立證書,用於透明數據加密CREATE CERTIFICATE TDE_Server_CertificateWITH SUBJECT = 'Server-level cert for TDE'GO--第一步:如今開始透明加密USE cteGOCREATE DATABASE EN 閱讀全文
posted @ 2012-11-29 13:03 qanholas 閱讀(78) | 評論 (0) 編輯
摘要: 異構數據庫中對應的同一對象的數據類型與定義的長度是否一致,若是是基本的結構不一致的話,請先調整一致,再試;反之如果其它數據庫對象的話:我建議你刷 新一下數據庫對象: 使用以下的腳本,EXEC SP_REFRESHVIEW '對象名'這樣問題就能夠解決EXECUTE sp_refreshview N'dbo.v_Employee_Company'; 閱讀全文
posted @ 2012-11-02 16:31 qanholas 閱讀(3073) | 評論 (0) 編輯
摘要: --drop table test CREATE TABLE test ( name VARCHAR(12), scores INT ) INSERT INTO test SELECT '周杰倫',230 UNION SELECT '周星馳',100 UNION SELECT '成龍',150 UNION SELECT '李連杰',200 UNION SELECT '莉莉',260 SELECT * FROM test /* name scores 成龍 150 莉莉 260 李連杰 200 周杰倫 230 周星馳 閱讀全文
posted @ 2012-11-01 10:26 qanholas 閱讀(74) | 評論 (0) 編輯
摘要: CREATE TABLE #files ( id INT IDENTITY(1, 1) , name VARCHAR(500) )DECLARE @dir VARCHAR(600)= 'E:\DataBaseBackup\'DECLARE @dir1 VARCHAR(600)= 'dir ' + @dirDECLARE @day INT= 8 --大於等於8天的備份INSERT #files ( name ) EXEC xp_cmdshell @dir1;WITH cte AS ( SELECT name = @di... 閱讀全文
posted @ 2012-10-31 11:38 qanholas 閱讀(134) | 評論 (0) 編輯
摘要: 修改SQL server 2008服務器排序規則 SQL Server 2008安裝好後,發現服務器排序規則不對,又不想重裝SQL Server。 假設當前默認實例的服務器排序規則是:Chinese_PRC_CI_AS,要修改爲SQL_Latin1_General_CP1_CI_AS 步驟: 在CMD模式 一、 進入SQL Server 安裝文件所在目錄(setup.exe文件所在目錄) 二、 運行命令:Net stop mssqlserver 三、 Setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver... 閱讀全文
posted @ 2012-10-24 10:15 qanholas 閱讀(9653) | 評論 (3) 編輯
摘要: --重建以前--記錄配置信息 --SELECT * FROM sys.configurations;--確認還原後的系統數據庫文件位置. --SELECT name, physical_name AS current_file_location --FROM sys.master_files --WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb')); --確認版本信息 --SELECT --SERVERPROPE 閱讀全文
posted @ 2012-10-24 10:09 qanholas 閱讀(1598) | 評論 (0) 編輯
摘要: 在用SQL Server 2005進行一項測試:如何一次刪除全部用戶數據庫時,沒注意到當前數據庫是master,結果,把這裏的一些表都給刪除了,從而,數據庫引擎能夠正常使 用,但若是右擊任一數據庫,都會出現查找master裏的一個表的操做(對象名 master.dbo.spt_values' 無效。 (Microsoft SQL Server,錯誤: 208)),而這個表被我刪除了,因此就運行不成功了,想壓縮數據庫還行用SQL語句,很麻煩。在網上找的大都是SQL Server 2000 master數據庫重建帖子,關於SQL Server 2005 重建master的帖子基本上都是隻有提 閱讀全文
posted @ 2012-10-24 09:55 qanholas 閱讀(1099) | 評論 (0) 編輯
摘要: WITH cte AS ( SELECT --ROW_NUMBER() OVER ( PARTITION BY StuID ORDER BY BZList.BZInputTime ) pid, BZDate, BZInputTime, StuName, STUID, BZKTypeName, BZData FROM BZList WHERE StuID = 26768 AND ( ( BZKTypeName = '樁考' AND BZInfro = '不及' ) OR ( BZKTypeName = '補考名單' AND BZData =  閱讀全文
posted @ 2012-10-19 17:13 qanholas 閱讀(64) | 評論 (0) 編輯
摘要: USE [SGPZ]GOCREATE TYPE RC AS TABLE(R1 [varchar](MAX) ,R2 [varchar](MAX) )ALTER FUNCTION fn_rc ( @rc rc READONLY )RETURNS @re TABLE ( R1 [varchar](MAX) , R2 [varchar](MAX) )AS BEGIN INSERT @re SELECT R1, R2 = STUFF(( SELECT ',' + R2 FROM @rc t WHERE R1 = NT.R1 FOR XML PATH('') ), 1, 閱讀全文
posted @ 2012-10-19 15:02 qanholas 閱讀(94) | 評論 (0) 編輯
摘要: 使用如下帶有鏈接服務器的語句更新數據速度很是慢,使用profiler監控到了竟然會把這個語句看成遊標逐行掃描目標表來作,執行效率很是差,有高手有 解決方案嗎? update [172.16.7.129].productDB.dbo.tblStyleset ChineseName=ChineseName+'D' where StyleId=N'0091002';改爲這樣exec [172.16.7.129].productDB..sp_executesql N'update update dbo.tblStyleset ChineseName=Chinese 閱讀全文
posted @ 2012-09-25 16:41 qanholas 閱讀(127) | 評論 (0) 編輯
摘要: SET XACT_ABORT onbegin transaction testselect 1/0goselect 1commit transaction testgoSET XACT_ABORT offbegin transaction testselect 1/0select 1commit transaction testSET XACT_ABORT onbegin transaction testselect 1/0goselect 1commit transaction testgo 閱讀全文
posted @ 2012-09-17 14:27 qanholas 閱讀(69) | 評論 (0) 編輯
摘要: 一旦成功地從表中檢索出數據,就須要進一步操縱這些數據,以得到有用或有意義的結果。這些要求包括:執行計算與數學運算、轉換數據、解析數值、組合值和聚 合一個範圍內的值等。下表給出了T-SQL函數的類別和描述。函數類別做用聚合函數執行的操做是將多個值合併爲一個值。例如 COUNT、SUM、MIN 和 MAX。配置函數是一種標量函數,可返回有關配置設置的信息。轉換函數將值從一種數據類型轉換爲另外一種。加密函數支持加密、解密、數字簽名和數字簽名驗 證。遊標函數返回有關遊標狀態的信息。日期和時間函數能夠更改日期和時間的值。數學函數執行三角、幾何和其餘數字運算。元數據函數返回數據庫和數據庫對象 的屬性信息。排名函數 閱讀全文
posted @ 2012-09-12 14:30 qanholas 閱讀(1583) | 評論 (0) 編輯
摘要: SELECT PATINDEX('%[A-Za-z0-9][^A-Za-z0-9\-]%', '5448-cctv美國') 閱讀全文
posted @ 2012-09-12 12:59 qanholas 閱讀(44) | 評論 (0) 編輯
摘要: 概述寫下本篇文章源於參加Tech.Ed的一場關於Window PowerShell的課程。雖然以前也常常關注,但從沒有親自體驗過。Windows PowerShell 是一種新的命令行外殼和腳本語言,用於進行系統管理和自動化任務,它創建在 .NET Framework 的基礎上,可以使 IT 專業人員和開發人員控制和自動完成Windows 和應用程序的管理。更爲強大之處在於它能夠調用.NET Framework中的類庫,能夠與COM、ADO、XML等交互。在本文中讓咱們一塊兒來體會一下回歸Doc操做的快感,進入強大無比的Windows PowerShell世界。在Windows PowerShel 閱讀全文
posted @ 2012-09-11 17:09 qanholas 閱讀(64) | 評論 (0) 編輯
摘要: SELECT s1.name,command,textFROM ( SELECT name, LTRIM(REPLACE(command, 'exec ', '')) command FROM [msdb].[dbo].[sysjobs] jobs RIGHT JOIN [msdb].[dbo].[sysjobsteps] steps ON jobs.job_id = steps.job_id WHERE LEFT(LTRIM(command), 4) = 'exec' AND jobs.name IS NOT NULL ) s1 JOIN ( 閱讀全文
posted @ 2012-09-11 10:12 qanholas 閱讀(41) | 評論 (0) 編輯
摘要: SELECT RTRIM(LTRIM(WorkName)) WorkName, t.BZKTypeName, t.TestProject, t.Factor, BJ, BLFROM #tbl tORDER BY WorkName, t.BZKTypeName DESC, t.TestProject DESC, t.factor DESC SELECT *FROM dbo.ScoreCodeWHERE IsDelete = 0SELECT RTRIM(LTRIM(WorkName)) WorkName, t.BZKTypeName, t.TestProject, t.Factor, BJ, BL 閱讀全文
posted @ 2012-09-10 15:04 qanholas 閱讀(33) | 評論 (0) 編輯
摘要: 安裝SQL Server 2008的時候沒有輸入序列號,後來才發現是Express版的,今天到期了,升級SQL後,SQL服務能夠用了,但SQL Server Management Studio缺沒法使用。在網上找了許久找到了一個解決方法:1.修改註冊表(Regedit): 路徑:計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\ConfigurationState下的CommonFiles文件,將值從1改成3。2.升級SQL記得別再忘記輸入序列號了 哦,升級完成後,SQL Server Management St 閱讀全文
posted @ 2012-09-03 09:16 qanholas 閱讀(42) | 評論 (0) 編輯
摘要: 轉自 [url]http://www.cnblogs.com/szflying/archive/2009/02/02/1382299.html[/url]錯誤截圖:修改配置截圖:更多4 閱讀全文
posted @ 2012-09-02 12:20 qanholas 閱讀(29) | 評論 (0) 編輯
摘要: 今天有個朋友很着急地打電話給我,他用delete語句誤刪除了SQL Server 2008數據庫中兩個表中的全部記錄,而這個數據庫以前沒有任何備份。讓我幫他解決一下,否則他要賠償客戶不少錢。SQL Server中誤刪除數據的恢復原本不是件難事,從事務日誌恢復便可。可是,這個恢復須要有兩個前提條件:1. 至少有一個誤刪除以前的數據庫徹底備份。2. 數據庫的恢復模式(Recovery mode)是「完整(Full)」。針對這兩個前提條件,會有三種狀況:狀況1、若是這兩個前提條件都存在,經過SQL語句只需三步就能恢復(參考文 章),無需藉助第三方工具。 a) 備份當前數據庫的事務日誌:BACKUP . 閱讀全文
posted @ 2012-08-28 09:03 qanholas 閱讀(93) | 評論 (0) 編輯
摘要: SQL2000企業版本適用於WIN2000 Server系統和Windows 2003系統,Windows XP通常裝不了須要選用我的版或開發板。可是企業版也能夠安裝在xp系統下。這裏介紹一個XP下安裝裝SQL2000企業版本方法,以供參考:一.在 SQL服務器的安裝盤中找到MSDE這個目錄,而且點擊setup.exe安裝它,過程簡單直接下一步就OK了。 二.重啓系統WINDOWSXP,這下就能夠看到SQL服務的圖標出現了。 三.再拿出SQL服務器版的安裝光盤,(本地磁盤安裝運行autorun.exe就好了)根據提示安裝,這裏直接安裝客戶端工具。 四.打開企業管理器,試用sa用戶連一下,是否是用 閱讀全文
posted @ 2012-08-27 17:32 qanholas 閱讀(47) | 評論 (0) 編輯
摘要: 策略管理是SQL Server 2008中的一個新特性,用於管理數據庫實例、數據庫以及數據庫對象的各類屬性。策略管理在SSMS的對象資源管理器數據庫實例下的「管理」節點下,如 圖: 從圖中能夠看到,策略管理中包含三個節點:策略、條件、方面。 方面就是策略要應用的對象,包括:服務器、表、觸發器、視圖、存儲過程……這些方面對象都是系統定義好了的,僅供瞻仰不可更改。雙擊具體的某一個方面能夠 查看該方面的屬性,在定義條件時便可對這些屬性進行判斷,如圖爲存儲過程方面的屬性。 條件就是一個布爾表達式判斷策略是否爲真。 策略就是在條件爲假的狀況下要執行的操做,即評估模式。策略中的評估模式有4種:... 閱讀全文
posted @ 2012-08-08 11:19 qanholas 閱讀(54) | 評論 (0) 編輯
摘要: 遇到了一個問題,從excel導入數據到sql2005,以前操做過不少次,此次遇到了一些新狀況。 使用的語句以下: select * from OpenRowSet ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=E:\bb.xls', [Sheet1$] )結果提示錯誤:由於 OLE DB 訪問接口 'Microsoft.Jet.OLEDB.4.0' 配置爲在單線程單元模式下運行,因此該訪問接口沒法用於分佈式查詢。 查了不少資料通常都是客戶端和服務器端都是64位系統的情 閱讀全文
posted @ 2012-07-21 09:34 qanholas 閱讀(1251) | 評論 (0) 編輯
摘要: DECLARE @a VARCHAR(30)= 'cc'DECLARE @b VARCHAR(30)= 'cc 'IF ( @a = @b ) PRINT 1ELSE PRINT 2if(@a+'a'=@b+'a')PRINT 1ELSE PRINT 2 閱讀全文
posted @ 2012-07-20 16:02 qanholas 閱讀(89) | 評論 (0) 編輯
摘要: 內嵌用戶定義函數 內嵌用戶定義函數是返回 table 的用戶定義函數的子集。內嵌函數可用於實現參數化視圖的功能。 請看下面的視圖: CREATE VIEW vw_CustomerNamesInWA AS SELECT CustomerID, CompanyName FROM Northwind.dbo.Customers WHERE Region = 'WA' 可建立更通用的版本 vw_CustomerNamesInRegion,方法是將 WHERE Region = 'WA' 替換爲 WHERE Region = @RegionParameter 並讓用戶指定 閱讀全文
posted @ 2012-07-19 16:52 qanholas 閱讀(6836) | 評論 (0) 編輯
摘要: SET NOCOUNT ON SET STATISTICS IO ON SET STATISTICS TIME ON SELECT * FROM OPENQUERY(LINK_SCT, 'SELECT * from sct.dbo.GetSubClassNew(638)') SELECT * FROM sct.dbo.GetSubClassNew(638) SELECT * FROM dbo.GetSubClassNew(638) 閱讀全文
posted @ 2012-07-16 15:41 qanholas 閱讀(1591) | 評論 (0) 編輯
摘要: 昨天在測試一段批量插入記錄的數據庫操做時,發現開啓事務與否對性能影響很大,根據當時的環境,測試有6倍差距.分別測試插入500條/5000條 /50000條,開啓事務時分別爲480毫秒/4546毫秒/47407毫秒不開事務時分別爲3100毫秒/30859毫秒/308802毫秒這是什麼原 因呢?仔細分析一下,這個應該跟SqlServer的後臺內存管理和數據存取機制相關。當咱們提交數據到服務器時,SqlServer會按以下順序進行操 做:1)複製數據到內存;2)書寫操做日誌;3)保存數據到磁盤數據文件中。這三步操做中,1和2的效率都比較高(內存書寫自沒必要說,日誌書寫是順序書 寫,不須要複雜校驗,故也比較快) 閱讀全文
posted @ 2012-07-11 09:23 qanholas 閱讀(1377) | 評論 (1) 編輯
摘要: 有時咱們須要在SQL Server中清除已經鏈接過的服務器名稱(Server Name)列表,後來網絡搜索,找到了解決方法: 刪除下面的文件:C:\Documents and Settings\XXX\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin注意:刪除前請作備份! 若是Windows Server 2008 標準版安裝SQL Express 2008,則在這裏刪除:X:\Users[SomeUser]\AppData\Roaming\Microsoft\Microsoft SQL. 閱讀全文
posted @ 2012-07-10 15:12 qanholas 閱讀(995) | 評論 (0) 編輯
摘要: 數據量2000,其中有1000重複 --------------------------------------------------------------------------------------- 方法一,IN方式,適合2000/2005/2008,6728毫秒 DELETE[student_L]WHEREidNOTIN(SELECTMAX(id)-- min(id)FROM[student_L]GROUPBY[stuid],[stuname],[Birthday], [AreaOrganID])/*SQLServer分析和編譯時間:CPU時間=20毫秒,佔用時間=20毫秒。表's 閱讀全文
posted @ 2012-07-03 15:45 qanholas 閱讀(282) | 評論 (0) 編輯
摘要: 15秒跟2秒之間的區別 UPDATE a SET flag = 1 FROM LINK_39.test_01.dbo.NSB_test AS a WHERE bh IN ( SELECT TOP 500 bh FROM LINK_39.test_01.dbo.NSB_test WHERE bh IS NOT NULL ORDER BY bh )DECLARE @bh VARCHAR(MAX)= '' SELECT @bh = @bh + ',' + CAST(CAST(bh AS INT) AS VARCHAR(10)) FROM ( SELECT TOP 50 閱讀全文
posted @ 2012-06-28 17:27 qanholas 閱讀(553) | 評論 (0) 編輯
摘要: 問題描述:有表tb, 以下:id values----------- -----------1 aa,bb2 aaa,bbb,ccc欲按,分拆values列, 分拆後結果以下:id value----------- --------1 aa1 bb2 aaa2 bbb2 ccc1. 舊的解決方法SELECT TOP 8000 id = IDENTITY(int, 1, 1)INTO #FROM syscolumns a, syscolumns bSELECT A.id, SUBSTRING(A.[values], B.id, CHARINDEX(',', A.[values] 閱讀全文
posted @ 2012-06-20 16:18 qanholas 閱讀(47) | 評論 (0) 編輯
摘要: 這些天看了一篇微軟官方發佈的MS SQL Server2008性能問題處理及優化的英文文檔,裏面知識點介紹地很詳細,在現實工做中也很實用,遂產生了想把它翻譯一下的念頭。翻譯的過程,既能夠 幫助本身複習一下這些技術,也能夠向其餘還不熟悉這一塊的朋友介紹一些新的知識,何樂而不爲呢。只是這篇文章有點長,我會分紅幾篇隨筆去介紹,因此,不光 是對我耐性的考驗,也是對你的考驗哦!-------------------------------------------- tempdb全局存儲內部對象,用戶對象,臨時表,臨時對象,以及SQL Server操做建立的存儲過程。每一個數據庫實例只有一個tempdb,因此. 閱讀全文
posted @ 2012-06-14 22:14 qanholas 閱讀(313) | 評論 (0) 編輯
摘要: 關於表變量是什麼(和表變量不是什麼),以及和臨時表的比較讓不少人很是困惑。雖然網上已經有了不少關於它們的文章,但我並無發現一篇比較全面的。在本 篇文章中,咱們將探索表變量和臨時表是什麼(以及不是什麼),而後咱們經過使用臨時表和表變量對其解密。表變量 表變量在SQL Server 2000中首次被引入,那麼,什麼是表變量呢?微軟在BOL (Declare @local_variable)中定義其爲一個類型爲表的變量。它的具體定義包括列定義,列名,數據類型和約束。而在表變量中能夠使用的約束包括主鍵約 束,惟一約束,Null約束和Check約束(外鍵約束不能在表變量中使用).定義表變量的語句是和正常. 閱讀全文
posted @ 2012-06-14 22:06 qanholas 閱讀(281) | 評論 (2) 編輯
摘要: 連接服務器下查詢出現這個問題 閱讀全文
posted @ 2012-06-13 10:40 qanholas 閱讀(48) | 評論 (0) 編輯
摘要: --建立測試表CREATE TABLE test1(id int)delete會話一BEGIN TRANdelete test1INSERT test1SELECT 1會話二INSERT test1SELECT 1一先,二後,二瞬間完成,沒有發生阻塞 ---------------------------------------------------------------------sp_lock------------------------------------------------------------------------------------------------tru 閱讀全文
posted @ 2012-06-09 10:21 qanholas 閱讀(91) | 評論 (0) 編輯
摘要: USE tempdbGOSET STATISTICS TIME OFF SET STATISTICS io OFF drop table #resultcreate table #result([插入行數] int,[正常臨時表] int,[新加GUID列的臨時表] int,[新加自增列臨時表] int,列集 int,[into方式建立臨時表] int)set nocount on declare @i int = 0while @i<=30 begin begin try drop table #Studentid drop table #Studentid1 drop table # 閱讀全文
posted @ 2012-06-04 10:08 qanholas 閱讀(56) | 評論 (0) 編輯
摘要: USE tempdbGOSET STATISTICS TIME OFF SET STATISTICS io OFF drop table #resultcreate table #result( [插入行數] int , [正常臨時表] int, [行壓縮臨時表] int, [into方式建立臨時表] int, [新加GUID列的臨時表] int, [頁壓縮臨時表] int, [行壓縮臨時表+新加GUID列] int, [頁壓縮臨時表+新加GUID列] int, [新加自增列臨時表] int) set nocount on declare @i int =0while @i<=5000b 閱讀全文
posted @ 2012-06-01 14:24 qanholas 閱讀(332) | 評論 (0) 編輯
摘要: --動態處理select A.StuName,A.BZKTypeName,cast(A.BKCODE as varbinary(MAX)) even, row_number() over (partition by StuName,BZKTypeName order by getdate()) ID into #t1 from BKLIST A --where StuName='林健輝' declare @sql1 varchar(max) declare @sql2 varchar(max) declare @id int declare @maxid int select 閱讀全文
posted @ 2012-05-31 14:35 qanholas 閱讀(60) | 評論 (0) 編輯
摘要: 1.只有關聯條件有非彙集索引--清空緩存DBCC FREEPROCCACHE WITH NO_INFOMSGSDBCC FREESESSIONCACHE WITH NO_INFOMSGSDBCC FREESYSTEMCACHE('All') WITH NO_INFOMSGSDBCC DROPCLEANBUFFERS WITH NO_INFOMSGSSET NOCOUNT onCREATE TABLE #result(狀態 varchar(20),[id(毫秒)] INT,[guid(毫秒)] INT)DECLARE @start INTDECLARE @end INTSET @ 閱讀全文
posted @ 2012-05-30 11:49 qanholas 閱讀(263) | 評論 (0) 編輯
摘要: 【sqlserver】:sqlserver 認爲 null 最小。升序排列:null 值默認排在最前。要想排後面,則:order by case when col is null then 1 else 0 end ,col降序排列:null 值默認排在最後。要想排在前面,則:order by case when col is null then 0 else 1 end , col desc【oracle】:oracle認爲 null 最大。升序排列,默認狀況下,null值排後面。降序排序,默認狀況下,null值排前面。有幾種辦法改變這種狀況:(1)用 nvl 函數或decode 函數 將n 閱讀全文
posted @ 2012-05-29 10:29 qanholas 閱讀(273) | 評論 (0) 編輯
摘要: --生成碼錶if exists (select * from dbo.sysobjects where id = object_id(N'[codetable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [codetable]GOdeclare @j varchar(8000),@f varchar(8000)select @j='一乙二十丁廠七卜人入八九幾兒了力乃刀又三於幹虧士工土才寸下大丈與萬上小口巾山千乞川億個勺久凡及夕丸麼廣亡門義之屍弓己已子衛也女飛刃習叉馬 鄉豐王井開夫天無元專 閱讀全文
posted @ 2012-05-25 15:07 qanholas 閱讀(859) | 評論 (0) 編輯
摘要: declare @class varchar(max)= dbo.super_GetSubClass1(378,default,default); set statistics io on set statistics time on -- XML SELECT B.value FROM ( SELECT [values] = CONVERT(xml,'<root><v>'+REPLACE([values],',', '</v><v>') +'</v></root>& 閱讀全文
posted @ 2012-05-25 10:33 qanholas 閱讀(78) | 評論 (0) 編輯
摘要: 問題描述:有表tb,以下:idvalues----------- -----------1aa,bb2aaa,bbb,ccc欲按,分拆values列,分拆後結果以下:idvalue----------- --------1aa1bb2aaa2bbb2ccc1.舊的解決方法 SELECTTOP8000id=IDENTITY(int,1,1)INTO#FROMsyscolumns a,syscolumns bSELECTA.id,SUBSTRING(A.[values],B.id,CHARINDEX(',',A.[values]+',',B.id)-B.id)FROM 閱讀全文
posted @ 2012-05-25 10:31 qanholas 閱讀(42) | 評論 (0) 編輯
摘要: 數據類型範圍存儲bigint-2^63(-9,223,372,036,854,775,808)到 2^63-1(9,223,372,036,854,775,807)8字節int-2^31(-2,147,483,648)到 2^31-1(2,147,483,647)4字節smallint-2^15(-32,768)到2^15-1(32,767)2字節tinyint0 到2551字節money-922,337,203,685,477.5808到922,337,203,685,477.58078字節 smallmoney-214,748.3648到214,748.36474字節decimal... 閱讀全文
posted @ 2012-05-24 16:06 qanholas 閱讀(1658) | 評論 (0) 編輯
摘要: with tiesWITH TIES指定從基本結果集中返回額外的行,對於 ORDER BY 列中指定的排序方式參數,這些額外的返回行的該參數值與 TOPn(PERCENT) 行中的最後一行的該參數值相同。只能在 SELECT 語句中且只有在指定了 ORDER BY 子句以後,才能指定 TOP...WITH TIES。注意:返回的記錄關聯順序是任意的。ORDER BY不影響此規則來源:MSDN,http://msdn.microsoft.com/zh-cn/library/ms189463.aspx通俗解 釋若是按照order by 參數排序TOP n(PERCENT)返回了前面n(pencent 閱讀全文
posted @ 2012-05-18 14:31 qanholas 閱讀(980) | 評論 (0) 編輯
摘要: 今天在一個存儲過程當中看見了merge這個關鍵字,第一個想法是,這個是配置管理中的概念嗎,把相鄰兩次的更改合併到一塊兒。後來在technet上搜索發 現別有洞天,原來是另一個sql關鍵字,t-sql的語法仍是至關地豐富的。本篇是一篇學習筆記,沒有什麼新意,這裏給出technet上的地址鏈接供 你們參考權威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,這裏具體的語法不 去深究了,只是把幾個例子實際運行,剖析一番。 使用merge同時執行insert和update操做咱們常常會有這樣的需求,根據某個字段或多個字段查找表中的一行或多行數. 閱讀全文
posted @ 2012-05-18 11:54 qanholas 閱讀(4621) | 評論 (1) 編輯
摘要: SET QUOTED_IDENTIFIER ONSELECT * FROM "student" WHERE stuname='江玉婷' SET QUOTED_IDENTIFIER ONSELECT * FROM [student] WHERE stuname='江玉婷' SET QUOTED_IDENTIFIER OFFSELECT * FROM [student] WHERE stuname='江玉婷' SET QUOTED_IDENTIFIER OFFSELECT * FROM [student] WHERE stunam 閱讀全文
posted @ 2012-05-18 09:40 qanholas 閱讀(80) | 評論 (0) 編輯
摘要: --SQLServer2008中新增功能:能夠使用單個Insert命令插入多行。 CreatetableDemo_Values(PKIDintnotnullidentity(1,1)primarykey,DNameNvarchar(20)null,DCodeNVarchar(30)null,DDatedatetimenull)go--thisSQLisonlyforSQLServer2008InsertintoDemo_Values(DName,DCode,DDate)values('DemoA','AAA',GETDATE()),('DemoB' 閱讀全文
posted @ 2012-05-18 09:08 qanholas 閱讀(90) | 評論 (0) 編輯
摘要: --連接服務器"LINK_110"的 OLE DB 訪問接口 "SQLNCLI10" 返回了消息 "該夥伴事務管理器已經禁止了它對遠程/網絡事務的支持。"。--消息 7391,級別 16,狀態 2,第 4 行--沒法執行該操做,由於連接服務器 "LINK_110" 的 OLE DB 訪問接口 "SQLNCLI10" 沒法啓動分佈式事務。 閱讀全文
posted @ 2012-05-17 17:10 qanholas 閱讀(852) | 評論 (0) 編輯
摘要: SQL Server 2008中SQL應用系列--目錄索引 若是是在SQL 2000中,咱們須要讀取分層結構數據時,不得不借助遞歸。在SQL server 2005中,咱們能夠使用CTE,固然,好的數據結構設計能夠避免你使用CTE,請看這裏:http://www.cnblogs.com /downmoon/archive/2009/10/23/1588405.html若是你是一個數據庫設計新手,那麼在sql server 2008中能夠使用新的原生分層結構數據hierarchyid。關於它的詳細說明,請看MSDN:http://msdn.microsoft.com /zh-cn/library/b 閱讀全文
posted @ 2012-05-17 10:19 qanholas 閱讀(63) | 評論 (0) 編輯
摘要: 簡介 在SQL Server中,索引是一種加強式的存在,這意味着,即便沒有索引,SQL Server仍然能夠實現應有的功能。但索引能夠在大多數狀況下大大提高查詢性能,在OLAP中尤爲明顯.要徹底理解索引的概念,須要瞭解大量原理性的知 識,包括B樹,堆,數據庫頁,區,填充因子,碎片,文件組等等一系列相關知識,這些知識寫一本小書也不爲過。因此本文並不會深刻討論這些主題。索引是什麼 索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。 精簡來講,索引是一種結構.在SQL Server中,索引和表(這裏指的是加了彙集索引的表)的存儲結構是同樣的,都是B樹,B樹是一 閱讀全文
posted @ 2012-05-16 14:56 qanholas 閱讀(87) | 評論 (0) 編輯
摘要: create procedure SP_GET_TABLE_INFO @ObjName varchar(128) /* The table to generate sql script */as declare @Script varchar(255)declare @ColName varchar(30)declare @ColID TinyIntdeclare @UserType smallintdeclare @TypeName sysnamedeclare @Length smallintdeclare @Prec smallintdeclare @Scale smallintdecl 閱讀全文
posted @ 2012-05-14 14:00 qanholas 閱讀(100) | 評論 (0) 編輯
摘要: SET NOCOUNT ON DECLARE @tbname VARCHAR(30)SET @tbname = '用戶檔案'DECLARE @columns TABLE ( id INT, NAME VARCHAR(30) )INSERT @columns SELECT ROW_NUMBER() OVER ( ORDER BY columns.object_id ) id, columns.NAME FROM sys.columns JOIN sys.objects ON columns.obje... 閱讀全文
posted @ 2012-05-13 22:27 qanholas 閱讀(75) | 評論 (0) 編輯
摘要: 昨天有人在羣裏討論SQL Server返回最後一個標識值的三個函數:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY,在些做個標記和小結。 其實MSDN對此有官方解釋:這三個函數都返回最後生成的標識值。 可是,上述每一個函數中定義的「最後」的做用域和會話有所不一樣。 一、IDENT_CURRENT 返回爲某個會話和當前做用域中的指定表生成的最新標識值。 若是 IDENT_CURRENT 值爲 NULL(由於表從未包含行或已被截斷),IDENT_CURRENT 函數將返回種子值。 二、@@IDENTITY 返回爲跨全部做用域的當前會話中的某個表生成的最新標識值。... 閱讀全文
posted @ 2012-05-11 10:55 qanholas 閱讀(99) | 評論 (0) 編輯
摘要: MS SQL Server:DDL觸發器DDL觸發器 (本文轉摘於網絡)1. DDL Trigger觸發事件總彙:在建立用來監視並響應該數據庫或服務器實例中的活動的事件通知時,能夠指定相應事件類型或事件組。 DDL_DATABASE_LEVEL_EVENTS包括: DDL_TRIGGER_EVENTS, DDL_FUNCTION_EVENTS, DDL_SYNONYM_EVENTS, DDL_SSB_EVENTS, DDL_DATABASE_SECURITY_EVENTS, DDL_EVENT_NOTIFICATION_EVENTS, DDL_PROCEDURE_EVENTS, ... 閱讀全文
posted @ 2012-05-10 16:48 qanholas 閱讀(459) | 評論 (0) 編輯
摘要: CREATE TABLE [dbo].[Student2]([StuID] [int] NULL,[StuNum] [varchar](50) SPARSE NULL,[StuNamePY] [varchar](50) SPARSE NULL,[StuNameWB] [varchar](50) SPARSE NULL,[StuName] [varchar](50) SPARSE NULL,[IDNumber] [varchar](18) SPARSE NULL,[FileNo] [varchar](50) SPARSE NULL,[DocType] [varchar](50) SPARSE N 閱讀全文
posted @ 2012-05-08 14:12 qanholas 閱讀(48) | 評論 (0) 編輯
摘要: declare @TableType varchar(max) = ''declare @tablename varchar(max)set @tablename='student'select @TableType=@TableType+case when types.name in ('varchar','nvarchar','char','nchar','varbinary')then 'declare @'+columns.name+''+&# 閱讀全文
posted @ 2012-05-08 14:10 qanholas 閱讀(34) | 評論 (0) 編輯
摘要: 在作SQL Server 2005 的羣集維護時, 碰到了這樣一個問題:當資源組在一個節點上的時候, 用sa登陸數據庫, 從management studio中查看用戶數據庫的屬性, 正常; 可是將資源組轉移到另外一個節點時, 用sa登陸數據庫, 從management studio中查看用戶數據庫的屬性, 卻報以下錯誤:標題: Microsoft SQL Server Management Studio------------------------------沒法顯示請求的對話框。 ------------------------------其餘信息:沒法顯示請求的對話框。 (SqlMgmt) 閱讀全文
posted @ 2012-05-07 16:11 qanholas 閱讀(1247) | 評論 (0) 編輯
摘要: 在論壇上看到這樣一個帖子, 原文以下:在個人SQL Server2008R2上, 試了一下, 果真是這樣, 轉換成numeric時報錯..看樣子很奇怪, 明明函數ISNUMBERIC的返回值是1, 可是轉換卻不成功, 爲何呢?查了一下BOL, 發現以下的解釋:ISNUMBERIC函數判斷表達式是不是如下類型之 一:intrealnumericbigintmoneysmallintsmallmoneytinyintfloatdecimal看樣子 ISNUMBERIC不僅判斷是不是NUMBERIC類型, 也判斷其餘如money等類型.試了一下轉換成money型, 結果就沒有報錯, 語句以下:SELE 閱讀全文
posted @ 2012-05-07 16:09 qanholas 閱讀(138) | 評論 (0) 編輯
摘要: -獲得事務回滾,數據庫備份/還原預計須要的時間SELECT session_id --回滾的進程ID, 能夠用dbcc inputbuffer (spid) 來查詢進程所作的操做 ,start_time--進程開始command的時間 ,status--進程狀態 ,Command--進程執行的命令 ,DB_NAME(database_id) AS 'database_name'--進程涉及的數據庫 ,USER_NAME(user_id) AS 'USER_NAME'--提交進程的用戶 ,blocking_session_id--阻塞該進程的進程ID ,wait_ 閱讀全文
posted @ 2012-05-07 16:08 qanholas 閱讀(265) | 評論 (0) 編輯
摘要: 前幾天碰到一個問題, SQL Server 2008 SP2 上的一個檢查數據庫完整性的維護計劃失敗了, 這個維護計劃沒有過任何的修改.先查看一下執行這個維護計劃的job的歷史, 有相似如下的報錯:Executing query "DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp...".: 100% completeEnd Progress DTExec: The package execution returned DTSER_FAILURE (1).Started: 10:14:30 AM Finished : 10:14 閱讀全文
posted @ 2012-05-07 16:07 qanholas 閱讀(3775) | 評論 (0) 編輯
摘要: set nocount ondeclare @lock table(spid int,dbid int,objid int,indid int,type varchar(6),resource varchar(max),mode varchar(200),status varchar(200))declare @loclinfo table(EventType varchar(max),Parameters int,EventInfo varchar(max))declare @sql table (sql varchar(max))insert @lock exec sys.sp_lock; 閱讀全文
posted @ 2012-05-04 09:52 qanholas 閱讀(52) | 評論 (0) 編輯
摘要: declare @TableType varchar(max) =''declare @tablename varchar(max)set @tablename='student'select @TableType=@TableType +case when types.name in ('varchar','nvarchar','char','nchar','varbinary') then '['+columns.name+']'+' &# 閱讀全文
posted @ 2012-05-04 09:15 qanholas 閱讀(37) | 評論 (0) 編輯
摘要: 最近在項目中進行壓力測試遇到了數據庫的死鎖問題,簡言之,以下的代碼在 SERIALIZABLE 隔離級別形成了死鎖:?1234567891011121314SELECT @findCount=COUNT(id) FROM MyTableWHERE [fk_related_id]=@ArgumentIF (@findCount > 0)BEGINROLLBACK TRANSACTIONRETURN ERROR_CODEENDINSERT INTO MyTable ([fk_related_id],…)VALUES (@Argument,…)COMMIT TRANSACTIONRETURN 閱讀全文
posted @ 2012-05-02 17:26 qanholas 閱讀(3294) | 評論 (0) 編輯
摘要: CLR函數腳本 ---------------------------------------------------------------------------------using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using System.Collections;/// <summary>/// 用戶自定CLR 函數,用來生成一個序列/// </summary>public 閱讀全文
posted @ 2012-05-02 12:03 qanholas 閱讀(968) | 評論 (3) 編輯
摘要: 「在 master 數據庫中記錄的數據庫全部者 SID 與在數據庫 '**' 中記錄的數據庫全部者 SID 不一樣。應該經過使用 ALTER AUTHORIZATION 語句重置數據庫 '*' 的全部者來更正此狀況。 」 解決:Sp_changedbowner 'sa',true --sa爲須要使用的用戶名,在相應的數據庫中執行便可 閱讀全文
posted @ 2012-05-02 10:05 qanholas 閱讀(1039) | 評論 (0) 編輯
摘要: 一,哈希表(Hashtable)簡述 在.NET Framework中,Hashtable是System.Collections命名空間提供的一個容器,用於處理和表現相似keyvalue的鍵值 對,其中key一般可用來快速查找,同時key是區分大小寫;value用於存儲對應於key的值。Hashtable中keyvalue鍵值對均爲 object類型,因此Hashtable能夠支持任何類型的keyvalue鍵值對.二,哈希表的簡單操做在哈希表中添加一個keyvalue鍵值 對:HashtableObject.Add(key,value);在哈希表中去除某個keyvalue鍵值對:Hashtabl 閱讀全文
posted @ 2012-05-02 09:20 qanholas 閱讀(69) | 評論 (0) 編輯
摘要: Float and RealApproximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly. The ISO synonym forrealisfloat(24).Data typeRangeStoragefloat- 1.79E+308 to -2.23E-308, 0 and 2.23E-3 閱讀全文
posted @ 2012-05-01 14:42 qanholas 閱讀(140) | 評論 (0) 編輯
摘要: decimal數據類型最多可存儲38個數字,全部數字都可以放到小數點的右邊。decimal數據類型存儲了一個準確(精確)的數字表達法;不存儲值的 近似值。定義decimal的列、變量和參數的兩種特性以下:p 小數點左邊和右邊數字之和,不包括小數點。如123.45,則p=5,s=2。指定精度或對象可以控制的數字個數。s指定可放到小數點右邊的小數位數或數 字個數。p和s必須遵照如下規則:0 <=s<=p<= 38。numeric和decimal數據類型的默認最大精度值是38。在Transact-SQL中,numeric與decimal數據類型在功能上 等效。當數據值必定要按照指定精確存 閱讀全文
posted @ 2012-05-01 14:36 qanholas 閱讀(101) | 評論 (0) 編輯
摘要: alter proc test @sourcetablename varchar(30), @targettablename varchar(200), @id varchar(8)as declare @cols varchar(max);declare @cols1 varchar(max);declare @cols2 varchar(max);with cols as ( select columns.name,'s.'+columns.name name1, 'd.'+columns.name+'='+'s.'+colu 閱讀全文
posted @ 2012-04-27 11:42 qanholas 閱讀(67) | 評論 (0) 編輯
摘要: 症狀若是同時知足如下兩個條件,Microsoft Search 服務 (MSSearch) 可能沒法啓動,或可能致使 CPU 使用率達到 100%: 從 SQL S...若是同時知足如下兩個條件,Microsoft Search 服務 (MSSearch) 可能沒法啓動,或可能致使 CPU 使用率達到 100%:從 SQL Server 2000 刪除了 BUILTIN\Administrators 賬戶。Microsoft Search 服務配置爲在本地系統賬戶之外的賬戶下啓動。緣由不支持 Microsoft Search 服務在本地系統賬戶之外的賬戶下運行。不支持 Microsoft Se 閱讀全文
posted @ 2012-04-26 21:50 qanholas 閱讀(108) | 評論 (0) 編輯
摘要: 原本是自動的,修改成這個以後很快,跟本地執行很接近 閱讀全文
posted @ 2012-04-25 10:54 qanholas 閱讀(130) | 評論 (0) 編輯
摘要: alter function fn_GetColumns ( @TableName varchar(max) )returns varchar(max)as begin declare @cols varchar(max); with cols as ( select columns.name from sys.columns join sys.objects on sys.columns.object_id = sys.objects.object_id and objects.name = @TableName ... 閱讀全文
posted @ 2012-04-21 21:33 qanholas 閱讀(66) | 評論 (0) 編輯
摘要: --Descript:利用CHECKSUM創建索引USE tempdb ;GO--DROP TABLE dbo.TCREATE TABLE dbo.T ( ID INT PRIMARY KEY IDENTITY(1, 1) , [Name] NVARCHAR(MAX) ) ;--這裏我偷懶一下,本身注意在IDE中,關閉,不要插入太多了.哈WHILE 1 = 1 INSERT INTO dbo.T SELECT CAST(NEWID() AS NVARCHAR(36)) SELECT *FROM dbo.T--表 'T'。掃描計數 1,邏輯讀取 5059 次,物理讀取 0 次,預 閱讀全文
posted @ 2012-04-21 11:31 qanholas 閱讀(148) | 評論 (0) 編輯
摘要: 優化SQL Server 2000的設置 SQL Server已經爲了優化本身的性能而進行了良好的配置,比今天市場其餘的關係型數據庫都要好得多。然而,你仍然有幾項設置須要進行修改,以便你的數據庫 每分鐘能夠處理更多的事務(TPM)。本篇文章的目的就是討論這些設置。咱們忽略那些能夠經過硬件配置或者表或者索引設計提升的性能,由於這些內容在本篇 文章範圍以外。 破碎頁面檢測 在咱們開始討論服務器配置開關以前,讓咱們快速瀏覽一下你的模型數據庫??或者說用做構建新的數據庫的基礎的模板。默認狀況下,你能夠在數據庫中建立存儲 過程、函數等相似的東西,隨後他們將會被加入新建立的數據庫中。 要優化性能,你也許... 閱讀全文
posted @ 2012-04-21 10:49 qanholas 閱讀(764) | 評論 (0) 編輯
摘要: 如何提升性能SELECT TOP n * FROM [tablename] ORDER BY NEWID()想從數據庫隨機得到一條記錄在網上查了一下全都是這個方法但性能太差 千萬級的表要20秒以上如何提升性能SELECT TOP 1 * FROM [tablename] ORDER BY NEWID()SELECT * FROM [tablename] where id=(select count(*)+1 from tablename)*rand()若是id連續,這個就是最快的方法。SELECT top 1 * FROM [tablename] where id>=(select ma 閱讀全文
posted @ 2012-04-21 10:47 qanholas 閱讀(1974) | 評論 (0) 編輯
摘要: 今天接到一用戶問題,ArcSDE for SQL Server 數據庫,利用ArcGIS桌面建立數據集時,提示以下錯誤:其實這個錯誤已經很是明顯的告訴了用戶,查詢的開銷比數據庫默認設置的小才形成的該錯誤「查詢 開銷」是指在特定硬件配置中完成查詢所需的估計佔用時間(秒)那麼數據庫哪一個參數與「查詢開銷」有關呢?MSSQLSERVER_8649詳細信息產品名 稱SQL Server產品版本10.50產品內部版本號10.50.0000.00事件 ID8649事件源MSSQLSERVER組件SQLEngine符號名稱COST_TOO_HIGH消息正文查詢已取消,由於此查詢的估計開銷 (%d) 出了配置的閾值 閱讀全文
posted @ 2012-04-19 15:02 qanholas 閱讀(1471) | 評論 (0) 編輯
摘要: SELECT [Car] , DeviceNo , MIN([StateTime]) [StateTime] , MAX([EndTime]) [EndTime] , CAST(( DATEDIFF(SS, MIN([StateTime]), MAX([EndTime])) / 3600 ) AS VARCHAR(12)) + ':' + CAST(( ( DATEDIFF(SS, MIN([StateTime]), MAX([EndTime])) - ( DATEDIFF(SS, MIN([StateTime]), MAX([EndTime])) / 3600 ) * 360 閱讀全文
posted @ 2012-04-18 11:58 qanholas 閱讀(163) | 評論 (0) 編輯
摘要: UPDATE msdb.dbo.sysschedulesSET freq_subday_interval = 1 , date_modified = GETDATE() , version_number = version_number + 1WHERE ( schedule_id = 64 ) 閱讀全文
posted @ 2012-04-16 14:07 qanholas 閱讀(24) | 評論 (0) 編輯
摘要: 不少作架構設計、程序開發、運維、技術管理的朋友可能或多或少有這樣的困惑:SQLServer到底支持多少鏈接數的併發?SQLServer是否能夠滿 足現有的應用嗎?現有的技術架構支持多少鏈接數的併發?在硬件性能與網絡性能足夠理想的狀況下理論上能夠支持多少併發鏈接?生產環境中的數據庫如今的併發 量是多少?如何監控現有數據庫併發的數量?生產環境中的併發量距離理論上的最大並量發還差多少?爲此,我專門寫程序作了下測試,利用循環不斷的打開鏈接並 保持鏈接打開不關閉,測試代碼以下:1usingSystem; 2usingSystem.Collections.Generic; 3 4namespaceSQLServ 閱讀全文
posted @ 2012-04-15 16:37 qanholas 閱讀(153) | 評論 (0) 編輯
摘要: SQL Server 阻止了對組件 'Agent XPs' 的 過程 'dbo.sp_set_sqlagent_properties' 的訪問,由於此組件已做爲此服務器安全配置的一部分而被關閉。系統管理員能夠經過使用 sp_configure 啓用 'Agent XPs'。有關啓用 'Agent XPs' 的詳細信息,請參閱 SQL Server 聯機叢書中的 "外圍應用配置器"。 (.Net SqlClient Data Provider)sp_configure 'show advanced opt 閱讀全文
posted @ 2012-04-13 17:28 qanholas 閱讀(1908) | 評論 (0) 編輯
摘要: USE 出問題的庫名; EXEC sp_changedbowner '數據庫系統管理員'; 閱讀全文
posted @ 2012-04-13 12:35 qanholas 閱讀(101) | 評論 (0) 編輯
摘要: 錯誤提示(配置發佈和禁用複製功能時提示 分發服務器未正確安裝。):一、沒法爲本地服務器找到分發服務器或分發數據庫。可能未安裝分發服務器,也可能在分發服務器上未將本地服務器配置爲發佈服務 器。二、SQL Server 沒法禁用「xxxx」上的發佈和分發。------------------------------其餘信息:執行 Transact-SQL 語句或批處理時發生了異常。 (Microsoft.SqlServer.ConnectionInfo)------------------------------分發服務器未 正確安裝,因此沒法使數據庫不可發佈。問題緣由: 服務器換過主機,因此此時機器 閱讀全文
posted @ 2012-04-13 11:23 qanholas 閱讀(855) | 評論 (0) 編輯
摘要: USE master EXEC sp_removedbreplication ’數據庫名稱’ GO運行便可sp_removedbreplication該存儲過程在發佈服務器的發佈數據庫中或在訂閱服務器的訂閱數據庫中執行。該過程將從執行它的 數據庫中刪除全部複製對象,但它不會從其餘數據庫(例如,分發數據庫)中刪除對象。注意: 只有當其餘刪除複製對象的方法都失敗後,才應當使用此過程。有關這些方法的詳細信息,請參閱刪除複製。Transact-SQL 語法約定語法sp_removedbreplication [ [ @dbname = ] ‘dbname’ ] [ , [ @type = ] type 閱讀全文
posted @ 2012-04-12 17:24 qanholas 閱讀(1190) | 評論 (0) 編輯
摘要: 講到 SQL Server 2008 效能調校,這但是一門大大的學問,可是若能掌握一些基本的 SQL Server 資料庫運做原理,要能成為 SQL Server 效能調校的專家其實並不困難。我們都知道學習這些原理並不難,看書就會了,難的是如何才能在實務管理工做上真正的融會貫通、靈活運用這些已知的知識,再搭 配一些方便的工具幫你快速取得所要的重要資訊,進而作出效能調校的判斷與改善現有資料庫的效能問題。今天我打算來分享一個分析索引使用量統計的技巧,來改 善資料庫「寫入」效率的問題。通常來說,我們在作資料庫效能調校時,都會想調整「讀取」資料的效能,也就是創建「非叢集索引」來縮短篩選與取得資料的時間 閱讀全文
posted @ 2012-04-12 09:46 qanholas 閱讀(553) | 評論 (0) 編輯
摘要: 微軟在 SQL Server 2005 Service Pack 2 推出的時候也釋出了一套免費的 Performance Dashboard Reports 自訂報表,透過此報表能夠很輕易的分析出整臺 SQL Server 的執行效能,是一個很是很是實用的效能分析工具,幾乎是每位 DBA 必備的工具之一,惋惜的是到了 SQL Server 2008 之後就再也不更新,以至於無法正常安裝到 SQL Server 2008 之後的版本,本文章將說明正確的安裝步驟,讓此報表也能夠在 SQL Server 2008 上正確執行。在我們下載完 SQL Server 2005 Performance Da 閱讀全文
posted @ 2012-04-12 09:23 qanholas 閱讀(172) | 評論 (0) 編輯
摘要: 前言我看過很多對Bit字段可否創建索引,以及創建索引後性能如何的討論,還有朋友建議用Tinyint代替Bit,我在這裏深刻研究一下:研究方法: 1、創建六張表,具體說明見SQL語句中的註釋部分:建表Sql語句Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com /-->CREATEDATABASEIndexTestGOUSEIndexTestGO--bit無索引,0、1相等 CREATETABLEdbo.TestBitNoIndex(TestIDINTNOTN 閱讀全文
posted @ 2012-04-09 21:48 qanholas 閱讀(537) | 評論 (0) 編輯
摘要: Now, the question is, do you really WANT an index on a BIT column? We're going to run some experiments, but in general, it is highly unlikely that you will get much use out of such an index. The exception is when the data is heavily weighted towards, say, 1 (e.g. 95-99% of the table), and you ar 閱讀全文
posted @ 2012-04-09 21:14 qanholas 閱讀(186) | 評論 (0) 編輯
摘要: SELECT TOP 100 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * ( user_seeks + user_scans ), 0) , user_seeks , user_scans , avg_total_user_cost , avg_user_impact , TableName = statement , [EqualityUsage] = equality_columns , [InequalityUsage] = inequality_columns , [Include Cloumns] = .. 閱讀全文
相關文章
相關標籤/搜索