搜尋本站文章

顯示具有 SQL Server 2014 Admin 標籤的文章。 顯示所有文章
顯示具有 SQL Server 2014 Admin 標籤的文章。 顯示所有文章

2017-07-15

[SQL Server] AlwaysOn, Error 41131, failover failed,容錯移轉 失敗

SQL Server AlwaysOn Availability Group 執行容錯移轉時,因故發生失敗,若收到的錯誤代碼是:41131

有可能是 [NT AUTHORITY\SYSTEM] 帳戶的權限不足所導致,可賦予以下權限來解決問題:
  1. Alter Any Availability Group
  2. Connect SQL
  3. View server state
[NT AUTHORITY\SYSTEM]  帳戶是 SQL Server AlwaysOn 「健全狀況」的偵測用帳戶。
若因故權限不足,則將造成:
  • 無法啟動 AlwaysOn 「健全狀況」 
  • 造成 AlwaysOn 可用性群組 無法執行 「容錯移轉(Failover) 」

系統顯示的錯誤訊息是:

訊息 41131,層級 16,狀態 0,行 13
無法讓可用性群組 'AGDBG01' 上線。作業逾時。
請確認本機 Windows Server 容錯移轉叢集 (WSFC) 節點已上線。
然後,確認可用性群組資源存在 WSFC 叢集中。
如果此問題持續發生,您可能需要卸除可用性群組,然後再次建立它。

Msg 41131, Level 16, State 0, Line 2
Failed to bring availability group 'AGDBG01' online.  The operation timed out.
Verify that the local Windows Server Failover Clustering (WSFC) node is online. 
Then verify that the availability group resource exists in the WSFC cluster. 
If the problem persists, you might need to drop the availability group and create it again.

-- 100_Error_41131




-- 101_錯誤訊息_41131



示範版本:
SQL Serve 2012、2014



錯誤
41131 的解決方案:賦予權限

步驟01. 檢查帳戶:[NT AUTHORITY\SYSTEM] 帳戶是否存在。

若不存在,請使用以下語法重建此帳戶

-- 01. 檢查帳戶:NT AUTHORITY\SYSTEM,是否存在。若不存在,請使用以下語法重建此帳戶
-- To create the [NT AUTHORITY\SYSTEM] account

/****** Object:  Login [NT AUTHORITY\SYSTEM] ******/
USE [master]
GO
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'NT AUTHORITY\SYSTEM')
BEGIN
 CREATE LOGIN [NT AUTHORITY\SYSTEM] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
END
GO

-- 01_ 檢查帳戶_NT AUTHORITY_SYSTEM,是否存在



步驟02. 若[NT AUTHORITY\SYSTEM] 帳戶已經存在,查詢其權限

-- 02. 若 [NT AUTHORITY\SYSTEM] 帳戶已經存在,查詢其權限
-- Listing effective permissions of the user
USE [master]
GO
EXECUTE AS LOGIN = N'NT AUTHORITY\SYSTEM';
SELECT 
 permission_name AS [Permission]
FROM fn_my_permissions(NULL, N'SERVER')
ORDER BY permission_name;
REVERT;

-- 02_1_若帳戶 NT AUTHORITY_SYSTEM 已經存在,查詢其權限



只具備兩項權限:
  1. CONNECT SQL
  2. VIEW ANY DATABASE

-- 02_2_缺少ALTER ANY AVAILABILITY GROUP



[NT AUTHORITY\SYSTEM] 帳戶,在 伺服器層級 應該具備的權限有:
  1. Alter Any Availability Group
  2. Connect SQL
  3. View server state

經過比對,缺少 2 項權限,分別是:
  1. Alter Any Availability Group
  2. View server state

步驟03. 授予 [NT AUTHORITY\SYSTEM] 帳戶必要的權限

-- 03_授予 [NT AUTHORITY\SYSTEM] 帳戶必要的權限
-- To grant the permissions to the [NT AUTHORITY\SYSTEM] account
use [master]
GO
GRANT ALTER ANY AVAILABILITY GROUP TO [NT AUTHORITY\SYSTEM]
GO
GRANT CONNECT SQL TO [NT AUTHORITY\SYSTEM]
GO
GRANT VIEW SERVER STATE TO [NT AUTHORITY\SYSTEM]
GO 

-- 03_授予 [NT AUTHORITY_SYSTEM] 帳戶必要的權限



