Azure İşlevleri için Azure SQL giriş bağlaması

Bir işlev çalıştırıldığında, Azure SQL giriş bağlaması veritabanından verileri alır ve işlevin giriş parametresine geçirir.

Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.

Önemli

Bu makalede, Node.js programlama modelinin birden çok sürümünü desteklemek için sekmeler kullanılır. Genel kullanıma sunulan v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri Node.js geliştirici kılavuzuna bakın. v3 ile v4 arasındaki farklar hakkında daha fazla bilgi edinmek için geçiş kılavuzuna bakın.

Örnekler

Go desteği şu anda bu bağlama için mevcut değil.

Aşağıdaki C# modlarından birini kullanarak bir C# işlevi oluşturabilirsiniz:

  • Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. .NET ve .NET Framework için uzun vadeli destek (LTS) ve LTS olmayan sürümlerde çalışan C# işlevlerini desteklemek için yalıtılmış bir çalışan işlemi gereklidir.
  • İşlem içi model: Azure İşlevleri çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi.
  • C# betiği: Öncelikle Azure portalında C# işlevleri oluşturduğunuzda kullanılır.

Önemli

İşlem içi model desteği 10 Kasım 2026'da sona erecektir. Tam destek için uygulamalarınızı yalıtılmış çalışan modeline geçirmenizi kesinlikle öneririz.

GitHub deposunda Azure SQL giriş bağlaması için daha fazla örnek mevcuttur.

Bu bölüm aşağıdaki örnekleri içerir:

Örnekler bir ToDoItem sınıfa ve buna karşılık gelen bir veritabanı tablosuna başvurur:

namespace AzureSQL.ToDo
{
    public class ToDoItem
    {
        public Guid Id { get; set; }
        public int? order { get; set; }
        public string title { get; set; }
        public string url { get; set; }
        public bool? completed { get; set; }
    }
}
CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma

Aşağıdaki örnekte tek bir kayıt alan bir C# işlevi gösterilmektedir. İşlev, kimliği belirtmek için sorgu dizesi kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik, belirtilen sorguya sahip bir ToDoItem kaydı almak için kullanılır.

Not

HTTP sorgu dizesi parametresi büyük/küçük harfe duyarlıdır.

using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker.Http;

namespace AzureSQLSamples
{
    public static class GetToDoItem
    {
        [FunctionName("GetToDoItem")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitem")]
            HttpRequest req,
            [SqlInput(commandText: "select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id",
                commandType: System.Data.CommandType.Text,
                parameters: "@Id={Query.id}",
                connectionStringSetting: "SqlConnectionString")]
            IEnumerable<ToDoItem> toDoItem)
        {
            return new OkObjectResult(toDoItem.FirstOrDefault());
        }
    }
}

HTTP tetikleyicisi, yol parametresinden birden çok satır alma

Aşağıdaki örnekte, sorgu tarafından döndürülen belgeleri alan bir C# işlevi gösterilmektedir. İşlev, sorgu parametresinin değerini belirtmek için yönlendirme verilerini kullanan bir HTTP isteği tarafından tetikleniyor. Bu parametre, belirtilen sorgudaki ToDoItem kayıtları filtrelemek için kullanılır.

using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker.Http;

namespace AzureSQLSamples
{
    public static class GetToDoItems
    {
        [FunctionName("GetToDoItems")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitems/{priority}")]
            HttpRequest req,
            [SqlInput(commandText: "select [Id], [order], [title], [url], [completed] from dbo.ToDo where [Priority] > @Priority",
                commandType: System.Data.CommandType.Text,
                parameters: "@Priority={priority}",
                connectionStringSetting: "SqlConnectionString")]
            IEnumerable<ToDoItem> toDoItems)
        {
            return new OkObjectResult(toDoItems);
        }
    }
}

HTTP tetikleyicisi, satırları silme

Aşağıdaki örnekte, HTTP isteği sorgu parametresinden alınan girişle saklı yordamı yürüten bir C# işlevi gösterilmektedir.

