搭配 Always On 可用性群組使用 FILESTREAM 和 FileTable

適用於:SQL Server - 僅限 Windows

此主題包含如何在 SQL Server 中使用具有 Always On 可用性群組的 FILESTREAM 與 FileTable 功能資訊。

支援所有 FILESTREAM 功能。 在容錯移轉之後,可讀取的次要複本以及新的主要複本上的 FILESTREAM 資料皆可供存取。

僅部分支援 FileTable 功能。 在容錯移轉之後,主要複本上的 FileTable 資料可供存取,但卻無法存取位在可讀取之次要複本上的 FileTable 資料。

必要條件

使用虛擬網路名稱 (VNN) 進行 FILESTREAM 和 FileTable 存取

當您在 SQL Server 執行個體上啟用 FILESTREAM 時,就會建立執行個體層級共用,以便讓您存取 FILESTREAM 資料。 您可以依照下列格式使用電腦名稱來存取這個共用:

  • \\<computer_name>\<filestream_share_name>

不過,在 AlwaysOn 可用性群組中,電腦名稱是使用虛擬網路名稱 (VNN) 來虛擬化。 當電腦是可用性群組中的主要複本,而且可用性群組中的資料庫包含 FILESTREAM 資料時,系統也會建立 VNN 範圍的共用,讓您存取 FILESTREAM 資料。 這並不會影響 FILESTREAM 資料的 Transact-SQL 存取。 不過,使用檔案系統 API 的應用程式必須使用 VNN 範圍的共用,其路徑採用下列格式:

  • \\<VNN>\<filestream_share_name>

發生下列其中一個事件時,系統就會建立這個 VNN 範圍的共用。

  • 您將包含 FILESTREAM 資料的資料庫加入至主要複本上的 AlwaysOn 可用性群組。 在此情況中, \\<computer_name>\<filestream_share_name> 共用已經存在。 系統會建立 \\<VNN>\<filestream_share_name> 共用。

  • 您在具有可用性群組的主要複本上啟用 FILESTREAM 進行檔案 i/o 資料流存取。 系統會建立下列共用:

    1. \\<computer_name>\<filestream_share_name>.
    2. \\<VNN1>\<filestream_share_name> (可用性群組 1)。
    3. \\<VNN2>\<filestream_share_name> (可用性群組 2)。

這些 VNN 範圍的共用也會傳播至所有次要複本。

當包含 FILESTREAM 或 FileTable 資料的資料庫屬於 AlwaysOn 可用性群組時:

  • FILESTREAM 和 FileTable 函數會接受或傳回虛擬網路名稱 (VNN) 而非電腦名稱。 如需有關這些函式的詳細資訊,請參閱 Filestream 和 FileTable 函式 (Transact-SQL)

  • 透過檔案系統 API 對 FILESTREAM 或 FileTable 資料進行的所有存取都應該使用 VNN 而非電腦名稱。

當資料庫屬於可用性群組的一部分時,如果您的應用程式嘗試依照 \\<computer_name>\<filestream_share_name> 格式使用電腦名稱來存取共用,就會引發錯誤。

當資料庫不屬於可用性群組的一部分時,如果您的應用程式嘗試使用 VNN 範圍的路徑來存取共用,則要求可能會成功。 在此情況中,虛擬網路名稱會解析成電腦名稱。 不過,強烈建議您不要使用這種方式,因為如果可用性群組已卸除,VNN 範圍的路徑將會停止運作。