Integrieren von Azure SQL-Datenbank mit dem Dienstconnector
Artikel
Auf dieser Seite werden unterstützte Authentifizierungsmethoden und Clients sowie Beispielcode gezeigt, den Sie verwenden können, um Computedienste mit Azure SQL-Datenbank mithilfe des Dienstconnectors zu verbinden. Möglicherweise können Sie mit anderen Methoden eine Verbindung mit der Azure SQL-Datenbank herstellen. Auf dieser Seite werden auch die Namen und Werte der Standardumgebungsvariablen angezeigt, die Sie erhalten, wenn Sie die Dienstverbindung erstellen.
Unterstützte Computedienste
Der Dienstconnector kann verwendet werden, um die folgenden Computedienste mit Azure SQL-Datenbank zu verbinden:
Azure App Service
Azure Container Apps
Azure-Funktionen
Azure Kubernetes Service (AKS)
Azure Spring Apps
Unterstützte Authentifizierungstypen und Clients
Die folgende Tabelle zeigt, welche Kombinationen von Authentifizierungsmethoden und Clients für die Verbindung Ihres Computediensts mit Azure SQL-Datenbank mithilfe des Dienstconnectors unterstützt werden. Ein „Ja“ gibt an, dass die Kombination unterstützt wird, während ein „Nein“ angibt, dass sie nicht unterstützt wird.
Clienttyp
Systemseitig zugewiesene verwaltete Identität
Benutzerseitig zugewiesene verwaltete Identität
Geheimnis/Verbindungszeichenfolge
Dienstprinzipal
.NET
Ja
Ja
Ja
Ja
Go
No
Nein
Ja
No
Java
Ja
Ja
Ja
Ja
Java - Spring Boot
Ja
Ja
Ja
Ja
Node.js
Ja
Ja
Ja
Ja
PHP
No
Nein
Ja
Nein
Python
Ja
Ja
Ja
Ja
Python – Django
No
Nein
Ja
No
Ruby
No
Nein
Ja
Nein
Keine
Ja
Ja
Ja
Ja
Diese Tabelle gibt an, dass das Geheimnis/die Verbindungszeichenfolgenmethode für alle Clienttypen unterstützt wird. Die vom System zugewiesenen verwalteten Identitäten, die vom Benutzer zugewiesenen verwalteten Identitäten und die Dienstprinzipalmethoden werden für die Client-Typen .NET, Java, Java – Spring Boot, Node.js, Python und None unterstützt. Diese Methoden werden für Go-, PHP-, Django- und Ruby-Clienttypen nicht unterstützt.
Hinweis
Vom System zugewiesene verwaltete Identität, vom Benutzer zugewiesene verwaltete Identität und Dienstprinzipal werden nur in Azure CLI unterstützt.
Namen von Standard-Umgebungsvariablen oder Anwendungseigenschaften und Beispielcode
Verwenden Sie die nachstehenden Verbindungsdetails, um Computedienste mit Azure SQL-Datenbank zu verbinden. Ersetzen Sie in jedem unten genannten Beispiel die Platzhaltertexte <sql-server>, <sql-database>, <sql-username> und <sql-password> durch Ihre Werte für eigenen Servername, Datenbankname, Benutzer-ID und Kennwort. Weitere Informationen zu Benennungskonventionen finden Sie im Artikel Besonderheiten des Dienstconnectors.
Lesen Sie die Schritte und den folgenden Code, um eine Verbindung mit der Azure SQL-Datenbank mithilfe einer vom System zugewiesenen verwalteten Identität herzustellen.
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
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();
}
}
}
Wenn Sie für eine Spring-Anwendung eine Verbindung mit der Option --client-type springboot erstellen, setzt Service Connector die Eigenschaften spring.datasource.url mit dem Werteformat jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; auf Azure Spring Apps.
Rufen Sie die Azure SQL-Datenbank-Verbindungskonfigurationen aus der Umgebungsvariable ab, die von Service Connector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten. Wenn Sie Azure Container Apps als Computedienst verwenden oder die Verbindungszeichenfolge im Codeausschnitt nicht funktioniert, lesen Sie Migrieren einer Python-Anwendung, um kennwortlose Verbindungen mit Azure SQL-Datenbank zum Herstellen einer Verbindung mit Azure SQL-Datenbank mithilfe eines Zugriffstokens zu verwenden.
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)
Installieren Sie Abhängigkeiten.
npm install mssql
Rufen Sie die Azure SQL-Datenbank-Verbindungskonfigurationen aus den vom Dienstconnector hinzugefügten Umgebungsvariablen ab. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure SQL-Datenbank mit dem Dienstconnector.
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<identity-client-ID>;Authentication=ActiveDirectoryManagedIdentity
Lesen Sie die Schritte und den folgenden Code, um eine Verbindung mit der Azure SQL-Datenbank mithilfe einer vom Benutzer zugewiesenen verwalteten Identität herzustellen.
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
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();
}
}
}
Wenn Sie für eine Spring-Anwendung eine Verbindung mit der Option --client-type springboot erstellen, setzt Service Connector die Eigenschaften spring.datasource.url mit dem Werteformat jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; auf Azure Spring Apps.
Rufen Sie die Azure SQL-Datenbank-Verbindungskonfigurationen aus der Umgebungsvariable ab, die von Service Connector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten. Wenn Sie Azure Container Apps als Computedienst verwenden oder die Verbindungszeichenfolge im Codeausschnitt nicht funktioniert, lesen Sie Migrieren einer Python-Anwendung, um kennwortlose Verbindungen mit Azure SQL-Datenbank zum Herstellen einer Verbindung mit Azure SQL-Datenbank mithilfe eines Zugriffstokens zu verwenden.
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)
Installieren Sie Abhängigkeiten.
npm install mssql
Rufen Sie die Azure SQL-Datenbank-Verbindungskonfigurationen aus den vom Dienstconnector hinzugefügten Umgebungsvariablen ab. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure SQL-Datenbank mit dem Dienstconnector.
Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden. Der in diesem Verfahren beschriebene Authentifizierungsflow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere sicherere Flows (z. B. verwaltete Identitäten) nicht anwendbar sind.
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Fügen Sie der Datei pom.xml die folgenden Abhängigkeiten hinzu:
Richten Sie die Spring-Anwendung ein. Die Verbindungskonfigurationen werden Spring-Apps vom Dienstconnector hinzugefügt.
Installieren Sie Abhängigkeiten.
python -m pip install pyodbc
Rufen Sie die Azure SQL-Datenbank-Verbindungskonfigurationen aus der Umgebungsvariable ab, die von Service Connector hinzugefügt wurde.
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)
Installieren Sie Abhängigkeiten.
pip install django
pip install pyodbc
Rufen Sie in der Einstellungsdatei die Azure SQL-Datenbank-Verbindungskonfigurationen aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wurde.
# 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': databse,
'USER': user,
'PASSWORD': password,
'HOST': server,
'PORT': port,
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
Installieren Sie die Abhängigkeit.
go install github.com/microsoft/go-mssqldb@latest
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure SQL-Datenbank mit dem Dienstconnector.
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<client-Id>;Password=<client-secret>;Authentication=ActiveDirectoryServicePrincipal
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Rufen Sie die Azure SQL-Datenbank-Verbindungszeichenfolge aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wird.
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();
}
}
}
Wenn Sie für eine Spring-Anwendung eine Verbindung mit der Option --client-type springboot erstellen, setzt Service Connector die Eigenschaften spring.datasource.url mit dem Werteformat jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; auf Azure Spring Apps.
Rufen Sie die Azure SQL-Datenbank-Verbindungskonfigurationen aus der Umgebungsvariable ab, die von Service Connector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten. Wenn Sie Azure Container Apps als Computedienst verwenden oder die Verbindungszeichenfolge im Codeausschnitt nicht funktioniert, lesen Sie Migrieren einer Python-Anwendung, um kennwortlose Verbindungen mit Azure SQL-Datenbank zum Herstellen einer Verbindung mit Azure SQL-Datenbank mithilfe eines Zugriffstokens zu verwenden.
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)
Installieren Sie Abhängigkeiten.
npm install mssql
Rufen Sie die Azure SQL-Datenbank-Verbindungskonfigurationen aus den vom Dienstconnector hinzugefügten Umgebungsvariablen ab. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure SQL-Datenbank mit dem Dienstconnector.