Saklı yordam dbo.DeleteToDo SQL veritabanında oluşturulmalıdır. Bu örnekte saklı yordam, parametrenin değerine bağlı olarak tek bir kaydı veya tüm kayıtları siler.

CREATE PROCEDURE [dbo].[DeleteToDo]
    @Id NVARCHAR(100)
AS
    DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
    IF @UId IS NOT NULL AND @Id != ''
    BEGIN
        DELETE FROM dbo.ToDo WHERE Id = @UID
    END
    ELSE
    BEGIN
        DELETE FROM dbo.ToDo WHERE @ID = ''
    END

    SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
namespace AzureSQL.ToDo
{
    public static class DeleteToDo
    {
        // delete all items or a specific item from querystring
        // returns remaining items
        // uses input binding with a stored procedure DeleteToDo to delete items and return remaining items
        [FunctionName("DeleteToDo")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "DeleteFunction")] HttpRequest req,
            ILogger log,
            [SqlInput(commandText: "DeleteToDo", commandType: System.Data.CommandType.StoredProcedure, 
                parameters: "@Id={Query.id}", connectionStringSetting: "SqlConnectionString")] 
                IEnumerable<ToDoItem> toDoItems)
        {
            return new OkObjectResult(toDoItems);
        }
    }
}

GitHub deposunda Azure SQL giriş bağlaması için daha fazla örnek mevcuttur.

Bu bölüm aşağıdaki örnekleri içerir:

Örnekler bir sınıfa (ayrı bir ToDoItem dosyada ToDoItem.java) ve buna karşılık gelen bir veritabanı tablosuna başvurur:

package com.function;
import java.util.UUID;

public class ToDoItem {
    public UUID Id;
    public int order;
    public String title;
    public String url;
    public boolean completed;

    public ToDoItem() {
    }

    public ToDoItem(UUID Id, int order, String title, String url, boolean completed) {
        this.Id = Id;
        this.order = order;
        this.title = title;
        this.url = url;
        this.completed = completed;
    }
}
CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

HTTP tetikleyicisi, birden çok satır alma

Aşağıdaki örnekte, HTTP isteği tarafından tetiklenen bir Java işlevindeki SQL giriş bağlaması gösterilmektedir. Sorgudan okur ve sonuçları HTTP yanıtında döndürür.

package com.function;

import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import com.microsoft.azure.functions.sql.annotation.SQLInput;

import java.util.Optional;

public class GetToDoItems {
    @FunctionName("GetToDoItems")
    public HttpResponseMessage run(
            @HttpTrigger(
                name = "req",
                methods = {HttpMethod.GET},
                authLevel = AuthorizationLevel.ANONYMOUS)
                HttpRequestMessage<Optional<String>> request,
            @SQLInput(
                name = "toDoItems",
                commandText = "SELECT * FROM dbo.ToDo",
                commandType = "Text",
                connectionStringSetting = "SqlConnectionString")
                ToDoItem[] toDoItems) {
        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(toDoItems).build();
    }
}

HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma

Aşağıdaki örnekte, HTTP isteği tarafından tetiklenen bir Java işlevindeki SQL giriş bağlaması gösterilmektedir. Sorgu dizesindeki bir parametreye göre filtrelenen bir sorgudan okur ve HTTP yanıtında satırı döndürür.

public class GetToDoItem {
    @FunctionName("GetToDoItem")
    public HttpResponseMessage run(
            @HttpTrigger(
                name = "req",
                methods = {HttpMethod.GET},
                authLevel = AuthorizationLevel.ANONYMOUS)
                HttpRequestMessage<Optional<String>> request,
            @SQLInput(
                name = "toDoItems",
                commandText = "SELECT * FROM dbo.ToDo",
                commandType = "Text",
                parameters = "@Id={Query.id}",
                connectionStringSetting = "SqlConnectionString")
                ToDoItem[] toDoItems) {
        ToDoItem toDoItem = toDoItems[0];
        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(toDoItem).build();
    }
}