步驟04. 再度查詢  NT AUTHORITY\SYSTEM 帳戶的權限

-- 04. 再度查詢  NT AUTHORITY\SYSTEM 帳戶的權限
-- Listing effective permissions of the user
USE [master]
GO
EXECUTE AS LOGIN = N'NT AUTHORITY\SYSTEM';
SELECT 
 permission_name AS [Permission]
FROM fn_my_permissions(NULL, N'SERVER')
ORDER BY permission_name;
REVERT;

-- 04_1再度查詢  NT AUTHORITY_SYSTEM 帳戶的權限



-- 04_2_SSMS_已經擁有ALTER ANY AVAILABILITY GROUP





經過比對後,權限已調整為


權限增加為
  1. ALTER ANY AVAILABILITY GROUP
  2. CONNECT SQL
  3. CREATE AVAILABILITY GROUP
  4. VIEW ANY DATABASE
  5. VIEW SERVER STATE
既有權限
  1. CONNECT SQL
  2. VIEW ANY DATABASE
先前賦予的權限
  1. ALTER ANY AVAILABILITY GROUP
  2. VIEW SERVER STATE
系統自動多給一個權限
  1. CREATE AVAILABILITY GROUP




[NT AUTHORITY\SYSTEM]  帳戶 的功能

是 SQL Server AlwaysOn 「健全狀況」的偵測用帳戶。
若因故權限不足,則無法啟動 AlwaysOn 「健全狀況」 ,也將造成 AlwaysOn 可用性群組 無法執行 「容錯移轉(Failover) 」

The [NT AUTHORITY\SYSTEM] account is used by SQL Server AlwaysOn health detection to connect to the SQL Server computer and to monitor health.

When you create an availability group, health detection is initiated when the primary replica in the availability group comes online.
If the [NT AUTHORITY\SYSTEM] account does not exist or does not have sufficient permissions, health detection cannot be initiated, and the availability group cannot come online during the creation process.

Make sure that these permissions exist on each SQL Server computer that could host the primary replica of the availability group.

Note The Resource Host Monitor Service process (RHS.exe) that hosts SQL Resource.dll can be run only under a System account.

The SQL Server Database Engine resource DLL connects to the instance of SQL Server that is hosting the primary replica by using ODBC in order to monitor health.

The logon credentials that are used for this connection are the local SQL Server NT AUTHORITY\SYSTEM login account.
By default, this local login account is granted the following permissions:
Alter Any Availability Group
Connect SQL
View server state

If the NT AUTHORITY\SYSTEM login account lacks any of these permissions on the automatic failover partner (the secondary replica), then SQL Server cannot start health detection when an automatic failover occurs.

Therefore, the secondary replica cannot transition to the primary role.



參考訊息

Cannot create a high-availability group in Microsoft SQL Server 2012
https://support.microsoft.com/en-us/help/2847723/cannot-create-a-high-availability-group-in-microsoft-sql-server-2012

sys.fn_my_permissions (Transact-SQL)
https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-my-permissions-transact-sql

2016-02-04

效能調教:鎖定記憶體分頁(Lock Pages in Memory, LPIM) - 檢查是否有啟用此 Windows 原則

若要檢查是否有啟用 鎖定記憶體分頁(Lock Pages in Memory, LPIM)

請參考以下的方式:

(1) DBCC MEMORYSTATUS

-- 01_未啟用_鎖定記憶體分頁_DBCC MEMORYSTATUS



-- 02_已啟用_鎖定記憶體分頁_DBCC MEMORYSTATUS



(2) SQL Server error log

-- 03_未啟用_鎖定記憶體分頁_SQL Server error log



在 SQL Server error log 顯示:


Using conventional memory in the memory manager.


-- 04_已啟用_鎖定記憶體分頁_SQL Server error log



在 SQL Server error log 顯示:

Using locked pages in the memory manager


(3) T-SQL 陳述式 - sys.dm_os_memory_nodes

select osn.node_id, osn.memory_node_id, osn.node_state_desc, omn.locked_page_allocations_kb
from sys.dm_os_memory_nodes omn inner join sys.dm_os_nodes osn 
on (omn.memory_node_id = osn.memory_node_id)
where osn.node_state_desc <> 'ONLINE DAC'


-- 05_未啟用_鎖定記憶體分頁_sys.dm_os_memory_nodes


-- 06_已啟用_鎖定記憶體分頁_sys.dm_os_memory_nodes





