本文介绍支持的身份验证方法、客户端,以及可用于使用服务连接器将应用连接到 Azure SQL 数据库的示例代码。 在本文中,还将找到创建服务连接时获取的默认环境变量名称、值和配置。
受支持的计算服务
服务连接器可用于将以下计算服务连接到 Azure SQL 数据库:
- Azure 应用服务
- Azure 容器应用
- Azure Functions
- Azure Kubernetes 服务 (AKS)
- Azure Spring Apps
受支持的身份验证类型和客户端
下表显示了使用服务连接器将计算服务连接到 Azure SQL 数据库时受支持的身份验证方法和客户端的组合。 “是”表示支持该组合,“否”表示不支持该组合。
客户端类型 |
系统分配的托管标识 |
用户分配的托管标识 |
机密/连接字符串 |
服务主体 |
.NET |
是 |
是 |
是 |
是 |
Go |
否 |
否 |
是 |
否 |
Java |
是 |
是 |
是 |
是 |
Java - Spring Boot |
是 |
是 |
是 |
是 |
Node.js |
是 |
是 |
是 |
是 |
PHP |
否 |
否 |
是 |
否 |
Python |
是 |
是 |
是 |
是 |
Python - Django |
否 |
否 |
是 |
否 |
Ruby |
否 |
否 |
是 |
否 |
无 |
是 |
是 |
是 |
是 |
注意
系统分配的托管标识、用户分配的托管标识和服务主体身份验证仅在 Azure CLI 上受支持。
默认环境变量名称或应用程序属性和示例代码
使用以下连接详细信息将计算服务连接到 Azure SQL 数据库。 对于以下每个示例,请将占位符文本 <sql-server>
、<sql-database>
、<sql-username>
和 <sql-password>
替换为你自己的服务器名称、数据库名称、用户 ID 和密码。 有关命名约定的详细信息,请参阅服务连接器内部一文。
系统分配的托管标识
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;Authentication=ActiveDirectoryManagedIdentity |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
说明 |
示例值 |
spring.datasource.url |
Azure SQL 数据库数据源 URL |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
Azure SQL 身份验证 |
ActiveDirectoryMsi |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_AUTHENTICATIONTYPE |
Azure SQL 数据库身份验证类型 |
azure-active-directory-default |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_HOST |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
Azure SQL 数据库身份验证类型 |
azure-active-directory-default |
示例代码
请参阅下面的步骤和代码,以使用系统分配的托管标识连接到 Azure SQL 数据库。
安装依赖项。
dotnet add package Microsoft.Data.SqlClient
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接字符串。
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_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>
从服务连接器添加的环境变量中获取 Azure 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) {
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};msiClientId={UserAssignedMiClientId};authentication=ActiveDirectoryMSI;"
// For service principal: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};user={ServicePrincipalClientId};password={spSecret};authentication=ActiveDirectoryServicePrincipal;"
String connectionString = System.getenv("AZURE_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
选项创建连接,则服务连接器会为 Azure Spring Apps 设置采用值格式 jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI;
的 spring.datasource.url
属性。
按照“迁移 Java 应用程序以将无密码连接用于 Azure SQL 数据库”教程中的说明更新应用程序。 请记住删除 spring.datasource.password
配置属性(如果之前已设置),并添加正确的依赖项。
安装依赖项。
python -m pip install pyodbc
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。 如果使用 Azure 容器应用作为计算服务或者代码片段中的连接字符串不起作用,请参阅迁移 Python 应用程序以将无密码连接用于 Azure SQL 数据库来使用访问令牌连接到 Azure SQL 数据库。
import os
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For user-assigned managed identity.
# clientID = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={clientID};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For service principal.
# user = os.getenv('AZURE_SQL_USER')
# password = os.getenv('AZURE_SQL_PASSWORD')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={user};PWD={password};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
- 安装依赖项。
npm install mssql
- 从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const authenticationType = process.env.AZURE_SQL_AUTHENTICATIONTYPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true
// }
// };
// For user-assigned managed identity.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId
// }
// };
// For service principal.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const clientSecret = process.env.AZURE_SQL_CLIENTSECRET;
// const tenantId = process.env.AZURE_SQL_TENANTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId,
// clientSecret: clientSecret,
// tenantId: tenantId
// }
// };
this.poolconnection = await sql.connect(config);
有关详细信息,请参阅 Microsoft SQL Server 客户端编程的主页。
用户分配的托管标识
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<identity-client-ID>;Authentication=ActiveDirectoryManagedIdentity |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
说明 |
示例值 |
spring.datasource.url |
Azure SQL 数据库数据源 URL |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_USER |
Azure SQL 数据库用户 |
Object (principal) ID |
AZURE_SQL_AUTHENTICATION |
Azure SQL 身份验证 |
ActiveDirectoryMsi |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_AUTHENTICATIONTYPE |
Azure SQL 数据库身份验证类型 |
azure-active-directory-default |
AZURE_SQL_CLIENTID |
Azure SQL 数据库客户端 ID |
<identity-client-ID> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_HOST |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
Azure SQL 数据库身份验证类型 |
azure-active-directory-default |
AZURE_SQL_USERNAME |
Azure SQL 数据库客户端 ID |
<your Client ID> |
示例代码
请参阅下面的步骤和代码,以使用用户分配的托管标识连接到 Azure SQL 数据库。
安装依赖项。
dotnet add package Microsoft.Data.SqlClient
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接字符串。
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_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>
从服务连接器添加的环境变量中获取 Azure 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) {
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};msiClientId={UserAssignedMiClientId};authentication=ActiveDirectoryMSI;"
// For service principal: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};user={ServicePrincipalClientId};password={spSecret};authentication=ActiveDirectoryServicePrincipal;"
String connectionString = System.getenv("AZURE_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
选项创建连接,则服务连接器会为 Azure Spring Apps 设置采用值格式 jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI;
的 spring.datasource.url
属性。
按照“迁移 Java 应用程序以将无密码连接用于 Azure SQL 数据库”教程中的说明更新应用程序。 请记住删除 spring.datasource.password
配置属性(如果之前已设置),并添加正确的依赖项。
安装依赖项。
python -m pip install pyodbc
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。 如果使用 Azure 容器应用作为计算服务或者代码片段中的连接字符串不起作用,请参阅迁移 Python 应用程序以将无密码连接用于 Azure SQL 数据库来使用访问令牌连接到 Azure SQL 数据库。
import os
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For user-assigned managed identity.
# clientID = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={clientID};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For service principal.
# user = os.getenv('AZURE_SQL_USER')
# password = os.getenv('AZURE_SQL_PASSWORD')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={user};PWD={password};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
- 安装依赖项。
npm install mssql
- 从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const authenticationType = process.env.AZURE_SQL_AUTHENTICATIONTYPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true
// }
// };
// For user-assigned managed identity.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId
// }
// };
// For service principal.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const clientSecret = process.env.AZURE_SQL_CLIENTSECRET;
// const tenantId = process.env.AZURE_SQL_TENANTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId,
// clientSecret: clientSecret,
// tenantId: tenantId
// }
// };
this.poolconnection = await sql.connect(config);
有关详细信息,请参阅 Microsoft SQL Server 客户端编程的主页。
连接字符串
警告
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程需要非常高的信任度,并携带其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;Password=<sql-password> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;user=<sql-username>;password=<sql-password>; |
默认环境变量名称 |
说明 |
示例值 |
spring.datasource.url |
Azure SQL 数据库数据源 URL |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>; |
spring.datasource.username |
Azure SQL 数据库数据源用户名 |
<sql-user> |
spring.datasource.password |
Azure SQL 数据库数据源密码 |
<sql-password> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_USER |
Azure SQL 数据库用户 |
<sql-username> |
AZURE_SQL_PASSWORD |
Azure SQL 数据库密码 |
<sql-password> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_HOST |
Azure SQL 数据库主机 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_NAME |
Azure SQL 数据库名称 |
<sql-database> |
AZURE_SQL_USER |
Azure SQL 数据库用户 |
<sql-username> |
AZURE_SQL_PASSWORD |
Azure SQL 数据库密码 |
<sql-password> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
server=<sql-server>.database.windows.net;port=1433;database=<sql-database>;user id=<sql-username>;password=<sql-password>; |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_USERNAME |
Azure SQL 数据库用户名 |
<sql-username> |
AZURE_SQL_PASSWORD |
Azure SQL 数据库密码 |
<sql-password> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVERNAME |
Azure SQL 数据库服务器名 |
<sql-server>.database.windows.net,1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_UID |
Azure SQL 数据库唯一标识符 (UID) |
<sql-username> |
AZURE_SQL_PASSWORD |
Azure SQL 数据库密码 |
<sql-password> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_HOST |
Azure SQL 数据库主机 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_USERNAME |
Azure SQL 数据库用户名 |
<sql-username> |
AZURE_SQL_PASSWORD |
Azure SQL 数据库密码 |
<sql-password> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_HOST |
Azure SQL 数据库主机 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_USERNAME |
Azure SQL 数据库用户名 |
<sql-username> |
AZURE_SQL_PASSWORD |
Azure SQL 数据库密码 |
<sql-password> |
示例代码
请参阅下面的步骤和代码,以使用连接字符串连接到 Azure SQL 数据库。
安装依赖项。
dotnet add package Microsoft.Data.SqlClient
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接字符串。
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
将以下依赖项添加到 pom.xml 文件:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre11</version>
</dependency>
从服务连接器添加的环境变量中获取 Azure 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) {
String connectionString = System.getenv("AZURE_SQL_CONNECTIONSTRING");
SQLServerDataSource ds = new SQLServerDataSource();
ds.setURL(connectionString);
try (Connection connection = ds.getConnection()) {
System.out.println("Connected successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- 在“pom.xml”文件中添加依赖项:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 设置 Spring 应用程序。 连接配置由服务连接器添加到 Spring Apps。
安装依赖项。
python -m pip install pyodbc
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。
import os;
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
user = os.getenv('AZURE_SQL_USER')
password = os.getenv('AZURE_SQL_PASSWORD')
connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server={server},{port};Database={database};UID={user};PWD={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
安装依赖项。
pip install django
pip install pyodbc
在设置文件中,从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。
# in your setting file, eg. settings.py
server = os.getenv('AZURE_SQL_HOST')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_NAME')
user = os.getenv('AZURE_SQL_USER')
password = os.getenv('AZURE_SQL_PASSWORD')
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': server,
'PORT': port,
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
安装依赖项。
go install github.com/microsoft/go-mssqldb@latest
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接字符串。
import (
"context"
"database/sql"
"fmt"
"log"
"github.com/microsoft/go-mssqldb/azuread"
)
connectionString := os.Getenv("AZURE_SQL_CONNECTIONSTRING")
db, err = sql.Open(azuread.DriverName, connString)
if err != nil {
log.Fatal("Error creating connection pool: " + err.Error())
}
log.Printf("Connected!\n")
- 安装依赖项。
npm install mssql
- 从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const username = process.env.AZURE_SQL_USERNAME;
const password = process.env.AZURE_SQL_PASSWORD;
const config = {
server,
port,
database,
user,
password,
options: {
encrypt: true
}
};
this.poolconnection = await sql.connect(config);
下载 Microsoft Drivers for PHP for SQL Server。 有关详细信息,请查看Microsoft Drivers for PHP for SQL Server 入门。
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。
<?php
$server = getenv("AZURE_SQL_SERVERNAME");
$database = getenv("AZURE_SQL_DATABASE");
$user = getenv("AZURE_SQL_UID");
$password = getenv("AZURE_SQL_PASSWORD");
$connectionOptions = array(
"Database" => database,
"Uid" => user,
"PWD" => password
);
$conn = sqlsrv_connect($serverName, $connectionOptions);
?>
下载用于 SQL 服务器的 Ruby 驱动程序。 有关详细信息,请查看为 Ruby 开发配置开发环境。
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。
client = TinyTds::Client.new username: ENV['AZURE_SQL_USERNAME'], password: ENV['AZURE_SQL_PASSWORD'],
host: ENV['AZURE_SQL_HOST'], port: ENV['AZURE_SQL_PORT'],
database: ENV['AZURE_SQL_DATABASE'], azure:true
有关详细信息,请参阅 Microsoft SQL Server 客户端编程的主页。
服务主体
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CLIENTID |
客户端 ID |
<client-ID> |
AZURE_SQL_CLIENTSECRET |
客户端密码 |
<client-secret> |
AZURE_SQL_TENANTID |
租户 ID |
<tenant-ID> |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<client-Id>;Password=<client-secret>;Authentication=ActiveDirectoryServicePrincipal |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_CONNECTIONSTRING |
Azure SQL 数据库连接字符串 |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;user=<client-Id>;password=<client-secret>;authentication=ActiveDirectoryServicePrincipal; |
默认环境变量名称 |
说明 |
示例值 |
spring.datasource.url |
Azure SQL 数据库数据源 URL |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryServicePrincipal; |
spring.datasource.username |
Azure SQL 数据库数据源用户名 |
<client-Id> |
spring.datasource.password |
Azure SQL 数据库数据源密码 |
<client-Secret> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_USER |
Azure SQL 数据库用户 |
your Client Id |
AZURE_SQL_AUTHENTICATION |
Azure SQL 身份验证 |
ActiveDirectoryServerPrincipal |
AZURE_SQL_PASSWORD |
Azure SQL 数据库密码 |
your Client Secret |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_SERVER |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_AUTHENTICATIONTYPE |
Azure SQL 数据库身份验证类型 |
azure-active-directory-default |
AZURE_SQL_CLIENTID |
Azure SQL 数据库客户端 ID |
<your Client ID> |
AZURE_SQL_CLIENTSECRET |
Azure SQL 数据库客户端机密 |
<your Client Secret > |
AZURE_SQL_TENANTID |
Azure SQL 数据库租户 ID |
<your Tenant ID> |
默认环境变量名称 |
说明 |
示例值 |
AZURE_SQL_HOST |
Azure SQL 数据库服务器 |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Azure SQL 数据库端口 |
1433 |
AZURE_SQL_DATABASE |
Azure SQL 数据库数据库 |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
Azure SQL 数据库身份验证类型 |
azure-active-directory-default |
AZURE_SQL_USERNAME |
Azure SQL 数据库客户端 ID |
<your Client ID> |
AZURE_SQL_PASSWORD |
Azure SQL 数据库客户端机密 |
<your Client Secret > |
示例代码
请参阅下面的步骤和代码,以使用服务主体连接到 Azure SQL 数据库。
安装依赖项。
dotnet add package Microsoft.Data.SqlClient
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接字符串。
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_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>
从服务连接器添加的环境变量中获取 Azure 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) {
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};msiClientId={UserAssignedMiClientId};authentication=ActiveDirectoryMSI;"
// For service principal: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};user={ServicePrincipalClientId};password={spSecret};authentication=ActiveDirectoryServicePrincipal;"
String connectionString = System.getenv("AZURE_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
选项创建连接,则服务连接器会为 Azure Spring Apps 设置采用值格式 jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI;
的 spring.datasource.url
属性。
按照“迁移 Java 应用程序以将无密码连接用于 Azure SQL 数据库”教程中的说明更新应用程序。 请记住删除 spring.datasource.password
配置属性(如果之前已设置),并添加正确的依赖项。
安装依赖项。
python -m pip install pyodbc
从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。 如果使用 Azure 容器应用作为计算服务或者代码片段中的连接字符串不起作用,请参阅迁移 Python 应用程序以将无密码连接用于 Azure SQL 数据库来使用访问令牌连接到 Azure SQL 数据库。
import os
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For user-assigned managed identity.
# clientID = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={clientID};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For service principal.
# user = os.getenv('AZURE_SQL_USER')
# password = os.getenv('AZURE_SQL_PASSWORD')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={user};PWD={password};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
- 安装依赖项。
npm install mssql
- 从服务连接器添加的环境变量中获取 Azure SQL 数据库连接配置。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const authenticationType = process.env.AZURE_SQL_AUTHENTICATIONTYPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true
// }
// };
// For user-assigned managed identity.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId
// }
// };
// For service principal.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const clientSecret = process.env.AZURE_SQL_CLIENTSECRET;
// const tenantId = process.env.AZURE_SQL_TENANTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId,
// clientSecret: clientSecret,
// tenantId: tenantId
// }
// };
this.poolconnection = await sql.connect(config);
有关详细信息,请参阅 Microsoft SQL Server 客户端编程的主页。
后续步骤
请参考下面列出的教程以详细了解服务连接器。