搜尋本站文章

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

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

效能調教:鎖定記憶體分頁(Lock Pages in Memory, LPIM)

雖然非必要,不過我們建議在使用 64 位元作業系統時在記憶體中鎖定分頁。
對於 32 位元作業系統,您必須先授與 Lock pages in memory(LPIM) 權限,再針對 SQL Server 設定 AWE。

說明:

此安全性設定決定哪些使用者能使用處理程序來保留實體記憶體中的資料,阻止系統將資料分頁到磁碟上的虛擬記憶體。

履行此特殊權限會降低可用的隨機存取記憶體 (RAM) 數量,而對系統效能造成顯著影響。
預設值: 無。



此 Windows 原則 - 鎖定記憶體分頁(Lock Pages in Memory):
決定哪些帳戶可以使用處理序將資料保留在實體記憶體中,以防止系統將資料傳送到磁碟上的虛擬記憶體。

在 SQL Server 2005, 2008, 2008 R2 (32-bit) 版本中,設定 32 位元 SQL Server 執行個體的 [鎖定分頁] 選項時,需要具有 sqlservr.exe 執行權限的帳戶具有 LPIM 使用者權限,而且 'awe_enabled' 組態選項設定為 ON。

若要停用 SQL Server 的 [鎖定記憶體中的分頁] 選項,請移除 SQL Server 啟動帳戶的 [已鎖定記憶體中的分頁] 使用者權限。

-- SQL Server版本與鎖定記憶體分頁





停用鎖定記憶體中的分頁

1. 在 [開始] 功能表上,按一下 [執行]。在 [開啟舊檔] 方塊中,輸入 gpedit.msc。此時會開啟 [群組原則] 對話方塊。

2. 在 [群組原則] 主控台中,依序展開 [電腦設定] 和 [Windows 設定]。

3. 展開 [安全性設定],然後展開 [本機原則]。

4. 選取 [使用者權限指派] 資料夾。這些原則會顯示在詳細資料窗格中。

5.在窗格中按兩下 [鎖定記憶體中的分頁]。

6. 在 [本機安全性原則設定] 對話方塊中,選取具有 sqlservr.exe 執行權限的帳戶,然後按一下 [移除]。

-- 01_鎖定記憶體中的分頁



-- 02_鎖定記憶體中的分頁_本機安全性設定



-- 03_鎖定記憶體中的分頁_解說



-- 04_設定SQL Server服務啟動帳戶具備鎖定記憶體分頁的權利






參考資料

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

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

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

2016-01-29

效能調教:請使用UNION ALL,不用 UNION

以效能觀點,請一律使用 UNION ALL


先讓我們看看UNIONUNION ALL的說明。


UNION ALL
將所有資料列納入結果中。其中包括複本。若未指定,就會移除資料列複本。
UNION
指定組合多個結果集,以及當做單一結果集傳回。會移除資料列複本。

也就是說,若使用UNION,就會額外耗用系統資源,去逐一比對每一筆資料列!

除非,真的需要耗用系統資源去移除重複的資料列,否則就不該使用UNION

請參考以下的SQL陳述式:

--EX1. UNION,移除重複項的資料列
SELECT sid, myDate FROM tblUnion01
UNION
SELECT sid, myDate FROM tblUnion02
GO

--EX2. UNION ALL,不移除重複項的資料列
SELECT sid, myDate FROM tblUnion01
UNION ALL
SELECT sid, myDate FROM tblUnion02
GO


我們分別匯入2千筆、20萬筆資料列來做討論:


以兩千筆資料列為例

SQL陳述式
查詢成本(相對於批次)
實驗筆數
UNION
85%
2,000
UNION ALL
15%
2,000

以二十萬筆資料列為例

SQL陳述式
查詢成本(相對於批次)
實驗筆數
UNION
79%
200,000
UNION ALL
21%
200,000

經由上述的測試結果,使用UNION,就會額外耗用系統資源。
再與UNION ALL比較起來,UNION硬是多耗用4倍的系統資源。

也就是說,如果真的需要耗用系統資源去移除重複的資料列,否則就不該使用 UNION

 分析執行計畫

我們進一步來觀察其所使用的執行計畫:

以兩千筆資料列為例



1:執行計畫--兩千筆資料列