HTTP tetikleyicisi, satırları silme

Aşağıdaki örnekte, HTTP isteği tarafından tetiklenen bir Java işlevindeki SQL giriş bağlaması gösterilmektedir. HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürütür.

Saklı yordam dbo.DeleteToDo veritabanında oluşturulmalıdır. Bu örnekte saklı yordam, parametrenin değerine bağlı olarak tek bir kaydı veya tüm kayıtları siler.

CREATE PROCEDURE [dbo].[DeleteToDo]
    @Id NVARCHAR(100)
AS
    DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
    IF @UId IS NOT NULL AND @Id != ''
    BEGIN
        DELETE FROM dbo.ToDo WHERE Id = @UID
    END
    ELSE
    BEGIN
        DELETE FROM dbo.ToDo WHERE @ID = ''
    END

    SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
public class DeleteToDo {
    @FunctionName("DeleteToDo")
    public HttpResponseMessage run(
            @HttpTrigger(
                name = "req",
                methods = {HttpMethod.GET},
                authLevel = AuthorizationLevel.ANONYMOUS)
                HttpRequestMessage<Optional<String>> request,
            @SQLInput(
                name = "toDoItems",
                commandText = "dbo.DeleteToDo",
                commandType = "StoredProcedure",
                parameters = "@Id={Query.id}",
                connectionStringSetting = "SqlConnectionString")
                ToDoItem[] toDoItems) {
        return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(toDoItems).build();
    }
}

GitHub deposunda Azure SQL giriş bağlaması için daha fazla örnek mevcuttur.

Bu bölüm aşağıdaki örnekleri içerir:

Örnekler bir veritabanı tablosuna başvurur:

CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

HTTP tetikleyicisi, birden çok satır alma

Aşağıdaki örnekte, BIR HTTP isteği tarafından tetiklenen bir SQL giriş bağlaması gösterilmektedir. Sorgudan okur ve sonuçları HTTP yanıtında döndürür.

HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma

Aşağıdaki örnekte, BIR HTTP isteği tarafından tetiklenen bir SQL giriş bağlaması gösterilmektedir. Sorgu dizesindeki bir parametreye göre filtrelenen bir sorgudan okur ve HTTP yanıtında satırı döndürür.

HTTP tetikleyicisi, satırları silme

Aşağıdaki örnekte, BIR HTTP isteği tarafından tetiklenen bir SQL giriş bağlaması gösterilmektedir. HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürütür.

Saklı yordam dbo.DeleteToDo veritabanında oluşturulmalıdır. Bu örnekte saklı yordam, parametrenin değerine bağlı olarak tek bir kaydı veya tüm kayıtları siler.

CREATE PROCEDURE [dbo].[DeleteToDo]
    @Id NVARCHAR(100)
AS
    DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
    IF @UId IS NOT NULL AND @Id != ''
    BEGIN
        DELETE FROM dbo.ToDo WHERE Id = @UID
    END
    ELSE
    BEGIN
        DELETE FROM dbo.ToDo WHERE @ID = ''
    END

    SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO

GitHub deposunda Azure SQL giriş bağlaması için daha fazla örnek mevcuttur.

Bu bölüm aşağıdaki örnekleri içerir:

Örnekler bir veritabanı tablosuna başvurur:

CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

HTTP tetikleyicisi, birden çok satır alma

Aşağıdaki örnekte, bir function.json dosyasındaki SQL giriş bağlaması ve HTTP isteği tarafından tetiklenen bir PowerShell işlevi gösterilmektedir. Sorgudan okur ve sonuçları HTTP yanıtında döndürür.

Function.json dosyasındaki verileri bağlama aşağıdadır:

