搜尋本站文章

2017-03-10

[MySQL]:查詢資料庫的存放路徑 datadir

若要查詢 MySQL 資料庫的資料存放路徑,可以使用以下的方式:



示範環境

  • MySQL Community Server 5.7.17
  • Windows Server 2016

預設的資料目錄:
C:\ProgramData\MySQL\MySQL Server 5.7\Data




-- 使用 @@datadir


SELECT @@datadir;







-- 使用 show variables

show variables where variable_name LIKE '%dir';






檢視 my.ini檔案的內容





預設 my.ini 的檔案路徑是:
"C:\ProgramData\MySQL\MySQL Server 5.7\my.ini"







參考資料

5.4.2 mysql_install_db — Initialize MySQL Data Directory
https://dev.mysql.com/doc/refman/5.7/en/mysql-install-db.html#option_mysql_install_db_datadir

Table 4.1 Option Files Read on Windows Systems
https://dev.mysql.com/doc/refman/5.6/en/option-files.html

2017-03-07

[SQL Server]:啟用「讀取認可快照(READ_COMMITTED_SNAPSHOT)」


關聯式資料庫為了確保資料一致性,使用:交易與鎖定等機制來處理。
若是為了:

  1. 防止交易讀到尚未認可的資料修改 (中途讀取)。
  2. 將鎖定爭用的情況降到最低。

在SQL Server 2005中提供了:

  1. 「讀取認可快照(READ_COMMITTED_SNAPSHOT)」
  2. 「快照集隔離(SNAPSHOT isolation)」


若要啟用「讀取認可快照(READ_COMMITTED_SNAPSHOT)」,可以使用以下的方式:

  • SSMS管理工具:指定資料庫的屬性
  • T-SQL 陳述式:ALTER DATABASE...SET READ_COMMITTED_SNAPSHOT ON




-- 01_SSMS_啟用讀取認可快照





T-SQL 陳述式:ALTER DATABASE...SET READ_COMMITTED_SNAPSHOT ON

啟用「讀取認可快照(READ_COMMITTED_SNAPSHOT)」


-- 01_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態
SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態',
 snapshot_isolation_state_desc N'快照集隔離交易狀態的描述',
 is_read_committed_snapshot_on N'啟用讀取認可快照'
FROM sys.databases
ORDER BY 4 DESC
GO

-- 02_啟用特定資料庫的「讀取認可快照」
USE master
GO
ALTER DATABASE DB01
    SET READ_COMMITTED_SNAPSHOT ON
 WITH ROLLBACK IMMEDIATE;
GO

-- 03_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態
SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態',
 snapshot_isolation_state_desc N'快照集隔離交易狀態的描述',
 is_read_committed_snapshot_on N'啟用讀取認可快照'
FROM sys.databases
ORDER BY 4 DESC
GO

-- 04_關閉:特定資料庫的「讀取認可快照」
USE master
GO
ALTER DATABASE DB01
    SET READ_COMMITTED_SNAPSHOT OFF
 WITH ROLLBACK IMMEDIATE;
GO

-- 05_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態
SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態',
 snapshot_isolation_state_desc N'快照集隔離交易狀態的描述',
 is_read_committed_snapshot_on N'啟用讀取認可快照'
FROM sys.databases
ORDER BY 4 DESC
GO




-- 21_TSQL_查詢_讀取認可快照


-- 22_啟用特定資料庫的「讀取認可快照」


-- 23_TSQL_查詢_讀取認可快照






參考資料

在「資料庫鏡像」上,啟用「讀取認可快照(Read Committed Snapshot)」。遭遇錯誤:訊息 1468,層級 16,狀態 4,因為它牽涉到資料庫鏡像工作階段(because it is involved in a database mirroring session)。
http://sharedderrick.blogspot.tw/2010/05/read-committed-snapshot-1468-16.html

Database Engine 中的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms189122.aspx

Database Engine 中資料列版本控制式的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms179599.aspx

啟用資料列版本控制式的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms175095.aspx

How to Enable RCSI for a Database with Database Mirroring
http://blogs.msdn.com/sqlcat/archive/2010/03/16/how-to-enable-rcsi-for-a-database-with-database-mirroring.aspx

SQL Server 中的快照集隔離
https://msdn.microsoft.com/zh-tw/library/tcbchxcb(v=vs.110).aspx

選擇以資料列版本控制為基礎的隔離等級
https://technet.microsoft.com/zh-tw/library/ms188277(v=sql.90).aspx

2017-03-04

[SQL Server]:壓力測試工具 OSTRESS