在圖1中,觀察使用UNION陳述式的執行計畫,額外多使用「排序(相異排序)」運算子,光這個運算子就耗用了查詢成本(相對於批次)82%,真是個耗用資源的運算子。


2:「排序(相異排序)」運算子

在圖2中,進一步觀察「排序(相異排序)」運算子,可以看到「估計的CPU成本」是:0.0747874,與「估計的I/O成本」:0.0112613來比較,這是極度耗用CPU資源的運算子,兩者相差七倍。

以二十萬筆資料列為例



3:執行計畫 -- 二十萬筆資料列

在圖3中,觀察使用UNION陳述式的執行計畫,額外多使用了多個運算子,我們以「雜湊比對(彙總)」運算子來討論:

「雜湊比對(彙總)」運算子


4:「雜湊比對(彙總)」運算子

在圖4中,使用「雜湊比對(彙總)」運算子,光這個運算子就耗用了查詢成本(相對於批次)66%,進一步觀察,可以看到這是完全只使用CPU資源的運算子,沒用到任何I/O成本。

結論


以效能觀點,請一律使用 UNION ALL。除非,真的需要耗用系統資源去移除重複的資料列,否則就不該使用UNION




請參考以下的範例程式碼:



-- 建立範例資料表:tblUnion01、tblUnion02,並分別新增20萬筆資料列到其中。
USE tempdb
GO
IF EXISTS(SELECT name FROM sysobjects  WHERE  name = N'tblUnion01' AND type = 'U') 
 DROP TABLE tblUnion01
GO
IF EXISTS(SELECT name FROM sysobjects  WHERE  name = N'tblUnion02' AND type = 'U') 
 DROP TABLE tblUnion02
GO
CREATE TABLE tblUnion01
(sid int,myDate datetime)
GO
CREATE TABLE tblUnion02
(sid int,myDate datetime)
GO
--
SET NOCOUNT ON
GO
DECLARE @CNT INT=1

WHILE @CNT <=200000
BEGIN
 INSERT tblUnion01 VALUES(@CNT, GETDATE());
 INSERT tblUnion02 VALUES(@CNT, GETDATE());

 SET @CNT +=1
END

--
INSERT tblUnion01 VALUES(9999999,GETDATE())

-- 以上是建立資料表






-- 觀察資料表

-- 分別擁有200,000筆資料列
SELECT COUNT(*) FROM tblUnion01; -- 200,001
SELECT COUNT(*) FROM tblUnion02; -- 200,000

--EX1. UNION,移除重複項的資料列
SELECT sid, myDate FROM tblUnion01
UNION
SELECT sid, myDate FROM tblUnion02
GO

--EX2. UNION ALL,不移除重複項的資料列
SELECT sid, myDate FROM tblUnion01
UNION ALL
SELECT sid, myDate FROM tblUnion02
GO




以兩千筆資料列的情境

-- 01_執行計畫_2千筆



-- 02_UNION_成本_0.104821



-- 03_UNION ALL_成本_0.0187726



-- 04_排序_相異排序_成本_0.0860484



以二十萬筆資料列的情境

-- 01_執行計畫_20萬筆



-- 02_UNION_成本_4.96574



-- 03_UNION ALL_1.29249



-- 04_雜湊比對_3.26904



-- 05_平行處理_成本_4.96574





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

2015-12-30

日期時間資料類型:ISNULL函數、IS [NOT] NULL 述詞,對時間值是 NULL 時的處理方式是不同的



SQL Server 的日期時間類型,例如有:datetimeoffset、datetime2、smalldatetime、datetime等。

若輸入資料值時,僅輸入日期值,卻未提供時間值時,系統自動以 1900-01-01 00:00:00.000,午夜零點零分零秒的方式來呈現。

這對 ISNULL函數、IS [NOT] NULL 述詞,在處理這類資料值時,就會有不同的行為。




請參考以下的範例:

USE tempdb
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[atb01]') AND type in (N'U'))
 BEGIN
  DROP TABLE [dbo].[atb01]
  CREATE TABLE [dbo].[atb01](
 [Sid] [int] PRIMARY KEY,
 [Aircode] [varchar](50) NULL,
 [Edate] [datetime] NULL)
 END
