Time of Update: 2018-12-03
資料庫現在已經變成企業的基石,所以需要保證資料庫的高可用性。同時也需要防止意外事情導致整個資料中心出現問題(比如地址,水災等等)。所以對於資料中心高可用性和災難恢複是同時要考慮。 使用SQL Server的資料庫鏡像和記錄傳送兩項功能可以協助我們完成上述目標。 情景:A 資料中心有SQL2K8和R2兩台資料庫伺服器,B資料中心有SQL28(與A地區不同,為了防止意外導致整個A資料中心不可用),需要配置的資料庫為AuditDb。 配置如下:1.
Time of Update: 2018-12-03
由於有些預存程序涉及到很多表資料的更改,所以每次只能運行一個使用者訪問。如果多個使用者訪問的話就會造成資料的出現問題(比如預存程序使用一張中間表做資料存放區,會用到刪除更新,如果第一個使用者正在更新的時候,第二個使用者刪除資料,那麼第一個使用者的資料就會丟失)。曾經看到有用控制板來控制預存程序的運行。運行預存程序之前先檢查控製表的狀態,如果發現有使用者正在運行則返回錯誤結果。 其實不需要額外開發只需要調用系統預存程序sp_getapplock就可以實現相同的功能。使用sp_getapplock可
Time of Update: 2018-12-03
首先看一個例子: --建立測試表CREATE TABLE testfreespace( column1 INT,column2 CHAR(20),column3 VARCHAR(8000)) --插入資料DECLARE @count INT;SET @count = 0;WHILE @count < 3000BEGINSELECT@count = @count + 1;INSERT into testfreespaceVALUES( @count,'test row
Time of Update: 2018-12-03
By Gail Shaw, 2010/04/23 (first published: 2009/02/16) A corrupt database is probably one of most DBA's worst nightmares. It results in downtime, managers shouting and all other sorts of unpleasant thingsIn this article, I'm going to explain some of
Time of Update: 2018-12-03
最近使用者有個需求,需要監控檔案夾下面檔案的數量。如果超過一定的閥值需要發MAIL預警。從網上找了些VB Script的代碼然後自己修改了一下就可以了。 原始碼如下: strMessage = "File number more than10, please check"strTo= "sample@home.cn"strFrom="sample@home.cn"strSubject="File number more than 10,please
Time of Update: 2018-12-03
在論壇看到有人遇到 NDF檔案丟失並且沒有備份,所以無法成功附加資料庫。在網上也看到過很多回答是如果沒有NDF就無法附加成功。 其實我自己測試下來即使沒有NDF也是可以成功附加的。但是有條件,丟失的NDF檔案不屬於Primary file group並且SQL Server為企業版 下面是我做的測試: 1. --建立資料庫 CREATE DATABASE[test1] CONTAINMENT=NONE ON PRIMARY(
Time of Update: 2018-12-03
上次的Oracle問題原因:管理員權限。因為在重裝系統的時候,建立了一個管理員權限的使用者(dcy),administrator使用者預設為禁用的,但是建立的使用者雖是管理員權限卻並不真正具有administrator的許可權,於是在運行一些程式的時候必須首先右擊—選擇管理員權限運行。而PL/Sql和Oracle的net configuration assistant
Time of Update: 2018-12-03
擷取伺服器名稱: SELECT SERVERPROPERTY('MachineName')select @@SERVERNAME select HOST_NAME() 擷取IP地址可以使用xp_cmdshell執行ipconfig命令: --開啟xp_cmdshell exec sp_configure'show advanced options', 1 reconfigure with override exec sp_configure'xp_cmdshell',
Time of Update: 2018-12-03
SQL Server 2012引入了資料行存放區索引,對每列的資料進行分組和儲存,然後聯結所有列以完成整個索引。這不同於傳統索引,傳統索引對每行的資料進行分組和儲存,然後聯結所有行以完成整個索引。 在訪問基於行儲存的索引時,如果要查詢一個欄位需要將整個Page讀入記憶體,所以預設會讀到所有行的資料:通過上面的圖片可以看出,如果一個查詢只想查詢欄位A的值,代價是讀取所有的頁面,包括了不需要的欄位B,C,D,E。
Time of Update: 2018-12-03
做BI項目很多時候需要跟Portal做整合,可以將整個BI Portal放到企業門戶或者只是存放一些固定的報表。由於Cognos預設運行會帶出Cognos Viewer,這樣就跟門戶不太協調。 有幾種辦法可以解決這個問題: 1.修改系統XML之間因此Cognos View 2. 修改URL的行為比如Copy the url of the report (go to Cognos connection-> go to the folderlocation of report->
Time of Update: 2018-12-03
在論壇看到有人提問是否可以用T-SQL測試LinkedServer的串連是否正常,這樣訪問多個Linked Server的時候如果其中的一個串連失敗就可以跳過不去處理。 在SQLServer 2005和之後的版本中提供了一個系統預存程序 "sp_testlinkedserver"可以用來測試LinkedServer是否連通。這個預存程序以Linked Server的名稱作為輸入參數,傳回值0表示成功,1返回失敗。 下面是一段測試代碼: declare @srvr nvarchar(128),@
Time of Update: 2018-12-03
// 一個點代表一個字元,api解釋為任何字元 p("abc".matches("..."));//true p("123".matches("..."));//true //把所有的數字替換成-,\d代表 數字 兩個\\代表一個反斜線 p("a8729a".replaceAll("\\d", "-"));//a----a p("a872d9a".replaceAll("\\d",
Time of Update: 2018-12-03
以FileSystemXmlApplicationContext為例說說初始化過程,該類是一個支援Xml定義的BeanDefinition的ApplicationContext,從該類的源碼來看,只提供了一個方法,getResourceByPath(String
Time of Update: 2018-12-03
前一段時間測試SQL Server 2014記憶體資料庫的時候發現如果資料庫大小超過了設定的最大記憶體,SQL Server出現Error: 701錯誤。 錯誤資訊: Error: 701, Severity: 17, State: 123.There is insufficient system memory in resource pool 'internal' to runthis
Time of Update: 2018-12-03
\\d代表數字 api解釋 :X{n,m} X,至少 n 次,但是不超過 m 次 p("214523145234532".matches("\\d{3,100}"));//true p("214523145234532".matches("\\d{3,10}"));//false p("1234567890".matches("\\d{10}"));//true X{n} X,恰好 n 次 /** *
Time of Update: 2018-12-03
大家都知道進階版本的資料庫檔案無法還原或者附加到低版本,因為高版本和低版本檔案格式會有不同。如果嘗試將低版本的資料庫附加或者還原到低版本的資料庫會看到類似下面的錯誤: 已備份資料庫的磁碟結構版本為611,伺服器支援版本為539,無法還原或升級資料庫。RESTORE FILELIST 操作異常結束。(MicrosoftSQL Server,錯誤:3169) 可以看到這裡有兩個版本號碼,不是我們平時看到的伺服器版本號碼(select
Time of Update: 2018-12-03
p(" \n\r\t".matches("\\s{4}"));//true 說名\s 空白字元:[ \t\n\x0B\f\r] p(" ".matches("\\S"));//false 說明\S 非空白字元:[^\s] 所以是false p("a_8".matches("\\w{3}"));//true p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));//true 說明[a-z]{1,3}
Time of Update: 2018-12-03
前幾天在論壇看到有個文章提問是否可以在應用程式中檢查SQL Server的文法,當時自己也不清楚。今天在看SQL Server Set設定,發現有兩個選項可以實現這個功能: 1. SET PARSEONLY選項(類似於SSMS的Cntrl+F5) 這個選項檢查每個 Transact-SQL 陳述式的文法並返回任何錯誤訊息,但不編譯和執行語句。 下面我們建立一個預存程序用來檢查輸入的語句是否正確: create procedure
Time of Update: 2018-12-03
// 以h開頭的 p("hello sir".matches("^h.*"));//true 說明^ 行的開頭 .*代表任一字元出現零次或者多次 p("hello sir".matches("^a.*"));//false p("h".matches("^h.*"));//true p("hello sir".matches(".*ir$"));//true $行的結尾,本句是以ir結尾的字元 p("hello
Time of Update: 2018-12-03
/** * matches用於匹配整個字元,find找子串,其中find方法調用之後, * 可調用Matcher的toString方法,返回的字串中 * 的lastmatch來檢查哪些子串獲得匹配字 * ,不過最簡單的方法是調用group(),注意reset的影響,lookingAt每次從頭找 * 注意start和end方法必須能找到,才有傳回值,否則就報錯了 */