{
    "authLevel": "anonymous",
    "type": "httpTrigger",
    "direction": "in",
    "name": "req",
    "methods": [
        "get"
    ]
},
{
    "type": "http",
    "direction": "out",
    "name": "res"
},
{
    "name": "todoItems",
    "type": "sql",
    "direction": "in",
    "commandText": "select [Id], [order], [title], [url], [completed] from dbo.ToDo",
    "commandType": "Text",
    "connectionStringSetting": "SqlConnectionString"
}

Yapılandırma bölümünde bu özellikler açıklanır.

Aşağıda, dosyadaki işlev için örnek PowerShell kodu verilmiştir run.ps1 :

using namespace System.Net

param($Request, $todoItems)

Write-Host "PowerShell function with SQL Input Binding processed a request."

Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
    StatusCode = [System.Net.HttpStatusCode]::OK
    Body = $todoItems
})

HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma

Aşağıdaki örnekte, bir HTTP isteği tarafından tetiklenen bir PowerShell işlevindeki SQL giriş bağlaması gösterilmektedir. Sorgu dizesindeki bir parametreye göre filtrelenen bir sorgudan okur ve HTTP yanıtında satırı döndürür.

Function.json dosyasındaki verileri bağlama aşağıdadır:

{
    "authLevel": "anonymous",
    "type": "httpTrigger",
    "direction": "in",
    "name": "req",
    "methods": [
        "get"
    ]
},
{
    "type": "http",
    "direction": "out",
    "name": "res"
},
{
    "name": "todoItem",
    "type": "sql",
    "direction": "in",
    "commandText": "select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id",
    "commandType": "Text",
    "parameters": "@Id = {Query.id}",
    "connectionStringSetting": "SqlConnectionString"
}

Yapılandırma bölümünde bu özellikler açıklanır.

Aşağıda, dosyadaki işlev için örnek PowerShell kodu verilmiştir run.ps1 :

using namespace System.Net

param($Request, $todoItem)

Write-Host "PowerShell function with SQL Input Binding processed a request."

Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
    StatusCode = [System.Net.HttpStatusCode]::OK
    Body = $todoItem
})

HTTP tetikleyicisi, satırları silme

Aşağıdaki örnekte, bir function.json dosyasındaki SQL giriş bağlaması ve HTTP isteği tarafından tetiklenen bir PowerShell işlevi gösterilmektedir. HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürütür.

Saklı yordam dbo.DeleteToDo veritabanında oluşturulmalıdır. Bu örnekte saklı yordam, parametrenin değerine bağlı olarak tek bir kaydı veya tüm kayıtları siler.

CREATE PROCEDURE [dbo].[DeleteToDo]
    @Id NVARCHAR(100)
AS
    DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
    IF @UId IS NOT NULL AND @Id != ''
    BEGIN
        DELETE FROM dbo.ToDo WHERE Id = @UID
    END
    ELSE
    BEGIN
        DELETE FROM dbo.ToDo WHERE @ID = ''
    END

    SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
{
    "authLevel": "anonymous",
    "type": "httpTrigger",
    "direction": "in",
    "name": "req",
    "methods": [
        "get"
    ]
},
{
    "type": "http",
    "direction": "out",
    "name": "res"
},
{
    "name": "todoItems",
    "type": "sql",
    "direction": "in",
    "commandText": "DeleteToDo",
    "commandType": "StoredProcedure",
    "parameters": "@Id = {Query.id}",
    "connectionStringSetting": "SqlConnectionString"
}

Yapılandırma bölümünde bu özellikler açıklanır.

Aşağıda, dosyadaki işlev için örnek PowerShell kodu verilmiştir run.ps1 :

using namespace System.Net

param($Request, $todoItems)

Write-Host "PowerShell function with SQL Input Binding processed a request."

Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
    StatusCode = [System.Net.HttpStatusCode]::OK
    Body = $todoItems
})

GitHub deposunda Azure SQL giriş bağlaması için daha fazla örnek mevcuttur.

Bu bölüm aşağıdaki örnekleri içerir:

Örnekler bir veritabanı tablosuna başvurur:

CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

HTTP tetikleyicisi, birden çok satır alma