OSTRESS:可以對 SQL Server 做壓力測試的工具,這是以 ODBC 為基礎的多重執行緒的查詢工具。


  • 可以設定平行執行給定 T-SQL 陳述式的執行緒數目,以及指定此執行緒上應該執行陳述式的次數。
  • OSTRESS 會加快執行緒的速度,並平行執行所有執行緒上的陳述式。
  • 所有執行緒完成執行之後,OSTRESS 會報告所有執行緒完成執行所花費的時間。


這是 Microsoft SQL Server support team 內部所使用的公用程式。

請謹慎使用。





使用 OSTRESS

點選「RML Cmd Prompt」命令提示字元視窗。



範例:

(1) 直接執行指定的 T-SQL 陳述式。

使用參數 Q



ostress.exe -Q"Select @@VERSION"


若未指定結果的輸出目錄,將會放置到該使用者帳戶的預設TEMP資料夾內,例如:C:\Users\Administrator\AppData\Local\Temp\output。


(2) 重複執行指定的 T-SQL 陳述式 100 次。

使用參數:r

ostress.exe –Q"SELECT @@VERSION" -r100


(3) 開啟 50 條並行連接,也就是 50 條執行緒(threads),並且重複執行 100 次。

使用參數:n 、 r。執行完成後,會關閉連線。

ostress.exe –Q"SELECT @@VERSION" -n50 –r100


(4) 開啟 50 條並行連接,也就是 50 條執行緒(threads),重複執行 20 次,並且採取安靜模式,抑制所有查詢輸出。

使用參數:q 、 n 、 r。執行完成後,會關閉連線。

ostress.exe –Q"SELECT @@VERSION" -n50 –r20 -q


(5) 直接執行指定的 T-SQL 陳述式,將結果輸出到c:\temp。

使用參數:o。測試後,使用者權限足夠,系統會自動建立資料夾。

ostress.exe -Q"SELECT @@VERSION" –oc:\temp





OSTRESS 參數說明

提醒事項,有區分大小寫。

-S:要連接之 MicrosoftSQL Server 執行個體的名稱
-E:使用 Windows 驗證進行連接 (預設值),如果使用 SQL Server 驗證,請分別使用 -U 和 -P 選項來指定使用者名稱和密碼

-d:資料庫的名稱
-Q:要執行的 T-SQL 陳述式

-n:處理每個輸入檔案/查詢的連接數目
-r:每個連接執行每個輸入檔案/查詢的反覆運算次數

-q:安靜模式;抑制所有查詢輸出


-- OSTRESS 可用參數






請參考以下的安裝抓圖

示範環境:
作業系統:SQL Server 2016。

抓圖歷程:下載與安裝 RML(Replay Markup Language) 公用程式
https://goo.gl/photos/gpq8ENxACvMY1nQk7



OSTRESS 是由 Microsoft CSS SQL Server 支援小組所開發的命令列工具。
此工具可用來平行執行查詢或執行預存程序。

您可以設定平行執行給定 T-SQL 陳述式的執行緒數目,以及指定此執行緒上應該執行陳述式的次數,ostress 會加快執行緒的速度,並平行執行所有執行緒上的陳述式。
所有執行緒完成執行之後,ostress 會報告所有執行緒完成執行所花費的時間。

安裝 OSTRESS
OSTRESS 會當做 RML 公用程式的一部分來安裝,您無法獨立安裝 OSTRESS。

[SQL Server]:下載與安裝 RML(Replay Markup Language) 公用程式
http://sharedderrick.blogspot.tw/2017/03/sql-server-rmlreplay-markup-language.html



參考資料

記憶體內部 OLTP 的範例資料庫
https://msdn.microsoft.com/zh-tw/library/mt465764.aspx

Cumulative Update 2 to the RML Utilities for Microsoft SQL Server Released
https://blogs.msdn.microsoft.com/psssql/2013/10/29/cumulative-update-2-to-the-rml-utilities-for-microsoft-sql-server-released/

安裝 RML 公用程式和 ostress
https://github.com/Azure/azure-content-zhtw/blob/master/articles/sql-database/sql-database-in-memory.md

Description of the Replay Markup Language (RML) Utilities for SQL Server
https://support.microsoft.com/zh-tw/help/944837/description-of-the-replay-markup-language-rml-utilities-for-sql-server

Download RML Utilities for SQL Server (x64) CU4
https://www.microsoft.com/en-us/download/details.aspx?id=4511

SQL Server Stress Testing
http://www.sqlconsulting.com/news1103.htm

[SQL Server]:下載與安裝 RML(Replay Markup Language) 公用程式
http://sharedderrick.blogspot.tw/2017/03/sql-server-rmlreplay-markup-language.html

