此页显示了支持的身份验证方法和客户端,并演示了使用 Service Connector 将应用连接到 Microsoft Fabric 中的 SQL 数据库的示例代码。 此页面还显示你在创建服务连接时获得的默认环境变量名称和值。
受支持的计算服务
服务连接器可用于将以下计算服务连接到 Fabric 中的 SQL 数据库:
- Azure 应用服务
- Azure 容器应用 (Azure Container Apps)
- Azure Functions(Azure 功能服务)
- Azure Kubernetes 服务 (AKS)
受支持的身份验证类型和客户端类型
下表显示了使用 Service Connector 将计算服务连接到 Fabric 中的 SQL 数据库时支持的身份验证方法和客户端的组合。 “是”表示支持组合,而“否”则表示不支持该组合。
客户端类型 |
系统分配的托管标识 |
用户分配的管理标识 |
机密/连接字符串 |
服务主体 |
.NET |
是的 |
是的 |
否 |
否 |
走吧 |
是的 |
是的 |
否 |
否 |
爪哇岛 |
是的 |
是的 |
否 |
否 |
Java - Spring Boot |
是的 |
是的 |
否 |
否 |
Python语言 |
是的 |
是的 |
否 |
否 |
没有 |
是的 |
是的 |
否 |
否 |
此表指示根据 Fabric 行为,仅允许通过托管标识进行身份验证。
.NET、Java、Java - Spring Boot、Python、Go 和 None 客户端类型支持系统分配的托管标识和用户分配的托管标识方法。 这些方法不支持其他任何类型。
默认环境变量名称或应用程序属性和示例代码
请参阅以下选项卡中介绍的连接详细信息和示例代码,以将计算服务连接到 Fabric 中的 SQL 数据库。 有关命名约定的详细信息,请参阅服务连接器内部一文。
注释
尽管 Fabric 中的 SQL 数据库不同于 Azure SQL 数据库,但可以通过与 Azure SQL 数据库相同的方式在 Fabric 中连接和查询 SQL 数据库。 了解详细信息。
系统分配的托管标识
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
Data Source=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;Initial Catalog=<SQL-DB-name>-<Fabric-DB-Identifier>;Authentication=ActiveDirectoryManagedIdentity |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
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; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com;port=1433;database=<SQL-DB-name>-<Fabric-DB-Identifier>;fedauth=ActiveDirectoryManagedIdentity; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
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();
}
}
}
有关详细信息,请参阅使用托管标识从应用服务连接到 Azure 数据库,而无需使用密钥。
对于 Spring 应用程序,如果使用选项--client-type springboot
创建连接,服务连接器会将值格式jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI;
的环境变量FABRIC_SQL_CONNECTIONSTRING
设置为 Azure Spring Apps。
为用户分配的托管标识添加了 msiClientId=<msiClientId>;
。
按照“迁移 Java 应用程序以将无密码连接用于 Azure SQL 数据库”教程中的说明更新应用程序。 请记住,如果之前已设置了 spring.datasource.password
配置属性,请将其删除,并添加正确的依赖项。
spring:
datasource:
url: ${FABRIC_SQL_CONNECTIONSTRING}
安装依赖项。
python -m pip install pyodbc
从 Service Connector 添加的环境变量中检索 Microsoft Fabric 连接字符串中的 SQL 数据库。 如果使用 Azure 容器应用作为计算服务或代码片段中的连接字符串不起作用,请参阅 迁移 Python 应用程序以使用 Azure SQL 数据库的无密码连接,以使用无密码 凭据连接到 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 数据库中的数据库。
有关详细信息,请参阅 Microsoft Fabric 中的“连接到 SQL 数据库”。
用户分配的托管标识
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
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 |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
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; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
server=tcp:<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com;port=1433;database=<SQL-DB-name>-<Fabric-DB-Identifier>;user id=<msiClientId>;fedauth=ActiveDirectoryManagedIdentity; |
默认环境变量名称 |
DESCRIPTION |
示例值 |
FABRIC_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
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();
}
}
}
有关详细信息,请参阅使用托管标识从应用服务连接到 Azure 数据库,而无需使用密钥。
对于 Spring 应用程序,如果使用选项--client-type springboot
创建连接,服务连接器会将值格式jdbc:sqlserver://<Fabric-SQL-Identifier>.msit-database.fabric.microsoft.com,1433;databaseName=<SQL-DB-name>-<Fabric-DB-Identifier>;authentication=ActiveDirectoryMSI;
的环境变量FABRIC_SQL_CONNECTIONSTRING
设置为 Azure Spring Apps。
为用户分配的托管标识添加了 msiClientId=<msiClientId>;
。
按照“迁移 Java 应用程序以将无密码连接用于 Azure SQL 数据库”教程中的说明更新应用程序。 请记住,如果之前已设置了spring.datasource.password
配置属性,要将其删除,然后添加正确的依赖项。
spring:
datasource:
url: ${FABRIC_SQL_CONNECTIONSTRING}
安装依赖项。
python -m pip install pyodbc
从 Service Connector 添加的环境变量中检索 Microsoft Fabric 连接字符串中的 SQL 数据库。 如果使用 Azure 容器应用作为计算服务或代码片段中的连接字符串不起作用,请参阅 迁移 Python 应用程序以使用 Azure SQL 数据库的无密码连接,以使用无密码 凭据连接到 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 数据库中的数据库。
有关详细信息,请参阅 Microsoft Fabric 中的“连接到 SQL 数据库”。
在 Fabric 中共享对 SQL 数据库的访问
完成在 Cloud Shell 上或本地 Azure CLI 上创建服务连接。
创建连接后,在 Azure 门户中打开计算服务资源,打开服务连接器菜单,并在 Fabric 服务连接中找到 SQL 数据库。 选择 SQL 数据库 以导航到 Fabric 门户。
在 Fabric 门户中,找到 “安全 ”选项卡,然后选择“ 管理 SQL 安全性”。
选择角色db_ddladmin,然后 管理访问权限。
你应该会看到系统分配的托管标识的名称,以及/或任何用户分配的托管标识,它具有与 Fabric 中此 SQL 数据库的服务连接。 选择 “共享数据库”。 如果未看到 “共享数据库 ”选项,则无需继续执行其余步骤。
输入并选择新创建的系统分配的托管标识的名称,以及/或显示在 “管理访问 ”窗格中的任何用户分配的托管标识。 根据需要添加任何其他标识。 选中“使用 SQL 数据库读取所有数据”复选框,然后选择“授予”。
现在,你已准备好使用与 Fabric 中的 SQL 数据库的新服务连接。
后续步骤
请参阅以下文章,了解有关服务连接器的详细信息。