Aşağıdaki örnekte, bir function.json dosyasındaki SQL giriş bağlaması ve HTTP isteği tarafından tetiklenen bir Python işlevi gösterilmektedir. Sorgudan okur ve sonuçları HTTP yanıtında döndürür.

Aşağıdaki python kodu örnek bir function_app.py dosyasıdır:

import json
import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="GetToDo")
@app.route(route="gettodo")
@app.sql_input(arg_name="todo",
                        command_text="select [Id], [order], [title], [url], [completed] from dbo.ToDo",
                        command_type="Text",
                        connection_string_setting="SqlConnectionString")
def get_todo(req: func.HttpRequest, todo: func.SqlRowList) -> func.HttpResponse:
    rows = list(map(lambda r: json.loads(r.to_json()), todo))

    return func.HttpResponse(
        json.dumps(rows),
        status_code=200,
        mimetype="application/json"
    )

HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma

Aşağıdaki örnekte, BIR PYTHON işlevinde HTTP isteği tarafından tetiklenen sql giriş bağlaması gösterilmektedir. Sorgu dizesindeki bir parametreye göre filtrelenen bir sorgudan okur ve HTTP yanıtında satırı döndürür.

Aşağıdaki python kodu örnek bir function_app.py dosyasıdır:

import json
import logging
import azure.functions as func
from azure.functions.decorators.core import DataType

app = func.FunctionApp()

@app.function_name(name="GetToDo")
@app.route(route="gettodo/{id}")
@app.sql_input(arg_name="todo",
                        command_text="select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id",
                        command_type="Text",
                        parameters="@Id={id}",
                        connection_string_setting="SqlConnectionString")
def get_todo(req: func.HttpRequest, todo: func.SqlRowList) -> func.HttpResponse:
    rows = list(map(lambda r: json.loads(r.to_json()), todo))

    return func.HttpResponse(
        json.dumps(rows),
        status_code=200,
        mimetype="application/json"
    )

HTTP tetikleyicisi, satırları silme

Aşağıdaki örnekte, bir function.json dosyasındaki SQL giriş bağlaması ve HTTP isteği tarafından tetiklenen bir Python işlevi gösterilmektedir. HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürütür.

Saklı yordam dbo.DeleteToDo veritabanında oluşturulmalıdır. Bu örnekte saklı yordam, parametrenin değerine bağlı olarak tek bir kaydı veya tüm kayıtları siler.

CREATE PROCEDURE [dbo].[DeleteToDo]
    @Id NVARCHAR(100)
AS
    DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
    IF @UId IS NOT NULL AND @Id != ''
    BEGIN
        DELETE FROM dbo.ToDo WHERE Id = @UID
    END
    ELSE
    BEGIN
        DELETE FROM dbo.ToDo WHERE @ID = ''
    END

    SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO

Aşağıdaki python kodu örnek bir function_app.py dosyasıdır:

import json
import logging
import azure.functions as func
from azure.functions.decorators.core import DataType

app = func.FunctionApp()

@app.function_name(name="DeleteToDo")
@app.route(route="deletetodo/{id}")
@app.sql_input(arg_name="todo",
                        command_text="DeleteToDo",
                        command_type="StoredProcedure",
                        parameters="@Id={id}",
                        connection_string_setting="SqlConnectionString")
def get_todo(req: func.HttpRequest, todo: func.SqlRowList) -> func.HttpResponse:
    rows = list(map(lambda r: json.loads(r.to_json()), todo))

    return func.HttpResponse(
        json.dumps(rows),
        status_code=200,
        mimetype="application/json"
    )

Özellikler

C# kitaplığı, aşağıdaki özelliklere sahip olan işlevdeki SQL bağlamalarını bildirmek için SqlAttribute özniteliğini kullanır:

