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
C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:
- Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. LTS ve .NET ve .NET Framework dışındaki sürümlerde çalışan C# işlevlerini desteklemek için yalıtılmış çalışan işlemi gereklidir.
- İşlem içi model: İşlevler ç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 ve sorgudan okunan ve sonuçları HTTP yanıtında döndüren bir Java işlevindeki SQL giriş bağlaması gösterilmektedir.
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 ve sorgu dizesinden bir parametreye göre filtrelenmiş bir sorgudan okunan ve HTTP yanıtında satırı döndüren bir Java işlevindeki SQL giriş bağlaması gösterilmektedir.
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 ve HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürüten bir Java işlevindeki SQL giriş bağlaması gösterilmektedir.
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, HTTP isteği tarafından tetiklenen ve sorgudan okunan ve HTTP yanıtında sonuçları döndüren bir SQL giriş bağlaması gösterilmektedir.
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, HTTP isteği tarafından tetiklenen ve sorgu dizesindeki bir parametre tarafından filtrelenmiş bir sorgudan okunan ve HTTP yanıtında satırı döndüren bir SQL giriş bağlaması gösterilmektedir.
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 ve HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürüten bir SQL giriş bağlaması gösterilmektedir.
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 ve sorgudan okunan ve SONUÇLARı HTTP yanıtında döndüren bir PowerShell işlevi gösterilmektedir.
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, PowerShell işlevinde HTTP isteği tarafından tetiklenen ve sorgu dizesinden bir parametreye göre filtrelenmiş bir sorgudan okunan ve HTTP yanıtında satırı döndüren bir SQL giriş bağlaması gösterilmektedir.
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 ve HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürüten bir PowerShell işlevi gösterilmektedir.
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 BIR HTTP isteği tarafından tetiklenen ve sorgudan okuyan ve HTTP yanıtında sonuçları döndüren bir Python işlevi gösterilmektedir.
aşağıda function_app.py dosyası için örnek python kodu verilmiştir:
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")
@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, Python işlevinde HTTP isteği tarafından tetiklenen ve sorgu dizesindeki bir parametreye göre filtrelenmiş bir sorgudan okunan ve HTTP yanıtında satırı döndüren bir SQL giriş bağlaması gösterilmektedir.
aşağıda function_app.py dosyası için örnek python kodu verilmiştir:
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 ve HTTP isteği sorgu parametresinden giriş içeren bir saklı yordam yürüten bir Python işlevi gösterilmektedir.
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ğıda function_app.py dosyası için örnek python kodu verilmiştir:
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=param2 uygun olmalıdır. Parametre adı veya 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ı (com.microsoft.azure.functions.sql.annotation.SQLInput
) kullanın@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=param2 uygun olmalıdır. Parametre adı veya parametre değeri virgül (, ) veya eşittir işareti (= ) içeremez. |
Yapılandırma
Aşağıdaki tabloda, yöntemine geçirilen input.sql()
nesnede options
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=param2 uygun olmalıdır. Parametre adı veya 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 |
---|---|
type | Gerekli. olarak ayarlanmalıdır sql . |
direction | 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=param2 uygun olmalıdır. Parametre adı veya 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ına Values
ekleyin.
Kullanım
Özniteliğin oluşturucusunun SQL komut metni, komut türü, parametreler ve bağlantı dizesi ayar adı alır. Komut, komut türüne sahip bir Transact-SQL (T-SQL) sorgusu veya komut türüne System.Data.CommandType.Text
System.Data.CommandType.StoredProcedure
sahip saklı yordam adı olabilir. bağlantı dizesi ayarı adı, Azure SQL veya SQL Server örneğine bağlantı dizesi içeren uygulama ayarına (local.settings.json
yerel geliştirme için) karşılık gelir.
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ülemez. Bu, 500 hata kodu döndüren HTTP tetikleyicisi gibi bir hata kodunun döndürülmesiyle sonuçlanabilir.