2017-03-03

[SQL Server]:下載與安裝 RML(Replay Markup Language) 公用程式

RML(Replay Markup Language) 公用程式,是 Microsoft SQL Server support team 內部所使用的公用程式。

具備幾項功能,例如:可以用來分析 SQL Trace 檔案,產生報表分析、對伺服器作壓力測試等功能。

支援的 SQL Server 版本:
SQL Server 2005、2008、2008 R2、2012、2014。
筆者的測試環境是:SQL Server 2016,亦可安裝與執行。

支援的作業系統:
Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2
筆者的測試環境是:Windows Server Server 2016,亦可安裝與執行。

包含以下的公用程式:

  1. ReadTrace
  2. Reporter
  3. OStress
  4. OStress Replay Control Agent (ORCA)






下載與安裝 RML(Replay Markup Language) 公用程式
https://support.microsoft.com/zh-tw/help/944837/description-of-the-replay-markup-language-rml-utilities-for-sql-server

請參考以下的安裝抓圖

示範環境:
作業系統:Windows Server 2016 Datacenter。

抓圖歷程

下載與安裝 RML(Replay Markup Language) 公用程式
https://goo.gl/photos/4bZTnR41PXf5QNpv9



RML 公用程式,將需要使用到 Microsoft Report Viewer 2008 Redistributable(SP1或更高版本)

Microsoft Report Viewer 2008 SP1 Redistributable - 繁體中文
https://www.microsoft.com/zh-TW/download/details.aspx?id=3841



介紹

Microsoft SQL Server支持團隊使用多個內部寫入的實用程序來簡化與典型客戶支持案例相關的工作。

本文介紹一個實用程序套件,稱為Microsoft SQL Server的重放標記語言(RML)實用程序。

數據庫開發人員和系統管理員可以使用RML Utilities for SQL Server與SQL Server 2000,SQL Server 2005,SQL Server 2008,SQL Server 2008 R2,SQL Server 2012和SQL Server 2014 CTP2配合使用。


更多信息

您可以使用RML實用程序進行SQL Server執行以下任務:

(1)您可以確定應用程序,數據庫,SQL Server登錄名或使用最多資源的查詢。

(2)可以確定在捕獲批處理的跟踪時是否更改了批處理的執行計劃。

此外,您可以使用RML Utilities for SQL Server來確定SQL Server如何執行每個執行計劃。

您可以確定運行速度比以前慢的查詢。

捕獲SQL Server實例的跟踪後,可以使用RML實用程序為SQL Server重新生成跟踪SQL Server的另一個實例的跟踪文件。

如果還在重放期間捕獲跟踪,則可以使用RML實用程序SQL Server將新跟踪文件與原始跟踪文件進行比較。

您可以使用此技術來測試應用更改後SQL Server的行為。

例如,您可以使用此技術來測試SQL Server在執行以下操作後的行為:

(1)安裝SQL Server服務包。
(2)安裝SQL Server修補程序。
(3)更新存儲過程或函數。
(4)更新索引或創建索引。




參考資料

Download RML Utilities for SQL Server (x64) CU4
https://www.microsoft.com/en-us/download/details.aspx?id=4511

Description of the Replay Markup Language (RML) Utilities for SQL Server
https://support.microsoft.com/zh-tw/help/944837/description-of-the-replay-markup-language-rml-utilities-for-sql-server

示範記憶體中 OLTP 的 AdventureWorks 延伸模組
https://msdn.microsoft.com/zh-tw/library/dn511655(v=sql.120).aspx

Cumulative Update 2 to the RML Utilities for Microsoft SQL Server Released
https://blogs.msdn.microsoft.com/psssql/2013/10/29/cumulative-update-2-to-the-rml-utilities-for-microsoft-sql-server-released/

可以用來進行 SQL Server 壓力測試 (Stress Testing) 和效能分析的兩個支援公用程式
https://support.microsoft.com/zh-tw/help/887057/description-of-the-sql-server-performance-analysis-utilities-read80trace-and-ostress

Microsoft Report Viewer 2008 SP1 Redistributable - 繁體中文
https://www.microsoft.com/zh-TW/download/details.aspx?id=3841

2017-02-17

[SQL Server]:UPDATE 或 DELETE 陳述式,請勿使用 NOLOCK、READUNCOMMITTED


WITH (NOLOCK)、READUNCOMMITTED 是允許「中途讀取(Dirty Read)」。
這或許減少了「封鎖(Blocked Lock)」,但卻有許多副作用必須面對,將在後續文章討論此議題。