Öznitelik özelliği Açıklama
CommandText Gerekli. Transact-SQL sorgu komutu veya bağlama tarafından yürütülen saklı yordamın adı.
ConnectionStringSetting Gerekli. Sorgunun veya saklı yordamın yürütülmekte olduğu veritabanı için bağlantı dizesi içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkeni adına çözümlenmelidir.
CommandType Gerekli. Sorgu için Metin ve saklı yordam için StoredProcedure olan CommandType değeri.
Parametreler isteğe bağlı. Yürütme sırasında tek bir dize olarak komuta geçirilen sıfır veya daha fazla parametre değeri. biçimine @param1=param1,@param2=param2uygun olmalıdır. Parametre adı ve parametre değeri virgül (,) veya eşittir işareti (=) içeremez.

Ek Açıklamalar

Java işlevleri çalışma zamanı kitaplığında, değeri Azure SQL'den gelen parametrelerde ek açıklamayı (@SQLInput) kullanıncom.microsoft.azure.functions.sql.annotation.SQLInput. Bu ek açıklama aşağıdaki öğeleri destekler:

Öğe Açıklama
commandText Gerekli. Transact-SQL sorgu komutu veya bağlama tarafından yürütülen saklı yordamın adı.
connectionStringSetting Gerekli. Sorgunun veya saklı yordamın yürütülmekte olduğu veritabanı için bağlantı dizesi içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkeni adına çözümlenmelidir.
commandType Gerekli. Sorgu için "Metin" ve saklı yordam için "StoredProcedure" olan CommandType değeri.
ad Gerekli. İşlev bağlamasının benzersiz adı.
parametreler isteğe bağlı. Yürütme sırasında tek bir dize olarak komuta geçirilen sıfır veya daha fazla parametre değeri. biçimine @param1=param1,@param2=param2uygun olmalıdır. Parametre adı ve parametre değeri virgül (,) veya eşittir işareti (=) içeremez.

Yapılandırma

Aşağıdaki tabloda, yöntemine geçirilen options nesnede input.sql() ayarlayabileceğiniz özellikler açıklanmaktadır.

Özellik Açıklama
commandText Gerekli. Transact-SQL sorgu komutu veya bağlama tarafından yürütülen saklı yordamın adı.
connectionStringSetting Gerekli. Sorgunun veya saklı yordamın yürütülmekte olduğu veritabanı için bağlantı dizesi içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkeni adına çözümlenmelidir. sql bağlamaları bağlantısını daraltmak için bağlantı dizesi değerindeki isteğe bağlı anahtar sözcükler kullanılabilir.
commandType Gerekli. Sorgu için Metin ve saklı yordam için StoredProcedure olan CommandType değeri.
parametreler isteğe bağlı. Yürütme sırasında tek bir dize olarak komuta geçirilen sıfır veya daha fazla parametre değeri. biçimine @param1=param1,@param2=param2uygun olmalıdır. Parametre adı ve parametre değeri virgül (,) veya eşittir işareti (=) içeremez.

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Açıklama
türü Gerekli. olarak ayarlanmalıdır sql.
yön Gerekli. olarak ayarlanmalıdır in.
ad Gerekli. Sorguyu temsil eden değişkenin adı işlev koduyla sonuç alır.
commandText Gerekli. Transact-SQL sorgu komutu veya bağlama tarafından yürütülen saklı yordamın adı.
connectionStringSetting Gerekli. Sorgunun veya saklı yordamın yürütülmekte olduğu veritabanı için bağlantı dizesi içeren bir uygulama ayarının adı. Bu değer gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkeni adına çözümlenmelidir. sql bağlamaları bağlantısını daraltmak için bağlantı dizesi değerindeki isteğe bağlı anahtar sözcükler kullanılabilir.
commandType Gerekli. Sorgu için Metin ve saklı yordam için StoredProcedure olan CommandType değeri.
parametreler isteğe bağlı. Yürütme sırasında tek bir dize olarak komuta geçirilen sıfır veya daha fazla parametre değeri. biçimine @param1=param1,@param2=param2uygun olmalıdır. Parametre adı ve parametre değeri virgül (,) veya eşittir işareti (=) içeremez.

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues ekleyin.

