- Hyper-V 管理員 => 新增 => 磁碟
星期五, 10月 30, 2015
星期四, 10月 29, 2015
[HyperV] 虛擬交換器
觀看 Windows Server 2012 R2 Hyper-V 深入探索 影片時,老師介紹虛擬交換器時,提到下面圖片是虛擬化化戰士考題,搞懂這題應該就搞懂虛擬交換器,拿來練習
考題,從課程 PowerPoint 中抓出來的
VM 網路卡 IP 設定,練習完要寫筆記時才發現,VM5 的 IP 順序反過來了,^^''
考題,從課程 PowerPoint 中抓出來的
VM 網路卡 IP 設定,練習完要寫筆記時才發現,VM5 的 IP 順序反過來了,^^''
星期二, 10月 27, 2015
[HyperV] 辨別多張網路卡
觀看 Windows Server 2012 R2 Hyper-V 深入探索 影片時,老師提到 VM OS 內多張網路卡時,不要採用網路卡預設值,不容易分辨,VM OS 內的網路卡名稱要清楚明白
紅框內是 VM OS 內網路連線的預設名稱、橘框是 HyperV 管理員內的網路卡,兩者無法對應
在 Hyper-V 管理員下有個 網路功能 Tag,會記載該 VM 上有那些網路卡,重點是有網路卡 Mac 資訊
VM OS 命令提示字元內輸入 ipconfig /all 就可以找出網路卡 Mac 資訊
兩者互相搭配就可以找出 Hyper-V 網路卡和 VM OS 網路卡的對應
更名後,紅框和橘框就一目了然啦
最後要注意多張網卡情況下,Hyper-V 內設定的網路卡順序,並不一定就是 VM OS 內的網路卡順序
紅框內是 VM OS 內網路連線的預設名稱、橘框是 HyperV 管理員內的網路卡,兩者無法對應
在 Hyper-V 管理員下有個 網路功能 Tag,會記載該 VM 上有那些網路卡,重點是有網路卡 Mac 資訊
VM OS 命令提示字元內輸入 ipconfig /all 就可以找出網路卡 Mac 資訊
兩者互相搭配就可以找出 Hyper-V 網路卡和 VM OS 網路卡的對應
更名後,紅框和橘框就一目了然啦
最後要注意多張網卡情況下,Hyper-V 內設定的網路卡順序,並不一定就是 VM OS 內的網路卡順序
星期三, 10月 21, 2015
[SQL] Linked Server 使用資料表值函數
論壇問題
搜尋到這篇文章時 Remote table-valued function calls are not allowed 還想說,2008 的版本應該就不會有這個問題,實際在 2014 上測試,這問題來是存在
利用 Linked Server 呼叫資料表值函數建立一個資料表值函數來測試
CREATE FUNCTION dbo.GetDepartment(@DepartmentID smallint)
RETURNS TABLE
AS
RETURN
(
SELECT
GroupName ,
DepartmentID ,
Name
FROM Adventureworks2014.HumanResources.Department
WHERE DepartmentID = @DepartmentID
)
GO
利用 Linked Server(已事先建立,名稱為 HyperV)四部份名稱來呼叫資料表值函數SELECT * FROM HyperV.Adventureworks2014.dbo.GetDepartment(1)
GO
會得到下面錯誤訊息訊息 4122,層級 16,狀態 1,行 22改利用 OPENQUERY() 來呼叫
不允許遠端資料表值函數呼叫。
SELECT *
FROM OPENQUERY
(
HyperV,
'SELECT * FROM AdventureWorks2014.dbo.GetDepartment(1)'
)
搜尋到這篇文章時 Remote table-valued function calls are not allowed 還想說,2008 的版本應該就不會有這個問題,實際在 2014 上測試,這問題來是存在
- 延伸閱讀
- [SQL] 使用者自訂函數
星期二, 10月 20, 2015
星期三, 10月 14, 2015
[SQL] 警示應用 - 常見硬體錯誤訊息
學習 Alert 時,閱讀網路文章,有人把 823、824 和 825 這三個 Error 列為必設的 Alert,當時只知道是硬體錯誤相關,了解 DBCC CheckDB 和閱讀 王者歸來 SQL Server 2012 實戰指南 ch10 之後,就比較清楚 823、824 產生原因,且 DBCC CheckDB 通常不會是每日執行的檢查項目之一,搭配 Alert 來捕捉較常見的 Error,期望可以在最短的時間內知道資料庫毀損並進行處理
- 建立 Alert
星期二, 10月 13, 2015
[SQL] DBCC CheckDB 發信通知
破壞 DB 後,利用 DBCC CheckDB 來檢查 AdventureWorks2014,發現錯誤就發 mail 通知
在網路上看見有人用 TRY CATCH 來捕捉 DBCC CHECKDB 產生的錯誤,試過發現 TRY CATCH 沒有辦法捕捉,只能用 @@ERROR 來判斷
DBCC CHECKDB('AdventureWorks2014') WITH PHYSICAL_ONLY
IF @@ERROR > 0
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Database Mail Profile' ,
@recipients = '收寄人 Email' ,
@subject = 'SQL Server 通知 - DBCC CheckDB 發現錯誤' ,
@body = 'AdventureWorks2014 資料庫,DBCC CheckDB 發生異常' ,
@body_format='TEXT'
END
收到的 Mail 通知在網路上看見有人用 TRY CATCH 來捕捉 DBCC CHECKDB 產生的錯誤,試過發現 TRY CATCH 沒有辦法捕捉,只能用 @@ERROR 來判斷
星期四, 10月 08, 2015
星期三, 10月 07, 2015
[SQL] 還原參數 Move
在 [SQL] 模擬資料庫毀損 時,常需要把 DB 還原,原本都是用 SSMS 來 Step By Step 進行還原,心血來潮時直接下語法還原就出現下面錯誤
還原 TSQL
還原 TSQL
USER MASTER
GO
RESTORE DATABASE AdventureWorks2014
FROM DISK = N'D:\AdventureWorks2014.bak'
WITH
File = 1 ,
RECOVERY ,
REPLACE ,
STATS = 10
訊息 5133,層級 16,狀態 1,行 3
檔案 "C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014MULTI\MSSQL\DATA\AdventureWorks2014_Data.mdf" 的目錄查閱失敗,有作業系統錯誤 3(系統找不到指定的路徑。)。
訊息 3156,層級 16,狀態 3,行 3
檔案 'AdventureWorks2014_Data' 無法還原到 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014MULTI\MSSQL\DATA\AdventureWorks2014_Data.mdf'。請使用 WITH MOVE 來識別該檔案的有效位置。
訊息 5133,層級 16,狀態 1,行 3
檔案 "C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014MULTI\MSSQL\DATA\AdventureWorks2014_Log.ldf" 的目錄查閱失敗,有作業系統錯誤 3(系統找不到指定的路徑。)。
訊息 3156,層級 16,狀態 3,行 3
檔案 'AdventureWorks2014_Log' 無法還原到 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014MULTI\MSSQL\DATA\AdventureWorks2014_Log.ldf'。請使用 WITH MOVE 來識別該檔案的有效位置。
訊息 3119,層級 16,狀態 1,行 3
計劃 RESTORE 陳述式的時候識別出問題。先前的訊息可提供詳細資料。
訊息 3013,層級 16,狀態 1,行 3
RESTORE DATABASE 正在異常結束。
星期二, 10月 06, 2015
[Win10] Windows 10 上安裝 SQL Server 2005
公司內部 DB 是 SQL Server 2005,習慣在 PC 上安裝最新的 SQL Server Express 版本和 2005 來使用,沒想到實際在 Win10 上安裝,會有相容性問題,畫面如下
在官方文件上查到說 Win10 已經不支援 SQL Server 2005,10 年前產品好像也沒什好意外,而且 2016 支援就要終止了
原本想說那就算了,SQL Server 2014 Express 用一用就好,後來又想到 2005 備份,沒有辦法直接還原到 2008 R2 以上版本,還是必須安裝 2008 R2 來用會比較單純,沒想到安裝 2008 R2,也會出現相容性問題,最後就不管警告,實際安裝 2005 看看,安裝過程一切順利,再戰10 年(誤) ~~
在官方文件上查到說 Win10 已經不支援 SQL Server 2005,10 年前產品好像也沒什好意外,而且 2016 支援就要終止了
原本想說那就算了,SQL Server 2014 Express 用一用就好,後來又想到 2005 備份,沒有辦法直接還原到 2008 R2 以上版本,還是必須安裝 2008 R2 來用會比較單純,沒想到安裝 2008 R2,也會出現相容性問題,最後就不管警告,實際安裝 2005 看看,安裝過程一切順利,再戰10 年(誤) ~~
- 20160512
星期四, 10月 01, 2015
[SQL] 模擬資料庫毀損
要練習 DBCC 資料庫毀損相關議題,第一件事要先學會破壞資料庫,這篇紀錄如何破壞,以 AdventtureWorks2014 HumanResources.Employee 當成破壞目標
PK_Employee_BusinessEntityID,Page 733 為欲破壞 Page,PageType = 1 表示是 Data Page
AK_Employee_LoginID,Page 5133 為欲破壞 Page,PageType = 2 代表是 Index Page
- 查詢 Table 內的 Index_id
SELECT
T.name AS TableName ,
I.name AS IndexName ,
I.index_id ,
I.type ,
I.type_desc
FROM sys.indexes AS I
JOIN sys.tables AS T ON I.object_id = T.object_id
WHERE T.name = 'Employee'
- 查詢 Index 所在 Page
-- SQL Server 2012 之前版本使用
DBCC IND ([AdventureWorks2014], 'HumanResources.Employee', 1)
GO
-- SQL 2012 開始有此 DMF
-- 該語法故意和 DBCC IND 欄位相對應
SELECT
allocated_page_file_id AS PageFID
,allocated_page_page_id AS PagePID
,allocated_page_iam_file_id AS IAMFID
,allocated_page_iam_page_id AS IAMPID
,object_id AS ObjectID
,index_id AS IndexID
,partition_id AS PartitionNumber
,rowset_id AS PartitionID
,allocation_unit_type_desc AS iam_chain_type
,page_type AS PageType
,page_level AS IndexLevel
,next_page_file_id AS NextPageFID
,next_page_page_id AS NextPagePID
,previous_page_file_id AS PrevPageFID
,previous_page_page_id AS PrevPagePID
FROM sys.dm_db_database_page_allocations(DB_ID('AdventureWorks2014'), OBJECT_ID('HumanResources.Employee'), 1 , NULL, 'DETAILED')
WHERE is_allocated = 1;
GO
sys.dm_db_database_page_allocations DMF 第三個參數為 index_id,分別填入 1 (PK_Employee_BusinessEntityID)和 4 (AK_Employee_LoginID),就可以查詢 index 所在 PagePK_Employee_BusinessEntityID,Page 733 為欲破壞 Page,PageType = 1 表示是 Data Page
AK_Employee_LoginID,Page 5133 為欲破壞 Page,PageType = 2 代表是 Index Page