ELSE 
BEGIN
 CREATE TABLE [dbo].[atb01](
 [Sid] [int] PRIMARY KEY,
 [Aircode] [varchar](50) NULL,
 [Edate] datetime NULL)
END
GO

-- 新增四筆資料列
INSERT atb01 VALUES(1, 'A201',GETDATE())
INSERT atb01 VALUES(2, 'A202', '1900/01/01') -- 只給日期,未給時間。資料類型:[datetime]。
INSERT atb01(Sid, Aircode) VALUES(3,'A203')
INSERT atb01(Sid, Aircode) VALUES(4,'A204')
GO

-- 00 有 4 筆資料列
/*
已知:第二筆資料列,Edate資料行的資料類型是:[datetime]。
只輸入日期,未給時間。

查詢時,可觀察到,系統自動以 1900-01-01 00:00:00.000,午夜零點零分零秒的方式來呈現。
由於未提供時間值,仍是 NULL。
*/

SELECT Sid, Aircode, Edate FROM atb01



- 01_範例資料表,有4筆資料列







01 使用 ISNULL() 函數,3 筆資料列

-- 01 使用 ISNULL() 函數,3 筆資料列




/*
ISNULL 函數:以指定的取代值來取代 NULL。

使用 ISNULL() 函數,將會抓取到  3 筆資料列,包含:兩筆未提供任何值,以及一筆僅提供日期值的資料列。
*/

SELECT Sid, Aircode, Edate FROM atb01
WHERE ISNULL(Edate,'') = ''


-- 02_使用 ISNULL() 函數,抓到3筆資料列






02 使用 IS NULL 述詞,2 筆資料列



-- 02 使用 IS NULL 述詞,2 筆資料列 
/*

IS [NOT] NULL 述詞:判斷指定的運算式是否為 NULL。
若使用 IS [NOT] NULL 述詞來判斷 Edate 資料行是否為 NULL,將會抓取到 2 筆資料列。
*/

SELECT Sid, Aircode, Edate FROM atb01
WHERE Edate IS NULL



-- 03_IS [NOT] NULL 述詞,抓到2筆資料列






有些專案在設計時,若沒有輸入

1. 若沒有輸入日期時間時,前端程式將自動輸入 1900/01/01。
2. 後續接手的人員,可能改變此規則,改採取不輸入,讓系統存放 NULL 值,這又會是另一套規則。

或許,在某些狀況下, NULL 與 1900/01/01,對於此專案是具相同的意義。
但使用 ISNULL 函數與 IS NULL 述詞,卻是取得不同的結果。

若能修改原始資料值,具備一致的特性,則在 WHERE 條件式就可以精簡許多,也有機會可以使用索引來提升查詢效能。




ISNULL 函數

ISNULL 函數:以指定的取代值來取代 NULL。

語法:
ISNULL ( check_expression , replacement_value )

check_expression
這是要檢查 NULL 的運算式。check_expression 可以是任何類型。

replacement_value
這是 check_expression 是 NULL 時所傳回的運算式。replacement_value 必須是能夠隱含地轉換成 check_expresssion 類型的類型。




IS [NOT] NULL 述詞

判斷指定的運算式是否為 NULL。

語法:
expression IS [ NOT ] NULL

引數

expression
這是任何有效的運算式。

NOT
指定執行布林結果的否定運算。 這個述詞會反轉它的傳回值,如果值不是 NULL,就傳回 TRUE,如果值是 NULL,就傳回 FALSE。

結果類型 Boolean

傳回碼值
如果 expression 的值是 NULL,IS NULL 會傳回 TRUE;否則,它會傳回 FALSE。
如果 expression 的值是 NULL,IS NOT NULL 會傳回 FALSE;否則,它會傳回 TRUE。

備註
若要判斷運算式是否為 NULL,請利用 IS NULL 或 IS NOT NULL 來取代比較運算子 (如 = 或 !=)。
當兩個引數或其中一個引數是 NULL 時,比較運算子會傳回 UNKNOWN。



參考資料

SQL Server:認識 ISNULL 函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-isnull.html

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