Kullanım

Bağlama tanımı SQL komut metnini, komut türünü, parametreleri ve bağlantı dizesi ayar adını içerir. Komut, komut türüne sahip bir Transact-SQL (T-SQL) sorgusu veya komut türüne System.Data.CommandType.TextSystem.Data.CommandType.StoredProceduresahip saklı yordam adı olabilir.

Giriş bağlaması tarafından yürütülen sorgular, bağlamaya geçirilen parametre değerlerinden SQL ekleme riskini azaltmak için Microsoft.Data.SqlClient'da parametrelendirilir.

SQL giriş bağlaması yürütürken bir özel durum oluşursa işlev kodu yürütülmüyor demektir. Bu davranış, 500 hata kodu döndüren HTTP tetikleyicisi gibi bir hata kodunun döndürülmesiyle sonuçlanabilir.

Bağlantılar

Bu özellik, connectionStringSetting uygulama ayarlarında bir anahtara ayarlanır ve bu anahtar, Functions çalışma zamanında uzantının kullandığı Azure SQL veya SQL Server veritabanına bağlanmak için kullanılan bir değeri döndürür. Bağlantı özellik ayarının değeri, bağlantı türüne bağlıdır:

  • Yönetilen kimlik bağlantısı: Özellik, connectionStringSetting sırlar olmadan kimlik doğrulama için kullanılan Authentication=Active Directory Managed Identity bir bağlantı dizesi döndürür. Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği kullanabilirsiniz. Daha fazla bilgi için bkz. Yönetilen kimlik ile bir fonksiyon uygulamasını Azure SQL'e bağla ve Identify identity bağlantılarını tanımla.
  • Key Vault referansı: Özellik connectionStringSetting ayarı, bağlantı dizesi'in merkezi olarak korunduğu konuma Azure Key Vault referansı döner. Daha fazla bilgi için Define Key Vault bağlantılarını tanımla.
  • App Configuration referansı: Özellik connectionStringSetting ayarı, bağlantı dizesi veya Key Vault referansı döndüren bir Azure Uygulama Yapılandırması referansı döndürür. Daha fazla bilgi için connections makalesindeki Azure Uygulama Yapılandırması'a bakınız.
  • Connection string: Özellik connectionStringSetting ayarı gerçek SQL bağlantı dizesi'i döndürür. Çünkü bağlantı dizesi kimlik bilgilerini içerebilir, bu yüzden yönetilen bir kimlik bağlantısı kullanmalı veya en azından bağlantı dizesi'i Key Vault'ta saklamalısınız. Daha fazla bilgi için bkz. Bağlantıları tanımlar.

Bağlama bağlantıları hakkında daha fazla bilgi edinmek için Manage connections in Azure İşlevleri bölümüne bakınız.

bağlantı dizesi Microsoft'a iletiliyor. Data.SqlClient ve SqlClient ConnectionString dokümantasyonunda tanımlanan tüm anahtar kelimeleri destekler. Önemli anahtar sözcükler şunlardır:

  • Authentication: Connect to Azure SQL with Microsoft Entra ID. Yönetilen kimlikler için ayarlandı Active Directory Managed Identity . Daha fazla bilgi için bkz. Connect a function app to Azure SQL with managed identity.
  • Command Timeout: Bir sorguyu sonlandırmadan önce belirli bir süreyi saniyeler içinde bekleyin (varsayılan 30 saniye).
  • ConnectRetryCount: Otomatik olarak ek yeniden bağlantı girişimleri yapın, özellikle Azure SQL Veritabanı serverless tier (default 1) için geçerlidir.
  • Pooling: Performansı artırmak için veritabanına bağlantıları yeniden kullanın (varsayılan true). Bağlantı havuzu için ek ayarlar arasında Connection Lifetime, Max Pool Sizeve Min Pool Sizebulunur. ADO.NET dokümantasyonunda daha fazla bilgi edinebilirsiniz.

Sonraki adımlar