此頁面會顯示支持的驗證方法和用戶端,並顯示您可以使用Service Connector 將應用程式連線到 Microsoft Fabric 中的 SQL 資料庫範例程式代碼。 此頁面也顯示您在建立服務連線時取得的預設環境變數名稱和值。
支援的計算服務
Service Connector 可用來將下列計算服務連線至 Fabric 中的 SQL 資料庫:
- Azure App Service
- Azure 容器應用服務
- Azure Functions(Microsoft 雲端服務)
- Azure Kubernetes Service (AKS)
支援的驗證類型和用戶端類型
下表顯示使用 Service Connector 將計算服務連線到 Fabric 中的 SQL 資料庫時,支持驗證方法和客戶端的組合。 「是」表示支持組合,而「否」則表示不支援。
| 用戶端類型 |
系統指派的管理身份識別 |
使用者指派的受管理的身分識別 |
祕密/連接字串 |
服務主體 |
| 。NET |
是的 |
是的 |
否 |
否 |
| 走吧 |
是的 |
是的 |
否 |
否 |
| 爪哇島 |
是的 |
是的 |
否 |
否 |
| Java - Spring 引導 |
是的 |
是的 |
否 |
否 |
| Python(程式語言) |
是的 |
是的 |
否 |
否 |
| 沒有 |
是的 |
是的 |
否 |
否 |
下表指出,根據網狀架構行為,只允許透過受控識別進行驗證。
.NET、Java、Java - Spring Boot、Python、Go 和 None 用戶端類型都支持系統指派的受控識別和使用者指派的受控識別方法。 這些方法不適用於任何其他類型。
預設環境變數名稱或應用程式屬性和範例程式碼
請參閱下列索引標籤中顯示的連線詳細數據和範例程式代碼,以將計算服務連線到 Fabric 中的 SQL 資料庫。 如需命名慣例的詳細資訊,請參閱 Service Connector 內部文章 。
備註
雖然 Fabric 中的 SQL Database 與 Azure SQL Database 不同,但您可以使用與 Azure SQL Database 相同的方式,在 Fabric 中聯機及查詢 SQL 資料庫。
深入瞭解。
系統指派的管理身份識別
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
Data Source=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Initial Catalog=<SQL-DB-name>-<Fabric-DB-Identifier>;Authentication=ActiveDirectoryManagedIdentity |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
Driver={ODBC Driver 17 for SQL Server};Server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Database=<SQL-DB-name>-<Fabric-DB-Identifier>;Authentication=ActiveDirectoryMSI; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com;port=1433;database=<SQL-DB-name>-<Fabric-DB-Identifier>;fedauth=ActiveDirectoryManagedIdentity; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com;port=1433;database=<SQL-DB-name>-<Fabric-DB-Identifier>;fedauth=ActiveDirectoryManagedIdentity; |
範例程式碼
以下概述使用系統指派的受控識別連線到 Fabric 中的 SQL 資料庫的步驟和代碼段。
安裝依賴項目。
dotnet add package Microsoft.Data.SqlClient
從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("FABRIC_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
如需詳細資訊,請參閱 使用 Active Directory 受控識別驗證。
在 pom.xml 檔案中新增下列相依性:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre11</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.7.0</version>
</dependency>
從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
public class Main {
public static void main(String[] args) {
// FABRIC_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI;"
String connectionString = System.getenv("FABRIC_SQL_CONNECTIONSTRING");
SQLServerDataSource ds = new SQLServerDataSource();
ds.setURL(connectionString);
try (Connection connection = ds.getConnection()) {
System.out.println("Connected successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
如需詳細資訊,請參閱 使用受控識別從 App Service 連線到 Azure 資料庫,無需使用機密資訊。
如果是 Spring 應用程式,如果您建立具有 選項--client-type springboot的連線,Service Connector 會將具有值格式FABRIC_SQL_CONNECTIONSTRING的環境變數jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI;設定為 Azure Spring Apps。
針對使用者指派的受控識別, 會新增 msiClientId=<msiClientId>; 。
更新您的應用程式,請遵循教學課程移轉 Java 應用程式以搭配 Azure SQL Database 使用無密碼連線。 如果先前已設定 spring.datasource.password 組態屬性,請記得移除它並新增正確的相依性。
spring:
datasource:
url: ${FABRIC_SQL_CONNECTIONSTRING}
安裝依賴項目。
python -m pip install pyodbc
從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。 如果您使用 Azure Container Apps 作為計算服務,或代碼段中的連接字串無法運作,請參閱 移轉 Python 應用程式以使用 Azure SQL Database 的無密碼連線 ,以使用無密碼認證連線到 Microsoft Fabric 中的 SQL 資料庫。
Authentication=ActiveDirectoryMSI; 在使用受控身份進行連線時,必須在連接字串中包含。
UID=<msiClientId> 使用使用者指派的受控識別進行連線時,連接字串中也需要 。
import os
import pyodbc, struct
from azure.identity import DefaultAzureCredential
connStr = os.getenv('FABRIC_SQL_CONNECTIONSTRING')
# System-assigned managed identity connection string format
# `Driver={ODBC Driver 17 for SQL Server};Server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Database=<SQL-DB-name>-<Fabric-DB-Identifier>;Authentication=ActiveDirectoryMSI;`
# User-assigned managed identity connection string format
# `Driver={ODBC Driver 17 for SQL Server};Server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Database=<SQL-DB-name>-<Fabric-DB-Identifier>;UID=<msiClientId>;Authentication=ActiveDirectoryMSI;`
conn = pyodbc.connect(connString)
- 安裝依賴項目。
go mod init <YourProjectName>
go mod tidy
- 從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。
package main
import (
"github.com/microsoft/go-mssqldb/azuread"
"database/sql"
"context"
"log"
"fmt"
"os"
)
var db *sql.DB
var connectionString = os.Getenv("FABRIC_SQL_CONNECTIONSTRING")
func main() {
var err error
// Create connection pool
db, err = sql.Open(azuread.DriverName, connectionString)
if err != nil {
log.Fatal("Error creating connection pool: ", err.Error())
}
ctx := context.Background()
err = db.PingContext(ctx)
if err != nil {
log.Fatal(err.Error())
}
fmt.Printf("Connected!\n")
}
如需詳細資訊,請參閱 使用 Golang 查詢 Azure SQL Database 中的資料庫。
如需詳細資訊,請參閱 在 Microsoft Fabric 中聯機到 SQL 資料庫。
使用者指派的受控識別
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
Data Source=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Initial Catalog=<SQL-DB-name>-<Fabric-DB-Identifier>;User ID=<msiClientId>;Authentication=ActiveDirectoryManagedIdentity |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
Driver={ODBC Driver 17 for SQL Server};Server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Database=<SQL-DB-name>-<Fabric-DB-Identifier>;UID=<msiClientId>;Authentication=ActiveDirectoryMSI; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com;port=1433;database=<SQL-DB-name>-<Fabric-DB-Identifier>;user id=<msiClientId>;fedauth=ActiveDirectoryManagedIdentity; |
| 預設環境變數名稱 |
說明 |
範例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL Database 連接字串 |
server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com;port=1433;database=<SQL-DB-name>-<Fabric-DB-Identifier>;user id=<msiClientId>;fedauth=ActiveDirectoryManagedIdentity; |
範例程式碼
以下概述使用使用者指派的受控識別連線到 Fabric 中的 SQL 資料庫的步驟和代碼段。
安裝依賴項目。
dotnet add package Microsoft.Data.SqlClient
從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("FABRIC_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
如需詳細資訊,請參閱 使用 Active Directory 受控識別驗證。
在 pom.xml 檔案中新增下列相依性:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre11</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.7.0</version>
</dependency>
從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
public class Main {
public static void main(String[] args) {
// FABRIC_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI;"
String connectionString = System.getenv("FABRIC_SQL_CONNECTIONSTRING");
SQLServerDataSource ds = new SQLServerDataSource();
ds.setURL(connectionString);
try (Connection connection = ds.getConnection()) {
System.out.println("Connected successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
如需詳細資訊,請參閱 使用受控識別從 App Service 連線到 Azure 資料庫,無需使用機密資訊。
如果是 Spring 應用程式,如果您建立具有 選項--client-type springboot的連線,Service Connector 會將具有值格式FABRIC_SQL_CONNECTIONSTRING的環境變數jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI;設定為 Azure Spring Apps。
針對使用者指派的受控識別, 會新增 msiClientId=<msiClientId>; 。
更新您的應用程式,請遵循教學課程移轉 Java 應用程式以搭配 Azure SQL Database 使用無密碼連線。 如果先前已設定 spring.datasource.password 組態屬性,請記得移除它並新增正確的相依性。
spring:
datasource:
url: ${FABRIC_SQL_CONNECTIONSTRING}
安裝依賴項目。
python -m pip install pyodbc
從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。 如果您使用 Azure Container Apps 作為計算服務,或代碼段中的連接字串無法運作,請參閱 移轉 Python 應用程式以使用 Azure SQL Database 的無密碼連線 ,以使用無密碼認證連線到 Microsoft Fabric 中的 SQL 資料庫。
Authentication=ActiveDirectoryMSI; 在使用受控身份進行連線時,必須在連接字串中包含。
UID=<msiClientId> 使用使用者指派的受控識別進行連線時,連接字串中也需要 。
import os
import pyodbc, struct
from azure.identity import DefaultAzureCredential
connStr = os.getenv('FABRIC_SQL_CONNECTIONSTRING')
# System-assigned managed identity connection string format
# `Driver={ODBC Driver 17 for SQL Server};Server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Database=<SQL-DB-name>-<Fabric-DB-Identifier>;Authentication=ActiveDirectoryMSI;`
# User-assigned managed identity connection string format
# `Driver={ODBC Driver 17 for SQL Server};Server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Database=<SQL-DB-name>-<Fabric-DB-Identifier>;UID=<msiClientId>;Authentication=ActiveDirectoryMSI;`
conn = pyodbc.connect(connString)
- 安裝依賴項目。
go mod init <YourProjectName>
go mod tidy
- 從 Service Connector 新增的環境變數擷取 Microsoft Fabric 連接字串中的 SQL 資料庫。
package main
import (
"github.com/microsoft/go-mssqldb/azuread"
"database/sql"
"context"
"log"
"fmt"
"os"
)
var db *sql.DB
var connectionString = os.Getenv("FABRIC_SQL_CONNECTIONSTRING")
func main() {
var err error
// Create connection pool
db, err = sql.Open(azuread.DriverName, connectionString)
if err != nil {
log.Fatal("Error creating connection pool: ", err.Error())
}
ctx := context.Background()
err = db.PingContext(ctx)
if err != nil {
log.Fatal(err.Error())
}
fmt.Printf("Connected!\n")
}
如需詳細資訊,請參閱 使用 Golang 查詢 Azure SQL Database 中的資料庫。
如需詳細資訊,請參閱 在 Microsoft Fabric 中聯機到 SQL 資料庫。
在 Fabric 中分享 SQL 資料庫的存取權
完成在 Cloud Shell 或本機 Azure CLI 上建立服務連線。
建立連線之後,請在 Azure 入口網站中開啟計算服務資源、開啟 [服務連接器] 功能表,然後在 [網狀架構服務連線] 中找出您的 SQL 資料庫。 選取 [SQL Database ] 以流覽至網狀架構入口網站。
在網狀架構入口網站中,找出 [ 安全性] 索引標籤,然後選取 [管理 SQL 安全性]。
選取角色 db_ddladmin,然後選取 管理存取權。
您應該會看到系統指派的受控識別名稱,或任何與此 SQL 資料庫具有服務連線的使用者指派的受控識別,並顯示在 Fabric 中。 選取 [共享資料庫]。 如果您沒有看到 [共享資料庫] 選項,就不需要繼續進行其餘步驟。
輸入並選取新建立的系統指派受控識別名稱,以及/或出現在 [ 管理存取 ] 窗格中的任何使用者指派的受控識別。 根據需要新增任何其他身份。 選取 [ 使用 SQL Database 讀取所有數據 ] 複選框,然後選取 [ 授與]。
您現在已準備好在 Fabric 中使用 SQL 資料庫的新服務連線。
後續步驟
請參閱下列文章,以深入瞭解 Service Connector。