[Windows]SQL Server 2012 over SMB

[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 的服務,因此一些比較不相關的功能在此次我們就先不安裝了。

SQLSMB001

 

安裝好之後我們要在這台電腦上面,利用 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)

SQLSMB003

 

於是我們將原本的本機虛擬帳戶 MSSQLSERVER 換成網域的服務帳號,在我的 Lab 環境之下則是換成 MYLAB\Server2012ESQL$ ,雖然我們建立的時候名稱是 Server2012ESQL,但在使用該帳號的時候由於她不是一個真實的帳號,因此會在帳號之後多加上一個 $ 來做區別,設定好之後就把 SQL Server 重新啟動就可以了。在這裡千萬不要取巧在 Windows 的服務下面去設定,雖然看起來操作的方式類似,但使用組態管理員還會幫你做一些其他的設定,因此從 SQL Server 2008 之後,就不建議您直接利用 Windows 的服務來做更改了。

SQLSMB007

 


 

建立分享目錄

在這個部份我會到 Server2012A 上面,透過共用精靈來設定,跟之前要分享給 Hyper-V 的方式類似,選擇 [SMB共用-應用程式]。

SQLSMB101

設定共用名稱為 SQLData

SQLSMB103

調整權限 [取消繼承],將一些不需要的帳號給移除,並且將前面建立的服務帳號給加入,設定該服務帳號要具有完全控制的權限。

SQLSMB201

 

SQLSMB202

共用的部分也設定將原本的 Everyone 給移除,改成要給 SQL Server 使用的服務帳號,也是設定完全控制。

SQLSMB203

SQLSMB204

SQLSMB205

 


 

建立資料庫

當辛苦完成上述所有的步驟之後,那接下來我們就可以開啟 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]

 


 

參考資料