[Windows]SQL Server 2012 Hyper-V over SMB
前幾天寫了一篇 Hyper-V 放在 Windows Server 2012 的 File Server 上的文章,收到幾個朋友的詢問相關的問題,其中也有朋友問到那如果是 SQL Server 的時候該怎麼設定 ? 基本上在 MSDN 上也有一篇文章在討論這個部分 「將 SQL Server 與 SMB Fileshare 當做儲存選項一起安裝」,為了怕自己忘記,於是參考之前小弟另外一篇文章上介紹有關於 「Managed Service Accounts」 的文章,把相關環境和設定改成 Windows Server 2012 和 SQL Server 2012 上。
首先介紹我的 Lab 環境,一共有三台主機,其功用和名稱分別是:
- AD : 電腦名稱 ADServer ,網域 mylab.com
- File Server : 電腦名稱 Server2012A
- SQL Server : 電腦名稱 Server2012E
建立受管理的服務帳戶
一般來說在網域內,如果我們要某個服務可以存取網路上的電腦時,則會給予他一個網域的帳號。但從 Windows 2008 開始,提供你另外一個選擇,就是建立一個虛擬帳號,這樣就可以讓這個帳號在網域內具有一個識別身分,但也不像一般帳號擔心被別人一值 Try 帳密後被鎖定,或者是更改密碼之後還要去相關電腦上更改服務啟動的帳號和密碼,管理起來也就輕鬆多了。
在這裡我用剛練習的 PowerShell 指令,在 AD Server 上面來建立帳號
1: PS C:\Users\Administrator> Get-Module -Name Active*
2:
3: ModuleType Name ExportedCommands
4: ---------- ---- ----------------
5: Manifest ActiveDirectory {Set-ADOrganizationalUnit, Get-ADDomainControllerPasswordReplicationPoli...
上述指令是用來檢查 PowerShell 是否有 AD 相關的 Script 模組,如果有的話那麼我們就可以繼續往下進行了。
1: PS C:\Users\Administrator> Import-Module ActiveDirectory
2: PS C:\Users\Administrator> New-ADServiceAccount -Name Server2012ESQL -Enabled $true
3: PS C:\Users\Administrator> Add-ADComputerServiceAccount -Identity Server2012E -ServiceAccount Server2012ESQL
基本上我們在 PowerShell 下面先匯入 ActiveDirectory 模組,以便讓 PowerShell 可以對 AD 進行操作。接著使用 New-ADServiceAccount 的指令來建立一個服務帳號 Server2012ESQL,並且將這個帳號綁定由 Server2012E 來使用。
使用受管理的服務帳戶
既然帳號建立好了,那麼我們就到 Server2012E 上面去安裝 SQL Server,因為我們主要是要測試 SQL Server 的服務,因此一些比較不相關的功能在此次我們就先不安裝了。
安裝好之後我們要在這台電腦上面,利用 PowerShell 指令去設定可以使用在 AD 上所建立的 Server2012ESQL 的帳號
1: PS C:\Users\Administrator.MYLAB> Install-WindowsFeature "RSAT"
2:
3: Success Restart Needed Exit Code Feature Result
4: ------- -------------- --------- --------------
5: True No Success {Active Directory 管理中心, Windows PowerS...
6:
7: PS C:\Users\Administrator.MYLAB> Import-Module ActiveDirectory
8: PS C:\Users\Administrator.MYLAB> Install-ADServiceAccount -Identity Server2012ESQL
這裡因為 Server2012E 並不是 Domain Controller,所以我們先透過指令 Install-WindowsFeature 來安裝 RSAT ( Remote Server Administration Tools ),以便讓 PowerShell 可以支援 AD 的指令。安裝需要一點時間,等安裝完畢之後會可以匯入 ActiveDirectory 的 Module,在 Server2012E 的電腦上指定可以使用 Server2012ESQL 的服務帳號。
接著我們使用 SQL Server 的組態管理員,選擇 SQL Server 服務,在你的 SQL Server 的 Instance 上面 Double Click 兩下做設定,預設的 Instance 應該會是 SQL Server (MSSQLSERVER)
於是我們將原本的本機虛擬帳戶 MSSQLSERVER 換成網域的服務帳號,在我的 Lab 環境之下則是換成 MYLAB\Server2012ESQL$ ,雖然我們建立的時候名稱是 Server2012ESQL,但在使用該帳號的時候由於她不是一個真實的帳號,因此會在帳號之後多加上一個 $ 來做區別,設定好之後就把 SQL Server 重新啟動就可以了。在這裡千萬不要取巧在 Windows 的服務下面去設定,雖然看起來操作的方式類似,但使用組態管理員還會幫你做一些其他的設定,因此從 SQL Server 2008 之後,就不建議您直接利用 Windows 的服務來做更改了。
建立分享目錄
在這個部份我會到 Server2012A 上面,透過共用精靈來設定,跟之前要分享給 Hyper-V 的方式類似,選擇 [SMB共用-應用程式]。
設定共用名稱為 SQLData
調整權限 [取消繼承],將一些不需要的帳號給移除,並且將前面建立的服務帳號給加入,設定該服務帳號要具有完全控制的權限。
共用的部分也設定將原本的 Everyone 給移除,改成要給 SQL Server 使用的服務帳號,也是設定完全控制。
建立資料庫
當辛苦完成上述所有的步驟之後,那接下來我們就可以開啟 SQL Server Management Studio 來做測試囉,我們分別測試是否可以順利建立和刪除資料庫。
-- 建立資料庫 CREATE DATABASE [SMBTest] ON PRIMARY ( NAME = N'SMBTest' , FILENAME = N'\\Server2012A\SQLData\SMBTest.mdf' , SIZE = 5MB) LOG ON ( NAME = N'SMBTest_log', FILENAME = N'\\Server2012A\SQLData\SMBTest.ldf' , SIZE = 1MB) GO
如果上述步驟成功的話,那麼在 SQL Server 下重新整理就可以看到這個新建出來的資料庫 SMBTest 了,接著我們再用類似的指令來測試是否可以順利刪除
-- 刪除資料庫 DROP DATABASE [SMBTest]
參考資料
- MSDN : http://msdn.microsoft.com/zh-tw/library/hh759341.aspx
- Jose Barreto's Blog : http://blogs.technet.com/b/josebda/archive/2012/08/23/windows-server-2012-scale-out-file-server-for-sql-server-2012-step-by-step-installation.aspx