今 SQL Server,已經在 INSERT、UPDATE、DELETE 或 MERGE 陳述式上,禁止使用 NOLOCK、READUNCOMMITTED。

在 SQL Server 線上說明,先前已說明:
  • SQL Server 查詢最佳化工具會忽略套用在 UPDATE 或 DELETE 陳述式目標資料表的 FROM 子句中的 READUNCOMMITTED 和 NOLOCK 提示。
  • 請避免在新的開發工作中使用此內容中的這些提示,並規劃修改目前在使用這些提示的應用程式。




示範環境
SQL Server 2016 SP1 Enterprise Edition

範例程式碼



USE Northwind
GO
SELECT * FROM Products
GO

UPDATE Products WITH (NOLOCK)
SET UnitsInStock=99
WHERE ProductID=1


錯誤訊息:

訊息 1065,層級 15,狀態 1,行 22
NOLOCK 與 READUNCOMMITTED 鎖定提示不允許用在 INSERT、UPDATE、DELETE 或 MERGE 陳述式的目標資料表。


-- 01_不允許使用NOLOCK 與 READUNCOMMITTED 鎖定提示






NOLOCK、READUNCOMMITTED

是指定允許中途讀取。 不會發出任何共用鎖定來防止其他交易修改目前交易所讀取的資料,其他交易所設定的獨佔鎖定也不會封鎖目前交易,使它無法讀取鎖定的資料。
允許中途讀取可以提高並行程度,但代價是所讀取的資料修改後來會被其他交易回復。

這可能會使您的交易發生錯誤、為使用者提供永遠不被認可的資料,或是讓使用者看到記錄兩次 (或是根本看不到)。

READUNCOMMITTED 和 NOLOCK 提示只適用於資料鎖定。
所有的查詢 (包括具有 READUNCOMMITTED 和 NOLOCK 提示的查詢),都會在編譯和執行期間取得 Sch-S (結構描述穩定性) 鎖定。

因此,當並行交易在資料表上保有 Sch-M (結構描述修改) 鎖定時,查詢將會遭到封鎖。
例如,資料定義語言 (DDL) 作業會在修改資料表的結構描述資訊之前先取得 Sch-M 鎖定。

任何並行查詢,包括以 READUNCOMMITTED 或 NOLOCK 提示執行的查詢,會在嘗試取得 Sch-S 鎖定時遭到封鎖。
相反地,保有 Sch-S 鎖定的查詢將會封鎖嘗試取得 Sch-M 鎖定的並行交易。

無法針對插入、更新或刪除作業修改的資料表指定 READUNCOMMITTED 和 NOLOCK。
SQL Server 查詢最佳化工具會忽略套用在 UPDATE 或 DELETE 陳述式目標資料表的 FROM 子句中的 READUNCOMMITTED 和 NOLOCK 提示。

注意
SQL Server 的未來版本將移除套用到 UPDATE 或 DELETE 陳述式目標資料表的 FROM 子句中 READUNCOMMITTED 和 NOLOCK 提示的使用支援。
請避免在新的開發工作中使用此內容中的這些提示,並規劃修改目前在使用這些提示的應用程式。

-- 02_BOL_資料表提示_移除 NOLOCK 或 READUNCOMMITTED



-- 03_BOL_資料表提示_移除 NOLOCK 或 READUNCOMMITTED







參考資料

SQL Server 2016 中已被取代的 Database Engine 功能
https://msdn.microsoft.com/zh-tw/library/ms143729.aspx

