發表文章

目前顯示的是 4月, 2016的文章

SQL SERVER 副本建立帳號 SID複製 (SQL ALWAYS-ON 完成加入資料庫後最後一個步驟)

看到很多SQL ALWAYS-ON的教學 只教到跑精靈把資料庫加入AG就結束了 你知道這樣 當資料庫FAIL-OVER時是不WORK的嗎? 因為副本缺乏主節點上的登入帳號 AG切換時 除了資料庫兩邊會自動同步外 帳號的新增 是要"手動"的 因此 當資料庫加入完AG群組後 請在主資料庫上跑已下指令 USE master GO IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL DROP PROCEDURE sp_hexadecimal GO CREATE PROCEDURE sp_hexadecimal @binvalue varbinary(256), @hexvalue varchar (514) OUTPUT AS DECLARE @charvalue varchar (514) DECLARE @i int DECLARE @length int DECLARE @hexstring char(16) SELECT @charvalue = '0x' SELECT @i = 1 SELECT @length = DATALENGTH (@binvalue) SELECT @hexstring = '0123456789ABCDEF' WHILE (@i <= @length) BEGIN DECLARE @tempint int DECLARE @firstint int DECLARE @secondint int SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1)) SELECT @firstint = FLOOR(@tempint/16) SELECT @secondint = @tempint - (@firstint*16) SELECT @charvalue = @charvalue + SUBSTRING(@hexstring, @firstint+1, 1) + SUBSTRING(@hexstring, @secondint+1, 1) SELECT @i = @i + 1 END SELECT @hexvalue = @charvalue GO ...

MS SQL SERVER看交易紀錄的T-SQL

如果想要看交易紀錄的成長 / 變化 除了蒐LOG以外 也可以透過以下語法監看 -- Recovery model, log reuse wait description, log file size, log usage size -- and compatibility level for all databases on instance SELECT db . [ name ] AS [ DATABASE Name ] , db . recovery_model_desc AS [ Recovery Model ] , db . log_reuse_wait_desc AS [ Log Reuse Wait Description ] , ls . cntr_value AS [ Log Size ( KB ) ] , lu . cntr_value AS [ Log Used ( KB ) ] , CAST ( CAST ( lu . cntr_value AS FLOAT ) / CAST ( ls . cntr_value AS FLOAT ) AS DECIMAL ( 18 , 2 ) ) * 100 AS [ Log Used % ] , db . [ compatibility_level ] AS [ DB Compatibility Level ] , db . page_verify_option_desc AS [ Page Verify OPTION ] FROM sys . DATABASES AS db INNER JOIN sys . dm_os_performance_counters AS lu ON db . name = lu . instance_name INNER JOIN sys . dm_os_performance_counters AS ls ON db . name = ls . instance_name WHERE lu . counter_name LIKE 'Log File(s) Used Size (KB)%' ...

MS SQL SERVER 當資料庫混損 而沒有備份時候的救援方式

最近發生一件鳥事 由於下面的工程師在安裝完資料庫後 沒有設定交易紀錄備份 因此LDF磁碟被寫滿 造成資料庫異常 重啟後 發現資料庫處於「正在還原」狀態下 如果你跟我一樣綏  可以試試看以下步驟 進行修復 步驟如下 1. 由於原資料庫 MDF 、 LDF 被 ” 正在還原 ” 狀態咬住 ,所以先把 資料庫 暫時停用,停用後 把該資料庫 MDF 、 LDF 先複製到 別的地方 。 2. 重新於 資料庫 上建立同名之新的 資料庫 → 離線 USE master GO ALTER DATABASE [資料庫名稱] SET OFFLINE; GO 3. 將有問題之資料取代新的資料庫 → 上線 --步驟03. 將先前的資料檔案覆蓋掉此新建立的資料庫檔案。 --步驟04. 若嘗試執行重新上線此資料庫,例如: USE master GO ALTER DATABASE [資料庫名稱] SET ONLINE; GO 4. 切成緊急模式 → 切換單人模式 → 進行 DBCC 修復 ALTER DATABASE [資料庫名稱] SET SINGLE_USER SET EMERGENCY; GO DBCC CHECKDB ( [資料庫名稱] , REPAIR_ALLOW_DATA_LOSS) ; GO 5.完成後進行檢查 use master GO DBCC CHECKDB( [資料庫名稱]) GO 6.如果沒有好 可以在用以下指令 在修復一次 ALTER DATABASE [資料庫名稱] WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB ( [資料庫名稱] , REPAIR_ALLOW_DATA_LOSS) ; GO 7.完成後切回多人模式 ALTER DATABASE [資料庫名稱] SET MULTI_USER; GO 以上 God bliss you! See also : 交易記錄檔(transaction log)意外損毀,僅剩下資料檔案可用為例。錯誤訊息:訊息 1813,層級 16,狀態 2 ...