資料類型 (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms187752(v=sql.120).aspx

IS [NOT] NULL (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms188795(v=sql.120).aspx

2015-12-24

執行個體的服務啟動帳戶(NT SERVICE\MSSQLSERVER),應該具備「執行磁碟區維護工作(Perform volume maintenance tasks)」安全性原則的權限

示範環境:
1. SQL Server 2014
2. 作業系統:Windows 10 與 Windows Server 2012 R2

以存取磁碟的效能來考量

執行個體的服務啟動帳戶,預設是使用「虛擬帳戶」:NT SERVICE\MSSQLSERVER,應該具備「執行磁碟區維護工作(Perform volume maintenance tasks)」安全性原則的權限。

依據預設值,是沒有具備「執行磁碟區維護工作(Perform volume maintenance tasks)」安全性原則的權限,請參考以下的示範:

建立資料庫:Instant01,資料檔案的初始值大小是:512 MB。

-- 01_建立範例資料庫


-- 02_未具備-執行磁碟區維護工作



建立此資料庫,需要費時:9,869 ms。




若服務啟動帳戶具備「執行磁碟區維護工作(Perform volume maintenance tasks)」安全性原則的權限,請參考以下的範例:

-- 03_已具備-執行磁碟區維護工作



建立資料庫,需要費時:778 ms。



測試結果

9,869 ms(預設值) 比上 778 ms(調整後),兩者差距:9,091 ms。



設定具備「執行磁碟區維護工作(Perform volume maintenance tasks)」安全性原則的權限

-- 04_使用 Local Security Policy



-- 05_設定具備「執行磁碟區維護工作(Perform volume maintenance tasks)」安全性原則的權限



-- 06_檢視_Perform volume maintenance tasks



中文版本

-- 07__使用-本機安全性原則



-- 08_找到多個相符合名稱



-- 09_設定具備-磁碟區維護工作



-- 10_檢視_磁碟區維護工作





立即檔案初始化(Instant File Initialization)

在 SQL Server 2005 及更新的版本中,可將資料檔立即初始化,以便快速執行資料庫或檔案群組的還原作業。

立即檔案初始化會回收使用過的磁碟空間,但不以零填滿該空間。而是在將新資料寫入檔案時,覆寫磁碟內容。

雖然記錄檔初始化仍然需要歸零,不過這項作業可以跟備份的資料傳輸作業平行進行。還原的向前復原步驟則要等到所有資料都已經傳輸而且整個記錄都已經初始化才會啟動。

附註附
立即檔案初始化僅適用於 Microsoft Windows XP、Windows Server 2003 或更新版本的系統。

若要使用立即檔案初始化,您必須在 Windows 帳戶之下執行 MSSQLSERVER 服務帳戶,並指派 Windows SE_MANAGE_VOLUME_NAME 特殊權限給該 Windows 帳戶。

此權限依預設會指定給 Windows Administrators 群組。

若您有系統管理員權限,即可將 Windows 帳戶新增至「執行磁碟區維護工作」安全性原則,藉以指派此權限。



Windows 7 和 Windows Server 2008 R2 中提供的新帳戶類型

Windows 7 和 Windows Server 2008 R2 有兩種新的服務帳戶類型,分別稱為「受管理的服務帳戶」(Managed Service Account,MSA) 和「虛擬帳戶」(Virtual Account)。

受管理的服務帳戶和虛擬帳戶的設計在於提供重要的應用程式 (例如 SQL Server) 並與自己的帳戶隔離,同時不需系統管理員手動管理服務主要名稱 (SPN) 和這些帳戶的認證。

這些帳戶可讓長期管理服務帳戶使用者、密碼和 SPN 的工作更輕鬆。

虛擬帳戶(Virtual Accounts)

Windows Server 2008 R2 和 Windows 7 中的虛擬帳戶是「受管理的本機帳戶」(Managed Local Account),會提供下列功能來簡化服務管理工作。

虛擬帳戶是自動管理的,而且虛擬帳戶可以在網域環境中存取網路。

如果在 Windows Server 2008 R2 或 Windows 7 上安裝 SQL Server 的期間針對服務帳戶使用預設值,則會使用以執行個體名稱做為服務名稱的虛擬帳戶,其格式為 NT SERVICE\。 

以虛擬帳戶執行的服務,會利用電腦帳戶的認證存取網路資源,其格式為 \$。 

指定虛擬帳戶啟動 SQL Server 時,請讓密碼空白。 如果虛擬帳戶無法註冊服務主要名稱 (SPN),請手動註冊 SPN。

注意事項

虛擬帳戶無法用於 SQL Server 容錯移轉叢集執行個體,因為虛擬帳戶在叢集的每一個節點上不會有相同的 SID。



執行磁碟區維護工作(Perform volume maintenance tasks)

此安全性原則設定會決定哪些使用者可以執行磁碟區或磁碟管理工作,例如重組現有的磁碟區、 建立或移除磁碟區,以及執行磁碟清理工具。

指派此使用者權限時請特別小心。
這個使用者權限的使用者可以瀏覽磁碟並擴充匯入包含其他資料的記憶體。

擴充的檔案開啟時,使用者可能可以讀取和修改取得的資料。




參考資料

執行磁碟區維護工作
https://technet.microsoft.com/zh-tw/library/dn221971.aspx

最佳化 SQL Server 中的備份和還原效能
https://technet.microsoft.com/zh-tw/library/ms190954(v=sql.105).aspx

設定 Windows 服務帳戶與權限
https://msdn.microsoft.com/zh-tw/library/ms143504(v=sql.120).aspx

執行磁碟區維護工作
https://technet.microsoft.com/zh-tw/library/dn221971.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

2015-04-16

SQL Server 2014 SP1,暫時先下架...日期:2015/04/16

更新日期:2015/05/14

SQL Server 2014 SP1 重新開放下載

版本:12.0.4100.1
發佈日期:2015/5/14
http://sharedderrick.blogspot.tw/2015/05/sql-server-2014-sp1.html



日期:04/16/2015

確認公告:移除 SQL Server 2014 Service Pack 1 (SP1),等待數周修復後,將重新上架。

公告網頁內,也包含:使用先前有問題的版本,導致升級失敗的解決方式。


--

Important Updates on 4/16:
Dear SQL Customers,
We have chosen to remove SQL Server 2014 Service Pack 1 (SP1) from the Microsoft Download Center due to a significant installation issue discovered shortly after release. We sincerely apologize for the inconvenience this has caused you.
We will fix the installation issue and release the Service Pack for production use in a few weeks. Although operationally equivalent, only the newly released SP1 will be serviced (security updates, cumulative updates, hotfixes). Therefore, it will be important that you replace the current version of SP1 (12.0.4050.0) with the upcoming one.
In the meantime, you can continue to test and use build 12.0.4050.0. If you are experiencing the issue below, please implement the steps described in the workaround section.
We will communicate further as we approach the release date and we appreciate your patience.

Rong Wu
SQL Engineer Team




日期:2015/04/16

暫時先下架...

Notice: 
The SQL SSIS team has found an issue with SP1 installation if SSIS catalog is present in the SQL Server instance.They are currently investigating this issue including possible workarounds and fixes. We have temporarily put the package download on hold and will provide an update with a solution.



SQL Server 2014 Service Pack 1 has released
http://blogs.msdn.com/b/sqlreleaseservices/archive/2015/04/16/sql-server-2014-service-pack-1-has-released.aspx





請注意
受影響的 Microsoft SQL Server 2014年的累積更新 1 問題先前已造成我們從下載伺服器移除這個更新。我們必須立即解決這個問題,並更新一次可供下載。

Notice
An issue that affected Cumulative Update 1 for Microsoft SQL Server 2014 had previously caused us to remove the update from the download server. We have now resolved the issue, and the update is again available for download.




下載 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









2015-04-16 10:21:15.23 spid8s Schema build in SSISDB has been updated to 12.0.4050.0
2015-04-16 10:21:15.37 spid8s Error: 1088, Severity: 16, State: 12.
2015-04-16 10:21:15.37 spid8s Cannot find the object "internal.object_parameters" because it does not exist or you do not have permissions.
2015-04-16 10:21:15.37 spid8s Error: 912, Severity: 21, State: 2.
2015-04-16 10:21:15.37 spid8s Script level upgrade for database 'master' failed because upgrade step 'SSIS_hotfix_install.sql' encountered error 3602, state 251, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.




參考資料

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

SQL Server 2014 Service Pack 1 is now available
http://blogs.technet.com/b/dataplatforminsider/archive/2015/04/15/sql-server-2014-service-pack-1-is-now-available.aspx