共用和接收來自 Azure SQL Database 和 Azure Synapse Analytics 的資料
適用於:Azure SQL 資料庫 Azure Synapse Analytics (先前稱為 Azure SQL DW) Azure Synapse Analytics (工作區) SQL 集區
Azure Data Share 可讓您安全地將資料快照集從 Azure SQL Database 和 Azure Synapse Analytics 資源共用至其他 Azure 訂用帳戶。 包括您的租用戶以外的 Azure 訂用帳戶。
本文說明從 Azure SQL Database 和 Azure Synapse Analytics 共用資料。
本文將引導您了解:
您可以使用目錄跳到您需要的小節,或繼續依照程序從頭到尾了解本文內容。
提供哪些支援
分享資料
Azure Data Share 支援從 Azure 中的數個 SQL 資源共用完整資料快照集。 這些資源目前不支援增量快照集。
資源類型 | 共用資料表 | 共用檢視 |
---|---|---|
Azure SQL Database | 是 | Yes |
Azure Synapse Analytics (先前稱為 Azure SQL DW) | Yes | Yes |
Synapse Analytics (工作區) 專用的 SQL 集區 | 是 | No |
注意
Azure Data Share 目前不支援從這些資源共用:
- Azure Synapse Analytics (工作區) 無伺服器 SQL 集區
- 已設定「一律加密」的 Azure SQL 資料庫
接收資料
資料取用者可以選擇接受數個 Azure 資源的共用資料:
- Azure Data Lake Storage Gen2
- Azure Blob 儲存體
- Azure SQL Database
- Azure Synapse Analytics
Azure Data Lake Storage Gen 2 或 Azure Blob 儲存體中的共用資料可以儲存為 csv 或 parquet 檔案。 如果已存在,完整資料快照集會覆寫目標檔案的內容。
Azure SQL Database 和 Azure Synapse Analytics 中的共用資料會儲存在資料表中。 如果目標資料表不存在,Azure Data Share 會建立具有來源結構描述的 SQL 資料表。 如果具有相同名稱的目標資料表已經存在,則會以最新的完整快照集置放並覆寫。
注意
對於具有動態資料遮罩的來源 SQL 資料表,資料會顯示在收件者端。
支援的資料類型
當您從 SQL 來源共用資料時,在快照集處理期間,會使用從 SQL Server 資料類型到 Azure Data Share 過渡期資料類型的下列對應。
注意
- 針對對應至 Decimal 過渡期類型的資料類型,快照集目前支援最多 28 個有效位數。 如果您的資料需要大於 28 個有效位數,請考慮轉換成字串。
- 如果您要將資料從 Azure SQL 資料庫共用至 Azure Synapse Analytics,則並非所有資料類型都受支援。 如需詳細資訊,請參閱專用 SQL 集區中的資料表資料類型。
SQL Server 資料類型 | Azure Data Share 過渡期資料類型 |
---|---|
BIGINT | Int64 |
BINARY | Byte[] |
bit | Boolean |
char | String, Char[] |
date | Datetime |
Datetime | Datetime |
datetime2 | Datetime |
Datetimeoffset | DateTimeOffset |
Decimal | Decimal |
FILESTREAM attribute (varbinary(max)) | Byte[] |
Float | Double |
image | Byte[] |
int | Int32 |
money | Decimal |
NCHAR | String, Char[] |
ntext | String, Char[] |
NUMERIC | Decimal |
NVARCHAR | String, Char[] |
real | Single |
rowversion | Byte[] |
smalldatetime | Datetime |
SMALLINT | Int16 |
SMALLMONEY | Decimal |
sql_variant | Object |
text | String, Char[] |
time | TimeSpan |
timestamp | Byte[] |
TINYINT | Int16 |
UNIQUEIDENTIFIER | Guid |
varbinary | Byte[] |
varchar | String, Char[] |
xml | String |
共用資料的必要條件
若要從 Azure SQL 資源共用資料快照集,您必須先準備環境。 您將需要:
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始之前建立免費帳戶。
- Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW),包含您要共用的資料表和檢視。
- Azure Data Share 帳戶。
- 資料收件者的 Azure 登入電子郵件地址 (不可使用電子郵件別名)。
- 如果您的 Azure SQL 資源位於與 Azure Data Share 帳戶不同的 Azure 訂用帳戶中,請在來源 Azure SQL 資源所在的訂用帳戶中註冊 Microsoft.DataShare 資源提供者。
來源特定必要條件
共用也有一個必要條件,視您的資料來源而定。 選取您的資料共用來源,並遵循下列步驟:
- Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW)
- Azure Synapse Analytics (工作區) SQL 集區
從 Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW) 共用的必要條件
您可以使用以下其中一個方法來向 Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW) 進行驗證:
Microsoft Entra 驗證
這些必要條件涵蓋您需要的驗證,讓 Azure Data Share 可以與您的 Azure SQL Database 連線:
- 您需要權限才能寫入 SQL 伺服器上的資料庫:Microsoft.Sql/servers/databases/write。 此權限存在於參與者角色中。
- SQL Server Microsoft Entra 管理員權限。
- SQL Server 防火牆存取:
- 在 Azure 入口網站中,瀏覽至您的 SQL 伺服器。 在左側導覽中選取 [防火牆與虛擬網路]。
- 在 [允許 Azure 服務和資源存取此伺服器] 上,選取 [是]。
- 選取 [+ 新增用戶端 IP]。 用戶端 IP 位址可能會變更,因此您可能需要在下次從入口網站共用資料時再次新增用戶端 IP。
- 選取 [儲存]。
SQL 驗證
您可以遵循逐步示範影片來設定驗證,或完成下列每個必要條件:
寫入 SQL 伺服器上資料庫的權限:Microsoft.Sql/servers/databases/write。 此權限存在於參與者角色中。
Azure Data Share 資源的受控識別用來存取資料庫的權限:
在 Azure 入口網站中瀏覽至 SQL 伺服器,並將您自己設定為 Microsoft Entra 管理員。
使用查詢編輯器或 SQL Server Management Studio 搭配 Microsoft Entra 驗證,連線到 Azure SQL Database/資料倉儲。
執行下列指令碼,將 Data Share 資源受控識別新增為 db_datareader。 使用 Active Directory 連線,而不是使用 SQL Server 驗證。
create user "<share_acct_name>" from external provider; exec sp_addrolemember db_datareader, "<share_acct_name>";
注意
<share_acc_name> 是您 Data Share 資源的名稱。
具有 'db_datareader' 存取權的 Azure SQL Database 使用者,可瀏覽並選取您想共用的資料表或檢視。
SQL Server 防火牆存取:
- 在 Azure 入口網站中,瀏覽到 SQL 伺服器。 在左側導覽中選取 [防火牆與虛擬網路]。
- 在 [允許 Azure 服務和資源存取此伺服器] 上,選取 [是]。
- 選取 [+ 新增用戶端 IP]。 用戶端 IP 位址可能會變更,因此您可能需要在下次從入口網站共用資料時再次新增用戶端 IP。
- 選取 [儲存]。
從 Azure Synapse Analytics (工作區) SQL 集區共用的必要條件
寫入 Synapse 工作區中 SQL 集區的權限:Microsoft.Synapse/workspaces/sqlPools/write。 此權限存在於參與者角色中。
Data Share 資源的受控識別權限用來存取 Synapse 工作區 SQL 集區的權限:
在 Azure 入口網站中,瀏覽至您的 Synapse 工作區。 從左側導覽中選取 [SQL Active Directory 管理員],並將您自己設定為 [Microsoft Entra 管理員]。
開啟 Synapse Studio,從左側導覽中選取 [管理]。 選取 [安全性] 底下的 [存取控制]。 將您自己指派為 [SQL 管理員] 或 [工作區管理員] 角色。
在 Synapse Studio 中,從左側導覽中選取 [開發]。 在 SQL 集區中執行下列指令碼,將 Data Share 資源受控識別新增為 db_datareader。
create user "<share_acct_name>" from external provider; exec sp_addrolemember db_datareader, "<share_acct_name>";
注意
<share_acc_name> 是您 Data Share 資源的名稱。
Synapse 工作區防火牆存取:
- 在 Azure 入口網站中,瀏覽至 Synapse 工作區。 從左側導覽中選取 [防火牆]。
- 在 [允許 Azure 服務與資源能存取此工作區] 上,選取 [開啟]。
- 選取 [+ 新增用戶端 IP]。 用戶端 IP 位址可能會變更,因此您可能需要在下次從入口網站共用資料時再次新增用戶端 IP。
- 選取 [儲存]。
建立共用
瀏覽至 [Data Share 概觀] 頁面。
選取 [開始共用資料]。
選取 建立。
填寫共用的詳細資料。 指定名稱、共用類型、共用內容的說明和使用規定 (選擇性)。
選取 [繼續]。
若要將資料集新增至共用,請選取 [新增資料集]。
選取您想要新增的資料集類型。 根據您在先前的步驟中選取的共用類型 (快照集或就地),有不同的資料集類型清單。
選取您的 SQL 伺服器或 Synapse 工作區。 如果您使用 Microsoft Entra 驗證,且顯示 [允許 Data Share 代表我執行上述 'create user' SQL 指令碼] 核取方塊,請核取此核取方塊。 如果您使用 SQL 驗證,請提供認證,並確定您已遵循必要條件,如此您才能擁有權限。
選取 [下一步] 以瀏覽至您想要共用的物件,然後選取 [新增資料集]。 您可以選取 Azure SQL Database 和 Azure Synapse Analytics (先前稱為 Azure SQL DW) 的資料表和檢視,或 Azure Synapse Analytics (工作區) 專用 SQL 集區的資料表。
在 [收件者] 索引標籤中,藉由選取 [+ 新增收件者] 來輸入資料取用者的電子郵件地址。 電子郵件地址必須是收件者的 Azure 登入電子郵件。
選取 [繼續]。
如果您已選取快照集共用類型,則可以設定快照集排程,將資料的更新提供給資料取用者。
選取開始時間和週期間隔。
選取繼續。
在 [檢閱 + 建立] 索引標籤中,檢閱 [套件內容]、[設定]、[收件者] 及 [同步處理設定]。 選取 建立。
Azure Data Share 現已建立完成,而且 Data Share 的收件者現在可以接受邀請。
接收資料的必要條件
您必須先準備環境,才能接受資料共用邀請。
確認您已完成所有必要條件再接受資料共用邀請:
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- Data Share 邀請: Microsoft Azure 所送來的邀請,主旨標題為「來自 yourdataprovider@domain.com 的 Azure Data Share 邀請」。
- 在您將建立資料共用資源的 Azure 訂用帳戶及目標 Azure 資料存放區所在的 Azure 訂用帳戶中,註冊 Microsoft.DataShare 資源提供者。
- 您需要 Azure 中的資源來儲存共用資料。 您可以使用以下類型的資源:
此外,也會有儲存已接收資料的資源必要條件。 選取您的資源類型,並遵循下列步驟:
- Azure 儲存體必要條件
- Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW) 必要條件
- Azure Synapse Analytics (工作區) SQL 集區必要條件
目標儲存體帳戶的必要條件
如果您選擇將資料接收至 Azure 儲存體,請先完成這些必要條件,再接受資料共用:
- Azure 儲存體帳戶。
- 寫入儲存體帳戶的權限:Microsoft.Storage/storageAccounts/write。 此權限存在於參與者角色中。
- 將 Data Share 資源受控識別的角色指派新增至儲存體帳戶的權限,存在於 Microsoft.Authorization/role assignments/write。 此權限存在於擁有者角色中。
將資料接收到 Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW) 的必要條件
對於您是 SQL Server Microsoft Entra 管理員的 SQL Server,請先完成這些必要條件,再接受資料共用:
- Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW)。
- 寫入 SQL 伺服器上資料庫的權限:Microsoft.Sql/servers/databases/write。 此權限存在於參與者角色中。
- SQL Server 防火牆存取:
- 在 Azure 入口網站中,瀏覽至您的 SQL 伺服器。 在左側導覽中選取 [防火牆與虛擬網路]。
- 在 [允許 Azure 服務和資源存取此伺服器] 上,選取 [是]。
- 選取 [+ 新增用戶端 IP]。 用戶端 IP 位址可能會變更,因此您可能需要在下次從入口網站共用資料時再次新增用戶端 IP。
- 選取 [儲存]。
對於您不是 Microsoft Entra 管理員的 SQL Server,請先完成這些必要條件,再接受資料共用:
您可以遵循逐步示範影片或下列步驟來設定必要條件。
Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW)。
寫入 SQL 伺服器上資料庫的權限:Microsoft.Sql/servers/databases/write。 此權限存在於參與者角色中。
Data Share 資源的受控識別用來存取 Azure SQL Database 或 Azure Synapse Analytics 的權限:
在 Azure 入口網站中瀏覽至 SQL 伺服器,並將您自己設定為 Microsoft Entra 管理員。
使用查詢編輯器或 SQL Server Management Studio 搭配 Microsoft Entra 驗證,連線到 Azure SQL Database/資料倉儲。
執行下列指令碼,將 Data Share 受控識別新增為 'db_datareader, db_datawriter, db_ddladmin'。
create user "<share_acc_name>" from external provider; exec sp_addrolemember db_datareader, "<share_acc_name>"; exec sp_addrolemember db_datawriter, "<share_acc_name>"; exec sp_addrolemember db_ddladmin, "<share_acc_name>";
注意
<share_acc_name> 是您 Data Share 資源的名稱。
SQL Server 防火牆存取:
- 在 Azure 入口網站中,瀏覽至 SQL Server,然後選取 [防火牆和虛擬網路]。
- 在 [允許 Azure 服務和資源存取此伺服器] 上,選取 [是]。
- 選取 [+ 新增用戶端 IP]。 用戶端 IP 位址可能會變更,因此您可能需要在下次從入口網站共用資料時再次新增用戶端 IP。
- 選取 [儲存]。
將資料接收到 Azure Synapse Analytics (工作區) SQL 集區的必要條件
Azure Synapse Analytics (工作區) 專用的 SQL 集區。 目前不支援將資料接收到無伺服器 SQL 集區。
寫入 Synapse 工作區中 SQL 集區的權限:Microsoft.Synapse/workspaces/sqlPools/write。 此權限存在於參與者角色中。
Data Share 資源的受控識別權限用來存取 Synapse 工作區 SQL 集區的權限:
在 Azure 入口網站中,瀏覽至 Synapse 工作區。
從左側導覽中選取 [SQL Active Directory 管理員],並將您自己設定為 Microsoft Entra 管理員。
開啟 Synapse Studio,從左側導覽中選取 [管理]。 選取 [安全性] 底下的 [存取控制]。 將您自己指派為 [SQL 管理員] 或 [工作區管理員] 角色。
在 Synapse Studio 中,從左側導覽中選取 [開發]。 在 SQL 集區中執行下列指令碼,將 Data Share 資源受控識別新增為'db_datareader, db_datawriter, db_ddladmin'。
create user "<share_acc_name>" from external provider; exec sp_addrolemember db_datareader, "<share_acc_name>"; exec sp_addrolemember db_datawriter, "<share_acc_name>"; exec sp_addrolemember db_ddladmin, "<share_acc_name>";
注意
<share_acc_name> 是您 Data Share 資源的名稱。
Synapse 工作區防火牆存取:
- 在 Azure 入口網站中,瀏覽至 Synapse 工作區。 從左側導覽中選取 [防火牆]。
- 在 [允許 Azure 服務與資源能存取此工作區] 上,選取 [開啟]。
- 選取 [+ 新增用戶端 IP]。 用戶端 IP 位址可能會有所變更。 下次從 Azure 入口網站共用 SQL 資料時,可能需要重複執行此程序。
- 選取 [儲存]。
接收共用資料
開啟邀請
您可以從電子郵件或直接從 Azure 入口網站開啟邀請。
若要從電子郵件開啟邀請,請檢查您的收件匣是否有來自您資料提供者的邀請。 邀請會來自 Microsoft Azure,標題為來自 yourdataprovider@domain.com 的 Azure Data Share 邀請。 選取 [檢視邀請] 以查看您在 Azure 中的邀請。
若要直接從 Azure 入口網站開啟邀請,請在Azure 入口網站中搜尋 Data Share 邀請,這樣會帶您前往 Data Share 邀請清單。
如果您是租用戶的來賓使用者,您需要在第一次檢視 Data Share 邀請之前,確認租用戶的電子郵件地址。 驗證之後,您的電子郵件有效期為 12 個月。
然後,選取您想要檢視的共用。
接受邀請
請確定您已檢閱過所有欄位,包括 [使用規定]。 如果您同意使用規定,則必須核取該方塊以表示您同意。
在 [目標 Data Share 帳戶] 底下,選取要作為 Data Share 部署目的地的訂用帳戶和資源群組。
針對 [Data Share 帳戶] 欄位,如果您沒有現有的 Data Share 帳戶,請選取 [新建]。 否則,請選取您想要用來接受資料共用的現有 Data Share 帳戶。
針對 [已收到的共用名稱] 欄位,您可以保留資料提供者所指定的預設值,也可以為已接收的共用指定新名稱。
同意使用規定並指定了管理收到之共用的資料共用帳戶後,請選取 [接受並設定]。 此時會建立共用訂用帳戶。
如果您不想要接受邀請,請選取 [拒絕]。
設定已接收的共用
請遵循下列步驟來設定要接收資料的位置。
選取資料集索引標籤。勾選要指派目的地之資料集旁的方塊。 選取 [+ 對應至目標] 以選擇目標資料存放區。
選取要儲存共用資料的目標資源。 系統將會覆寫目標資料存放區中,具有相同路徑和名稱的任何資料檔案或資料表。 如果您要將資料接收到 SQL 存放區,且顯示 [允許 Data Share 代表我執行上述 'create user' SQL 指令碼] 核取方塊,請核取此核取方塊。 否則,請依照必要條件中的指示,執行出現在畫面上的指令碼。 這會將 Data Share 資源寫入權限授與目標 SQL DB。
對於以快照集為基礎的共用,如果資料提供者已建立快照集排程來定期更新資料,也可以選取 [快照集排程] 索引標籤來啟用快照集排程。勾選快照集排程旁的方塊,然後選取 [+ 啟用]。
注意
第一個排程快照集將會在排程時間的一分鐘內啟動,而下一個快照集將會在排程時間的數秒內啟動。
觸發快照集
這些步驟僅適用於以快照集為基礎的共用。
您可以選取 [觸發程序快照集]及 [詳細資料] 索引標籤以觸發快照集。 在這裡,您可以觸發資料的完整快照集。 如果這是您第一次接收來自資料提供者的資料,請選取 [完整複製]。 快照集執行時,下一個快照集會等到上一個快照集完成後才啟動。
當最後一次執行的狀態為「成功」時,請移至目標資料存放區檢視已接收的資料。 選取 [資料集],然後選取 [目標路徑] 中的連結。
檢視記錄
此步驟僅適用於以快照集為基礎的共用。 若要檢視快照集的記錄,請選取 [歷程記錄] 索引標籤。您會在這裡找到過去 30 天所有產生的快照集歷程記錄。
快照集效能
SQL 快照集效能受到許多因素影響。 您應自行執行效能測試,這是我們一貫的建議。 以下是影響效能的一些範例因素。
- 來源或目的地資料存放區每秒輸入/輸出作業 (IOPS) 和頻寬。
- 來源與目標 SQL 資料存放區的硬體設定 (例如虛擬核心、記憶體、DWU)。
- 並行存取來源和目標資料存放區。 如果要從相同的 SQL 資料存放區共用多個資料表和檢視,或將多個資料表和資料列接收到相同的 SQL 資料存放區,則會影響效能。
- 來源與目的地資料存放區之間的網路頻寬,以及來源與目標資料存放區的位置。
- 共用的資料表和檢視大小。 SQL 快照集共用會執行整個資料表的完整複製。 如果資料表的大小隨著時間成長,快照集需要較長的時間。
對於需要累加式更新的大型資料表,您可以將更新匯出至儲存體帳戶,並使用儲存體帳戶的累加式共用功能來加快效能。
針對快照集失敗進行疑難排解
快照集失敗最常見的原因是 Data Share 沒有來源或目標資料存放區的權限。 若要為 Data Share 授與來源或目標 Azure SQL Database 或 Azure Synapse Analytics (先前稱為 Azure SQL DW) 的權限,您必須在使用 Microsoft Entra 驗證連線到 SQL 資料庫時執行提供的 SQL 指令碼。 若要針對其他 SQL 快照集失敗進行疑難排解,請參閱針對快照集失敗進行疑難排解。
下一步
您已了解如何使用 Azure Data Share 服務來共用和接收 SQL 來源的資料。 若要深入了解從其他資料來源共用,請繼續參閱支援的資料存放區。