資料表提示 (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms187373.aspx

答客問:WITH (NOLOCK) 與 unlock 的差異?
http://sharedderrick.blogspot.tw/2011/08/with-nolock-unlock.html

Bad habits : Putting NOLOCK everywhere
https://blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere/

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms173763.aspx


[MySQL]:使用CONNECTION_ID() 查詢目前連線的連線識別碼

每一條客戶端的連線,系統都會配置一個專屬的「連線識別碼(Connection ID)」,或稱「執行緒識別碼(thread ID)」來識別。

可以使用以下的方式來查詢:


SELECT CONNECTION_ID();


-- 01_MySQL Workbench_Connection_ID



02_MySQL Workbench_Connection_ID



03_MySQL命令列_Connection_ID







注意事項

在 MySQL Workbench中,點選「New Query Tab」或工具列上「Create a New SQL tab for executing queries」的,都是在同一條連線上。

在撰寫Transaction交易程式時,要留意此事。

-- 04_New Query Tab



05_工具列_New Query Tab





參考資料

MySQL Information Functions
https://dev.mysql.com/doc/refman/5.7/en/information-functions.html

23.17 The INFORMATION_SCHEMA PROCESSLIST Table
https://dev.mysql.com/doc/refman/5.7/en/processlist-table.html

14.7.5.29 SHOW PROCESSLIST Syntax
https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html

24.10.16.3 The threads Table
https://dev.mysql.com/doc/refman/5.7/en/threads-table.html

2017-02-15

[SQL Server]:Latch 與 Lock 的差異


「Latch(閂鎖)」

Latch 是SQL Server 內部儲存引擎的物件,用來同步處理資源,例如:記憶體的資料頁面、資料檔案的資料頁面等。

例如:
在記憶體緩衝區集區(Buffer)裡的資料頁面與磁碟上的資料檔案之資料頁面,需要作互動同步時,為了確保不會有多個使用者同時讀取/寫入記憶體的資料頁面。

SQL Server採取與處理資料表相同的機制,對記憶體中的資料頁面,實施加鎖的機制,藉此同步多個使用者的平行處理。
這個加鎖的機制,SQL Server採取的是 使用「Latch(閂鎖)」。
  • 資料庫管理師、程式設計師,不能控制「Latch」。


「Latch(閂鎖)」與「Lock(鎖定)」相同的是,都會出現「封鎖(Blocking)」。


「Lock(鎖定)」

是用來同步處理使用者物件,例如:資料表、資料列、索引等。

例如:
在開發並行交易程式時,設定要使用交易隔離層級(transaction isolation level),或是使用資料表的「鎖定提示(Locking Hints)」,來設計各種鎖定模式來鎖定目標資源。
  • 資料庫管理師、程式設計師,可以自行控制「Lock」。




在進行 SQL Server 效能調教時,可以利用 DMV sys.dm_os_wait_stats 得知執行緒因故所遇到的所有等候(Wait)之相關資訊。

利用此份彙總檢視來診斷 SQL Server 的效能問題,以及特定查詢和批次的效能問題。


-- sys.dm_os_wait_stats 得知執行緒因故所遇到的所有等候(Wait)之相關資訊。
-- 利用此份彙總檢視來診斷 SQL Server 的效能問題,以及特定查詢和批次的效能問題。

SELECT * FROM sys.dm_os_wait_stats; 

-- 01_sys.dm_os_wait_stats_彙總檢視來診斷 SQL Server 的效能問題,以及特定查詢和批次的效能問題



PAGEIOLATCH_DT
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是終結模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_EX
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是獨佔模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_KP
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是保留模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_NL
僅供參考之用。不支援。我們無法保證未來的相容性。
PAGEIOLATCH_SH
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是共用模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_UP
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是更新模式。如果等候時間很長,表示磁碟子系統有問題。
PAGELATCH_DT
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是終結模式。
PAGELATCH_EX
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是獨佔模式。
PAGELATCH_KP
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是保留模式。
PAGELATCH_NL
僅供參考之用。不支援。我們無法保證未來的相容性。
PAGELATCH_SH
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是共用模式。
PAGELATCH_UP
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是更新模式。




參考資料

什么是PAGELATCH和PAGEIOLATCH
https://blogs.msdn.microsoft.com/apgcdsd/2011/11/28/pagelatchpageiolatch/

SQL Server 的 Latches 物件
https://msdn.microsoft.com/zh-tw/library/ms177421.aspx

Explanation of SQL Server IO and Latches
https://www.mssqltips.com/sqlservertip/3088/explanation-of-sql-server-io-and-latches/

SQL SERVER – What is the Difference Between Latches and Locks
https://blog.sqlauthority.com/2014/03/16/sql-server-what-is-the-difference-between-latches-and-locks/

Welcome To TechBrothersIT: SQL SERVER DBA INTERVIEW QUESTIONS
http://www.techbrothersit.com/search/label/SQL%20SERVER%20DBA%20INTERVIEW%20QUESTIONS

Latch , lock , pin -- 差異
http://blog.itpub.net/35489/viewspace-664252

sys.dm_os_wait_stats (Transact-SQL)
https://technet.microsoft.com/zh-tw/library/ms179984(v=sql.105).aspx

以動態管理物件觀察 SQL Server(2)─找到最耗資源的執行計畫
http://www.runpc.com.tw/content/content.aspx?id=108039

王者歸來:SQL SERVER 2012實戰指南
http://www.books.com.tw/products/0010637404

在超過 64 個 CPU 之電腦上執行 SQL Server 的最佳作法
https://technet.microsoft.com/library/ee210547(sql.105).aspx

2017-02-12

[SQL Server 複寫]:產生「快照集(Snapshot)」期間,不會產生「共用鎖定(share locks)」


在「快照式複寫/交易式複寫」於建立「快照集(Snapshot)」期間,將設置「共用鎖定(share locks)」於發行集內所有資料表,其目的是避免去更新正在發行中的資料表。

若要避開「共用鎖定(share locks)」所造成的影響,可以使用幾個方式:


  • 「並行快照集處理(Concurrent Snapshot Processing)」、「資料庫快照集(database snapshot)」。
  • 調整複寫預存程序 sp_addpublication 的 @sync_method參數來達成:concurrent、database snapshot


(1)「並行快照集處理(Concurrent Snapshot Processing)」


  • 使用「並行快照集處理(Concurrent Snapshot Processing)」(此為交易式複寫的預設行為)。
  • 在建立整個快照集期間,不會產生「共用鎖定(share locks)」,這可以讓使用者在複寫於建立與初始化快照集期間,不受到影響繼續作業。
  • 產生所有資料表的原生模式大量複製程式輸出,但在快照集期間,不鎖定資料表。
  • 只支援交易式發行集使用這個項目。 不支援 Oracle 發行者使用這個值。


(2)使用「資料庫快照集(database snapshot)」


  • 從資料庫快照集產生所有資料表的原生模式大量複製程式輸出。
  • SQL Server 2005 Enterprise版本,開始支援資料庫快照,並非每一個版本都可以使用。
  • SQL Server 2016 SP1 Enterprise、Standard、Web、Express with Advanced Services、Express等版本,開始支援。






示範環境
SQL Server 2016 SP1 Enterprise Edition

(1)「快照式複寫」的發行集,sp_addpublication 的 @sync_method參數,預設使用:native

-- 31_快照式複寫_發行集_Native



使用 SQL Trace 觀察「DatabaseName」

  • Application Name:Snapshot BCP thread #3 for publication Pubs_Tran
  • DatabaseName: pubs



-- 32_Trace_快照式複寫_發行集_Native



-- 33_Trace_快照式複寫_發行集_Native


-- 34_系統檢視表_快照式複寫_發行集_Native






(2)「交易式複寫」的發行集,sp_addpublication 的 @sync_method參數,預設使用:concurrent

-- 41_交易式複寫_發行集_concurrent



-- 42_交易式複寫_發行集_database snapshot




使用 SQL Trace 觀察「DatabaseName」

  • ApplicationName:Snapshot BCP thread #3 for publication NW_Snapshot
  • DatabaseName: Replicatin Snapshot - NW_Snapshot - Northwind


-- 43_交易式複寫_發行集_database snapshot



-- 44_系統檢視表_交易式複寫_發行集_database snapshot






參數說明





錯誤訊息

訊息 14100,層級 16,狀態 1,行 142
當使用並行的快照集處理來訂閱發行集時,請指定所有的發行項。





參考資料

異動複寫
https://msdn.microsoft.com/zh-tw/library/ms151176.aspx

交易式複寫的運作方式
https://technet.microsoft.com/zh-tw/library/ms151706(v=sql.105).aspx

sp_addpublication (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms188738(v=sql.105).aspx

SQL Server 2012 版本支援的功能
https://msdn.microsoft.com/zh-tw/library/cc645993(v=sql.110).aspx

Transactional FAQs
http://www.replicationanswers.com/transactional.asp

sp_changepublication (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms188413.aspx

sp_addsubscription
https://msdn.microsoft.com/zh-tw/library/ms181702.aspx

Does Transactional Replication Include Structural Changes Made to a Database
http://www.sql-server-performance.com/2015/transactional-replication-replicates-the-structural-changes/

Adding Article in Existing Tranactional Replication -- Step by Step
http://ansqldba.blogspot.tw/2012/02/adding-new-article-to-existing.html

Specify all articles when subscribing to a publication using concurrent snapshot processing.
https://blogs.msdn.microsoft.com/repltalk/2012/04/04/specify-all-articles-when-subscribing-to-a-publication-using-concurrent-snapshot-processing/

SQL Server Transacational Replication Issue while adding a new article
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4e57cc76-8ed4-4b27-b5f0-35b60a239b2d/sql-server-transacational-replication-issue-while-adding-a-new-article?forum=sqlreplication

Replication – Snapshot is not getting generated
https://learnsqlteam.com/2016/05/26/replication-snapshot-issue/

資料庫快照集 (SQL Server)
https://msdn.microsoft.com/zh-tw/library/ms175158.aspx

How to use ‘database snapshot’ sync_mode while creating a new Tran/snapshot publication using sp_addpublication
https://blogs.msdn.microsoft.com/mangeshd/2008/05/30/how-to-use-database-snapshot-sync_mode-while-creating-a-new-transnapshot-publication-using-sp_addpublication/

資料庫快照集 (Database Snapshot) 壞了、損毀,對於原本資料庫的影響?
http://sharedderrick.blogspot.tw/2008/09/database-snapshot.html

2017-02-10

安裝 SQL Server 2016 with SP1



版本資訊:SQL Server 2016 (SP1-GDR) (KB3207512) – 13.0.4199.0 (X64)

SQL Server 2016 的圖型介面工具:SSMS、SSDT,需要額外下載安裝。

(1)SSMS(SQL Server Management Studio)

免費下載的圖形工具,可以加以利用來存取、設定、管理及開發 SQL Server 的所有元件。
SSMS 利用許多豐富的指令碼編輯器來合併一群非常廣泛的圖形工具,使所有技術層級的開發人員及管理員都能夠存取。

SSMS 2016 16.5.3:安裝與檢查有無更新 

(2)SSDT(SQL Server Data Tools)

免費下載的新式開發工具,可用來建置 SQL Server 關聯式資料庫、Azure SQL Database、Integration Services 封裝、Analysis Services 資料模型以及 Reporting Services 報表。

安裝 SSDT 2016,版本:14.0.61021.0 




版本資訊

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

版本資訊
說明
產品版本編號
2016
版本編號
13.0.4199.0
版本層級
SP1
執行個體產品版本
Enterprise Edition(64-bit)
資料庫的內部版本號碼
852

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

SQL Server 2016 (SP1-GDR) (KB3207512) – 13.0.4199.0 (X64)




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



 -- 03_SSMS_版本編號






請參考以下的安裝抓圖

示範環境:
作業系統:Windows Server 2016 Datacenter 版本。

更新日期:October 26, 2016
版本:14.0.61021.0

抓圖歷程

安裝 SQL Server 2016 with SP1





參考資料

SQL Server 評估版
https://www.microsoft.com/zh-tw/evalcenter/evaluate-sql-server-2016

SQL Server 2016 版本資訊
https://msdn.microsoft.com/zh-tw/library/dn876712(v=sql.130).aspx

SQL Server 2016 Service Pack 1 release information
https://support.microsoft.com/en-us/help/3182545/sql-server-2016-service-pack-1-release-information

Update Center for Microsoft SQL Server
https://msdn.microsoft.com/library/ff803383.aspx

安裝 SQL Server 2016 RTM 中文版本
http://sharedderrick.blogspot.tw/2016/11/sql-server-2016-rtm.html

2017-02-09

MySQL Workbench主要功能展示

請參考以下的安裝抓圖

示範環境:

  • MySQL Community Server 5.7.17
  • MySQL Workbench


MySQL Workbench主要功能展示
















參考資料

使用MySQL Workbench工具連線MySQL執行個體
http://sharedderrick.blogspot.tw/2017/02/mysql-workbenchmysql.html

安裝 MySQL Community Server 5.7.17
http://sharedderrick.blogspot.tw/2017/02/mysql-community-server-5717.html

使用MySQL Workbench工具,建立帳戶、設定權限
http://sharedderrick.blogspot.tw/2017/02/mysql-workbench.html

個別下載與安裝MySQL Workbench
http://sharedderrick.blogspot.tw/2017/02/mysql-workbench_9.html

個別下載與安裝MySQL Workbench


以Microsoft Windows作業系統環境為例,若要安裝MySQL Workbench,請事先安裝好:








請參考以下的安裝抓圖

示範環境:
作業系統:Windows Server 2016 Datacenter

個別下載與安裝MySQL Workbench



參考資料

Download MySQL Workbench
https://dev.mysql.com/downloads/workbench/

Visual C++ Redistributable Packages for Visual Studio 2013
https://www.microsoft.com/en-us/download/details.aspx?id=40784

Microsoft .NET Framework 4 Client Profile (Web Installer)
http://www.microsoft.com/download/en/details.aspx?id=17113

使用MySQL Workbench工具連線MySQL執行個體
http://sharedderrick.blogspot.tw/2017/02/mysql-workbenchmysql.html

安裝 MySQL Community Server 5.7.17
http://sharedderrick.blogspot.tw/2017/02/mysql-community-server-5717.html

使用MySQL Workbench工具,建立帳戶、設定權限
http://sharedderrick.blogspot.tw/2017/02/mysql-workbench.html

2017-02-07

使用MySQL Workbench工具,建立帳戶、設定權限


帳戶的密碼組態

可依據不同的需求層面來設定:

(1)若為開發人員用的個人帳戶,密碼可採取使用者自行保管機制。
若因故有無法登入,可採取重置密碼方式來解決問題。
設定「Expire Password」方式,讓開發人員於第一次登入系統時,強制設定新的密碼。

(2)若為應用程式使用的帳戶,其密碼需管制,將交由特定管理人員保管與組態。



實作練習:使用MySQL Workbench工具,建立帳戶、設定權限

示範環境:

  • MySQL Community Server 5.7.17
  • MySQL Workbench

任務:
  • 一、建立帳戶
  • 二、設定下次登入必須修改密碼
  • 三、設定權限




任務一:建立帳戶

步驟01:執行MySQL Workbench,使用管理者身分,登入到指定的MySQL執行個體。

步驟02:在左邊Navigator窗格,點選「Users and Privileges」。



步驟03:在「Users and Privileges」窗格,點選下方的「Add Account」。



步驟04:在「Login」頁籤,輸入以下參數:
「Login Name」:輸入新的帳戶名稱,例如:adm_user1。
「Authentication Tpye」:使用預設的Standard。

「Limit to Host Matching」:使用預設的「%」,這表示可以接受任何一台主機發出的連線。
「Password」:輸入該帳戶的密碼,長度應在8個字元以上,包含大小寫、數字以及標點符號,例如:AbcD123#。

「Confirm Password」:再度輸入AbcD123#。



步驟05:點選左下角的「Apply」,完成此帳戶的建立。



任務二:設定下次登入必須修改密碼

步驟01:在MySQL Workbench管理工具,點選先前所建立的帳戶:adm_user1。

步驟02:在該帳戶的「Login」頁籤,點選「Expire Password」按鈕。
可以觀察到系統提示說:密碼已經到期,使用者必須要更換密碼來使用此帳戶。






任務三:設定權限

步驟01:點選該帳戶的「Administrative Role」頁籤,觀察到可以設定的角色與權限。




步驟02:若要能夠管理此MySQL執行個體,在「Role」,可勾選:DBA,將自動加入到全部的角色,必具備執行全部工作的權限。


步驟03:點選「Apple」,套用此設定。



任務四:使用此帳戶登入MySQL執行個體,並執行SQL陳述式

步驟01:執行MySQL Workbench圖形介面工具。

步驟02:在MySQL Workbench工作區域,在「MySQL Connection」區域,點選 + 符號,建立新的執行個體連線。

步驟03:在「Setup New Connection」視窗,輸入以下參數:
「Connection Name」:輸入自訂的連線名稱,例如:cnn01_adm。
「Connection Method」:使用預設的Standard(TCP/IP)。

在「Parameters」頁籤,輸入以下參數:
「Hostname」:使用預設的127.0.0.1。

「Port」:使用預設的3306。
「Username」:使用預設的adm_user1。

點選「OK」,完成「Setup New Connection」此視窗的設定。



步驟04:在MySQL Workbench工作區域,可以看到先前所設定的執行個體連線資訊:cnn01_adm。

步驟05:在MySQL Workbench工作區域,點選先前所設定的執行個體連線資訊:cnn01_adm,點選「Connect」。



步驟06:在「Connect to MySQL Server」視窗,輸入以下參數:
「Password」:輸入帳戶adm_user1的密碼,例如:AbcD123#。
點選「OK」,完成設定。

由於先前已設此帳戶的密碼已到期,必須更改。

步驟07:在「Password Expired」視窗,輸入以下參數:
「Old Password」:輸入此帳戶原先的密碼,例如:AbcD123#。
「New Password」:輸入要變更的新密碼,例如:AbcD456#。

「Confirm」:再度輸入要變更的新密碼作為確認,例如:AbcD456#。
點選「OK」,完成此視窗的設定。





步驟08:在「Connect to MySQL Server」視窗,,輸入以下參數:
「Password」:輸入變更後的新密碼,例如:AbcD456#。



勾選「Save password in vault」。
點選「OK」,完成此視窗的設定。

步驟09:進入SQL Development的Visual SQL Editor工作區域,輸入以下SQL陳述式。


 
SELECT user(); 




步驟03:按下Ctrl+Enter,或黃色閃電狀的圖示,來執行上述SQL陳述式。

觀察執行結果,輸出為:adm_user1@localhost。




請參考以下的安裝抓圖

示範環境:

  • MySQL Community Server 5.7.17
  • MySQL Workbench


使用MySQL Workbench工具,建立帳戶、設定權限



參考資料

使用MySQL Workbench工具連線MySQL執行個體
http://sharedderrick.blogspot.tw/2017/02/mysql-workbenchmysql.html

安裝 MySQL Community Server 5.7.17
http://sharedderrick.blogspot.tw/2017/02/mysql-community-server-5717.html