最後改安裝舊版 Driver 才解決 dpi 異常問題
星期四, 12月 30, 2021
GodexRT 730X - 標籤機 Driver
同事告知剛上線 PC 在標籤列印上有異常,使用者告知標籤跑版,直接列印觀察,發現是解析度異常
最後改安裝舊版 Driver 才解決 dpi 異常問題
最後改安裝舊版 Driver 才解決 dpi 異常問題
星期四, 12月 23, 2021
[SQL] 索引維護成本
透過執行計畫來觀察 Insert、Update、Delete 時索引維護情況
建立範例資料
Insert 觀察
Insert 語法
建立範例資料
USE [AdventureWorks2019]
GO
DROP TABLE IF EXISTS [dbo].[EmployeeWithIndex]
DROP TABLE IF EXISTS [dbo].[Employee]
CREATE TABLE [dbo].[EmployeeWithIndex]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[FullName] [nvarchar](100) NULL,
[HireDate] [date] NULL,
CONSTRAINT [PK_EmployeeWithIndex] PRIMARY KEY CLUSTERED ( [ID] ASC)
)
GO
-- 建立該索引來觀察
CREATE INDEX IX_EmployeeWithIndex_FullName ON EmployeeWithIndex (FullName)
GO
CREATE TABLE [dbo].[Employee]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[FullName] [nvarchar](100) NULL,
[HireDate] [date] NULL,
CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED ( [ID] ASC)
)
GO
Insert 觀察
Insert 語法
INSERT INTO EmployeeWithIndex (FullName , HireDate)
VALUES(N'張三' , '20211223')
INSERT INTO Employee (FullName , HireDate)
VALUES(N'張三' , '20211223')
從執行計畫成本比較可以看出 EmployeeWithIndex 成本因為要更新 IX_EmployeeWithIndex_FullName 所以成本較高
Update 語法
從叢集索引更新 operator 內可以看見 EmployeeWithIndex Insert 時有更新 IX_EmployeeWithIndex_FullName
UPDATE EmployeeWithIndex SET FullName = N'張三 Update' WHERE ID = 1
UPDATE Employee SET Hiredate = '20211224' WHERE ID = 1
更新時跑不同執行計畫,單純閱讀執行計畫差異
從叢集索引更新 operator 內可以看見 EmployeeWithIndex Insert 時有更新 IX_EmployeeWithIndex_FullName
Delete 語法
從叢集索引刪除 operator 內可以看見 EmployeeWithIndex Insert 時有更新 IX_EmployeeWithIndex_FullName
DELETE FROM EmployeeWithIndex WHERE ID = 1
DELETE FROM Employee WHERE ID = 1
從執行計畫成本比較可以看出 EmployeeWithIndex 成本因為要更新 IX_EmployeeWithIndex_FullName 所以成本較高從叢集索引刪除 operator 內可以看見 EmployeeWithIndex Insert 時有更新 IX_EmployeeWithIndex_FullName
星期四, 12月 16, 2021
[SQL] 備份權限
測試環境上在 SQL Server Agent 執行排程備份時失敗,錯誤訊息如下
訊息 以下列使用者的身分執行: NT SERVICE\SQLAgent$SQL2019。該錯誤訊息解讀沒有目的地資料夾權限,仔細看發現是透過 Agent 服務帳號執行,但印象中備份應該是 SQL Server 服務帳號來執行才是。
無法開啟備份裝置 'D:\SQLBackup\AdventureWorks2019.bak'。作業系統錯誤 5(存取被拒。)。 [SQLSTATE 42000] (錯誤 3201) BACKUP LOG 正在異常結束。 [SQLSTATE 42000] (錯誤 3013)
步驟失敗。
在文章
星期一, 12月 13, 2021
[SQL] 維護計畫 - 檢查資料庫完整性
在 [SQL] DBCC CheckDB 發信通知 內是直接寫語法來偵測 DBCC CheckDB 是否有偵測異常,有就發信通知,該篇使用 [維護計畫 - 檢查資料庫完整性] 來達到相同效果,紀錄相關重點
選取報表選項
- 包含索引:檢查所有的索引頁面以及資料表資料頁面的完整性
- 僅限實體:將檢查限制於頁面實體結構、記錄標頭的完整性,以及資料庫配置的一致性。 使用此選項可縮短 DBCC CHECKDB 對大型資料庫的執行階段,因此,建議您在實際系統上經常使用
- Tablock:使 DBCC CHECKDB 取得鎖定,而不使用內部資料庫快照集。 這包括資料庫上的短期獨佔 (X) 鎖定。 使用此選項可協助 DBCC CHECKDB 在大量負載的資料庫上執行得快一些,但 DBCC CHECKDB 執行時,資料庫可用的並行處理能力會降低
- 平行處理原則的最大程度:使用維護計畫精靈 內雖然沒有說明,但這很明顯是 DBCC CheckDB 執行時,可以限制 CPU 使用
預設為 [將報表寫入文字檔],在這邊改以 [以電子郵件傳送報表] 為主,收件者為事先設定好的 operator
因為設定發信,所以檢查完畢後,會發信通知 operator
參考該篇 - [SQL] 模擬資料庫毀損 破壞 AdventureWorks2017,再次執行維護計畫,發出的 Email 訊息內,有包含 DBCC CheckDB 內的檢查訊息,特別把錯誤訊息抓出來
報表與紀錄
該介面內較特別之處在於多出 [紀錄] 選項
執行維護計畫
失敗:(-1073548784) 執行查詢 "DBCC CHECKDB(N'AdventureWorks2017') WITH PHYSICA..." 失敗,發生下列錯誤: "資料表錯誤: 物件識別碼 1893581784,索引識別碼 1,分割區識別碼 72057594049200128,配置單位識別碼 72057594056933376 (類型 In-row data),頁面 (1:12640)。測試 (IS_OFF (BUF_IOERR, pBUF->bstat)) 失敗。值為 133129 和 -4。物件識別碼 1893581784,索引識別碼 1,分割區識別碼 72057594049200128,配置單位識別碼 72057594056933376 (類型 In-row data): 頁面 (1:12640) 無法處理。請參閱其他錯誤以取得詳細資料。DBCC 對 'AdventureWorks2017' 的結果。CHECKDB 發現了資料表 'HumanResources.Employee' (物件識別碼 1893581784) 中 0 個配置錯誤和 2 個一致性錯誤。CHECKDB 發現了資料庫 'AdventureWorks2017' 中 0 個配置錯誤和 2 個一致性錯誤。repair_allow_data_loss 是 DBCC CHECKDB (AdventureWorks2017) 所發現之錯誤的最小修復層級。DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請連絡您的系統管理員。"。可能的失敗原因: 查詢發生問題、未正確設定 "ResultSet" 屬性、未正確設定參數,或未正確建立連接。
Email 截圖
建立完成後可以進修改,可以看見 DBCC CheckDB 設定選項,會多出現一個 [檢視 T-SQL] 按鈕
產生的 TSQL 執行語法
use [AdventureWorks2017];
GO
DBCC CHECKDB(N'AdventureWorks2017') WITH PHYSICAL_ONLY
報表與紀錄
SSMS 上圖示
該介面內較特別之處在於多出 [紀錄] 選項
- 紀錄擴充資訊:在記錄檔中包含更多資訊。 包含此選項會增加預存維護計畫記錄的大小。白話說明就是會記錄執行計畫使用的 TSQL 語法,此為預設勾選選項
- 記錄到遠端伺服器:將維護計畫記錄記錄到遠端伺服器
紀錄擴充資訊範例
星期四, 12月 09, 2021
[ZWCAD] 缺少 SHX 檔案
在新電腦上重新安裝 ZWCAD 2018,使用者回報出現缺少字型,在官方文件 - 開啟圖檔常有字體shx找不到的狀況,或是圖面都是問號? 上發現解決方式,記錄一下
使用者回報缺少 SHX 檔案訊息
該訊息有明確指出,缺少 chineset.shx 字型
下載官方連結提供的字型檔案,並放進 ZWCAD fonts 資料夾內就行
使用者回報缺少 SHX 檔案訊息
該訊息有明確指出,缺少 chineset.shx 字型
下載官方連結提供的字型檔案,並放進 ZWCAD fonts 資料夾內就行
星期日, 12月 05, 2021
[SQL] 資料庫狀態
該篇紀錄 資料庫狀態 在 DB 上的顯示,文件上以英文為主,但因為安裝中文版,了解資料庫狀態在翻譯上對應,Online 和 Recovering 這兩個狀態不會在 DB 上看見,無法記錄喔
常常把 Recovery (復原) 和 Restore (還原) 混淆,才起心動念紀錄一下
狀態:Offline
狀態:Restoring
狀態:Recovery_Pending
狀態:Suspect