請參考以下方式來啟用 鎖定記憶體分頁(Lock Pages in Memory, LPIM):

效能調教:鎖定記憶體分頁(Lock Pages in Memory, LPIM)
http://sharedderrick.blogspot.tw/2016/02/lock-pages-in-memory-lpim.html



參考資料

How to enable the "locked pages" feature in SQL Server 2012
https://support.microsoft.com/en-us/kb/2659143

Clarification about the two LPIM upgrade rules that did not FAIL
https://blogs.msdn.microsoft.com/psssql/2012/04/30/clarification-about-the-two-lpim-upgrade-rules-that-did-not-fail/

FIX: Locked page allocations are enabled without any warning after you upgrade to SQL Server 2012
https://support.microsoft.com/en-us/kb/2708594

效能調教:鎖定記憶體分頁(Lock Pages in Memory, LPIM)
http://sharedderrick.blogspot.tw/2016/02/lock-pages-in-memory-lpim.html

伺服器記憶體伺服器組態選項
https://msdn.microsoft.com/zh-tw/library/ms178067(v=sql.120).aspx

針對 4 GB 以上的實體記憶體啟用記憶體支援
https://technet.microsoft.com/zh-tw/library/ms179301(v=sql.105).aspx

如何使用 DBCC MEMORYSTATUS 命令,來監視 SQL Server 2005 上的記憶體使用量
https://support.microsoft.com/zh-tw/kb/907877

INF: 使用 DBCC MEMORYSTATUS 」 來監視 SQL Server 記憶體使用量
https://support.microsoft.com/zh-tw/kb/271624

