Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
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:
- HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma
- HTTP tetikleyicisi, yol verilerinden birden çok satır alma
- HTTP tetikleyicisi, satırları silme
Ö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:
- HTTP tetikleyicisi, birden çok satır alma
- HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma
- HTTP tetikleyicisi, satırları silme
Ö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:
- HTTP tetikleyicisi, birden çok satır alma
- HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma
- HTTP tetikleyicisi, satırları silme
Ö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.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo',
commandType: 'Text',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
}
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo',
commandType: 'Text',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: (request, context) => {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
},
});
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.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id',
commandType: 'Text',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItem = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItem,
};
}
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id',
commandType: 'Text',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: (request, context) => {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItem = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItem,
};
},
});
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
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const sqlInput = input.sql({
commandText: 'DeleteToDo',
commandType: 'StoredProcedure',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
}
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const sqlInput = input.sql({
commandText: 'DeleteToDo',
commandType: 'StoredProcedure',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: (request, context) => {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
},
});
GitHub deposunda Azure SQL giriş bağlaması için daha fazla örnek mevcuttur.
Bu bölüm aşağıdaki örnekleri içerir:
- HTTP tetikleyicisi, birden çok satır alma
- HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma
- HTTP tetikleyicisi, satırları silme
Ö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:
- HTTP tetikleyicisi, birden çok satır alma
- HTTP tetikleyicisi, sorgu dizesinden kimliğine göre satır alma
- HTTP tetikleyicisi, satırları silme
Ö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. bağlantı dizesi ayarı adı, Azure SQL veya SQL Server örneğine bağlantı dizesilocal.settings.jsonuygulama ayarına (yerel geliştirme için) karşılık gelir.
Önemli
En iyi güvenlik için, İşlevler ve Azure SQL Veritabanı arasındaki bağlantılar için yönetilen kimliklerle Microsoft Entra Id kullanmalısınız. Yönetilen kimlikler, bağlantı dizesi kimlik bilgileri, sunucu adları ve kullanılan bağlantı noktaları gibi uygulama dağıtımlarınızdaki gizli dizileri ortadan kaldırarak uygulamanızı daha güvenli hale getirir. Bu öğreticide yönetilen kimlikleri kullanmayı öğrenebilirsiniz: Yönetilen kimlik ve SQL bağlamaları ile bir işlev uygulamasını Azure SQL'e bağlama.
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.