sys.dm_os_memory_nodes (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/bb510622(v=sql.120).aspx

2015-12-22

Windows 8, Windows 10 需自行新增「SQL Server 組態管理員」


適用環境:

  1. 作業系統:Windows 8, Windows 8.1, Windows 10
  2. SQL Server 版本:SQL Server 2012、SQL Server 2014 

由於 SQL Server 組態管理員是 Microsoft Management Console 程式的內嵌式管理單元,而不是獨立的程式,因此 SQL Server 組態管理員不會在執行 Windows 8 時做為應用程式出現。

若要開啟 SQL Server 組態管理員,在 [搜尋] 快速鍵的 [應用程式] 下,輸入 SQLServerManager12.msc (適用 SQL Server 2014)、SQLServerManager11.msc (適用 SQL Server 2012) 或 SQLServerManager10.msc (適用 SQL Server 2008),然後按 Enter 鍵。

  • SQL Server 2014 版本,輸入:SQLServerManager12.msc
  • SQL Server 2012 版本,輸入:SQLServerManager11.msc


預設的檔案位置是:

C:\Windows\System32\SQLServerManager12.msc

可以將其釘選到開始畫面。









SQL Server 組態管理員

SQL Server 組態管理員是一個工具,用來管理 SQL Server 的相關服務、設定 SQL Server 所用的網路通訊協定,以及管理 SQL Server 用戶端電腦的網路連接組態。

SQL Server 組態管理員是一個 Microsoft Management Console 嵌入式管理單元,您可以從 [開始] 功能表存取它,也可以將它加入任何其他 Microsoft Management Console 顯示畫面中。

Microsoft Management Console (mmc.exe) 會利用 Windows System32 資料夾中的 SQLServerManager10.msc 檔來開啟 SQL Server 組態管理員。

SQL Server 組態管理員和 SQL Server Management Studio 利用 Window Management Instrumentation (WMI) 來檢視和變更部份伺服器設定。

WMI 提供統一的方式來協助您連結管理 SQL Server 工具所要求之登錄作業的 API 呼叫,在 SQL Server 組態管理員嵌入式管理單元元件的所選 SQL 服務上,它提供了增強的控制和操作功能。



參考資料

SQL Server 組態管理員
https://msdn.microsoft.com/zh-tw/library/ms174212(v=sql.120).aspx

2015-05-19

SQL Server 2014 SP1 重新開放下載

版本:12.0.4100.1
發佈日期:2015/5/14

Microsoft SQL Server 2014 Service Pack 為累計更新,可將所有 SQL Server 2014 版本與服務層級升級為 SP1。
此 Service Pack 包含 SQL Server 2014 RTM Cumulative Update 5 (CU5) 及其之前的更新。

-- 01_SQL Server 2014 SP1 下載網頁




-- 02_SQL Server Blog 官方部落格,公布






在完成安裝的建置作業後,檢查相關的資訊:

檢視相關的版本資訊:


-- 查詢相關的版本資料
SELECT RIGHT(LEFT(@@VERSION,25),4) N'產品版本編號' , 
 SERVERPROPERTY('ProductVersion') N'版本編號',
 SERVERPROPERTY('ProductLevel') N'版本層級',
 SERVERPROPERTY('Edition') N'執行個體產品版本',
 DATABASEPROPERTYEX('master','Version') N'資料庫的內部版本號碼'
--
SELECT @@VERSION N'相關的版本編號、處理器架構、建置日期和作業系統'
GO

-- 03_查詢相關的版本資料



-- 04_伺服器屬性_一般



-- 05_SSMS_版本編號






下載 SQL Server 2014 SP1
http://www.microsoft.com/zh-TW/download/details.aspx?id=46694

SQL Server 2014 SP1 download page
http://go.microsoft.com/fwlink/?LinkID=519065




參考資料

SQL Server 2014 SP1,暫時先下架...日期:2015/04/16
http://sharedderrick.blogspot.tw/2015/04/sql-server-2014-sp120150416.html

SQL Server 2014年累積更新 1
https://support.microsoft.com/zh-tw/kb/2931693/zh-tw

2014-12-24

下載 Adventure Works 2014 Sample Databases


網站:Adventure Works 2014 Sample Databases
https://msftdbprodsamples.codeplex.com/releases/view/125550

直接下載檔案:Adventure Works 2014 Full Database Backup.zip
https://msftdbprodsamples.codeplex.com/downloads/get/880661

-- 01_SQL Server Database Product Samples


-- 02_Adventure Works 2014 Sample Databases


-- 03_AdventureWorks2014_資料庫屬性


-- 04_AdventureWorksDW2014_資料庫屬性





參考網址:

Adventure Works 2014 Sample Databases
https://msftdbprodsamples.codeplex.com/releases/view/125550

SQL Server Database Product Samples
http://msftdbprodsamples.codeplex.com/

Microsoft SQL Server Community Projects & Samples
http://sqlserversamples.codeplex.com/

AdventureWorks 與 Northwind 資料表的比較
http://technet.microsoft.com/zh-tw/library/ms124680(v=sql.100).aspx

Visual Studio 2013 如何:安裝範例資料庫
http://msdn.microsoft.com/zh-tw/library/8b6y4c7s.aspx

下載 Northwind 和 pubs 範例資料庫
http://sharedderrick.blogspot.tw/2012/03/northwind-pubs.html

下載與安裝 SQL Server 2012 範例程式,以 Adventure Works 資料庫為例
http://sharedderrick.blogspot.tw/2012/03/sql-server-2012-adventure-works.html

SQL Server 2008 R2 版本的資料庫,無法在 SQL Server 2008 版本上使用;Error 948 The database 'xxx' cannot be opened because it is version 661. This server supports version 655 and earlier. A downgrade path is not supported.
http://sharedderrick.blogspot.tw/2010/10/sql-server-2008-r2-sql-server-2008.html

2014-07-30

下載與安裝 SQL Server 2014 RTM 中文版本

SQL Server 2014 RTM 中文版本

發行日期:2014/4/1
版本編號:12.0.2000.8

在完成安裝的建置作業後,檢查相關的資訊:

檢視相關的版本資訊:


-- 查詢相關的版本資料
SELECT RIGHT(LEFT(@@VERSION,25),4) N'產品版本編號' , 
 SERVERPROPERTY('ProductVersion') N'版本編號',
 SERVERPROPERTY('ProductLevel') N'版本層級',
 SERVERPROPERTY('Edition') N'執行個體產品版本',
 DATABASEPROPERTYEX('master','Version') N'資料庫的內部版本號碼'
--
SELECT @@VERSION N'相關的版本編號、處理器架構、建置日期和作業系統'
GO



-- 查詢相關的版本資料




-- SSMS_版本編號



-- SSMS_連接視窗





安裝抓圖如下

201407_安裝 SQL Server 2014 RTM 中文版本






參考網址:
下載評估版:
Microsoft SQL Server 2014
http://technet.microsoft.com/zh-tw/evalcenter/dn205290

影片:下載與安裝 SQL Server 2012 RTM 中文版本
http://sharedderrick.blogspot.tw/2012/03/sql-server-2012-rtm.html