Azure İşlevleri için Azure SQL çıkış bağlaması
Azure SQL çıkış bağlaması bir veritabanına yazmanızı sağlar.
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 çıkış 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
);
Örneklerimizde birden çok çıkış bağlaması döndürmek için özel bir dönüş türü oluşturacağız:
public static class OutputType
{
[SqlOutput("dbo.ToDo", connectionStringSetting: "SqlConnectionString")]
public ToDoItem ToDoItem { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
HTTP tetikleyicisi, bir kayıt yazma
Aşağıdaki örnekte, BIR HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak veritabanına kayıt ekleyen bir C# işlevi gösterilmektedir. Dönüş nesnesi, hem HTTP yanıtını OutputType
hem de SQL çıkış bağlamasını işlemek için oluşturduğumuz sınıftır.
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace AzureSQL.ToDo
{
public static class PostToDo
{
// create a new ToDoItem from body object
// uses output binding to insert new item into ToDo table
[FunctionName("PostToDo")]
public static async Task<OutputType> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "PostFunction")] HttpRequestData req,
FunctionContext executionContext)
{
var logger = executionContext.GetLogger("PostToDo");
logger.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
ToDoItem toDoItem = JsonConvert.DeserializeObject<ToDoItem>(requestBody);
// generate a new id for the todo item
toDoItem.Id = Guid.NewGuid();
// set Url from env variable ToDoUri
toDoItem.url = Environment.GetEnvironmentVariable("ToDoUri")+"?id="+toDoItem.Id.ToString();
// if completed is not provided, default to false
if (toDoItem.completed == null)
{
toDoItem.completed = false;
}
return new OutputType()
{
ToDoItem = toDoItem,
HttpResponse = req.CreateResponse(System.Net.HttpStatusCode.Created)
}
}
}
public static class OutputType
{
[SqlOutput("dbo.ToDo", connectionStringSetting: "SqlConnectionString")]
public ToDoItem ToDoItem { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
}
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, bir HTTP POST isteğinde JSON gövdesi ve birden çok çıkış bağlaması olarak sağlanan verileri kullanarak iki farklı tablodaki (dbo.ToDo
ve dbo.RequestLog
) bir veritabanına kayıt ekleyen bir C# işlevi gösterilmektedir.
CREATE TABLE dbo.RequestLog (
Id int identity(1,1) primary key,
RequestTimeStamp datetime2 not null,
ItemCount int not null
)
Ek çıkış bağlaması kullanmak için RequestLog
sınıfımızı ekler ve değiştiririz OutputType
:
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace AzureSQL.ToDo
{
public static class PostToDo
{
// create a new ToDoItem from body object
// uses output binding to insert new item into ToDo table
[FunctionName("PostToDo")]
public static async Task<OutputType> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "PostFunction")] HttpRequestData req,
FunctionContext executionContext)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
ToDoItem toDoItem = JsonConvert.DeserializeObject<ToDoItem>(requestBody);
// generate a new id for the todo item
toDoItem.Id = Guid.NewGuid();
// set Url from env variable ToDoUri
toDoItem.url = Environment.GetEnvironmentVariable("ToDoUri")+"?id="+toDoItem.Id.ToString();
// if completed is not provided, default to false
if (toDoItem.completed == null)
{
toDoItem.completed = false;
}
requestLog = new RequestLog();
requestLog.RequestTimeStamp = DateTime.Now;
requestLog.ItemCount = 1;
return new OutputType()
{
ToDoItem = toDoItem,
RequestLog = requestLog,
HttpResponse = req.CreateResponse(System.Net.HttpStatusCode.Created)
}
}
}
public class RequestLog {
public DateTime RequestTimeStamp { get; set; }
public int ItemCount { get; set; }
}
public static class OutputType
{
[SqlOutput("dbo.ToDo", connectionStringSetting: "SqlConnectionString")]
public ToDoItem ToDoItem { get; set; }
[SqlOutput("dbo.RequestLog", connectionStringSetting: "SqlConnectionString")]
public RequestLog RequestLog { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
}
GitHub deposunda Azure SQL çıkış 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, tabloya kayıt yazma
Aşağıdaki örnekte, HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak tabloya kayıt ekleyen bir Java işlevindeki SQL çıkış bağlaması gösterilmektedir. İşlev, JSON gövdesini ayrıştırmak için com.google.code.gson kitaplığına ek bir bağımlılık alır.
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.sql.annotation.SQLOutput;
import com.google.gson.Gson;
import java.util.Optional;
public class PostToDo {
@FunctionName("PostToDo")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
@SQLOutput(
name = "toDoItem",
commandText = "dbo.ToDo",
connectionStringSetting = "SqlConnectionString")
OutputBinding<ToDoItem> output) {
String json = request.getBody().get();
Gson gson = new Gson();
ToDoItem newToDo = gson.fromJson(json, ToDoItem.class);
newToDo.Id = UUID.randomUUID();
output.setValue(newToDo);
return request.createResponseBuilder(HttpStatus.CREATED).header("Content-Type", "application/json").body(output).build();
}
}
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, bir HTTP POST isteğinde JSON gövdesi ve birden çok çıkış bağlaması olarak sağlanan verileri kullanarak iki farklı tablodaki (dbo.ToDo
ve dbo.RequestLog
) bir veritabanına kayıt ekleyen bir JavaS işlevindeki SQL çıkış bağlaması gösterilmektedir. İşlev, JSON gövdesini ayrıştırmak için com.google.code.gson kitaplığına ek bir bağımlılık alır.
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
İkinci tablo olan dbo.RequestLog
, aşağıdaki tanıma karşılık gelir:
CREATE TABLE dbo.RequestLog (
Id INT IDENTITY(1,1) PRIMARY KEY,
RequestTimeStamp DATETIME2 NOT NULL DEFAULT(GETDATE()),
ItemCount INT NOT NULL
)
ve içindeki RequestLog.java
Java sınıfı:
package com.function;
import java.util.Date;
public class RequestLog {
public int Id;
public Date RequestTimeStamp;
public int ItemCount;
public RequestLog() {
}
public RequestLog(int Id, Date RequestTimeStamp, int ItemCount) {
this.Id = Id;
this.RequestTimeStamp = RequestTimeStamp;
this.ItemCount = ItemCount;
}
}
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.sql.annotation.SQLOutput;
import com.google.gson.Gson;
import java.util.Optional;
public class PostToDoWithLog {
@FunctionName("PostToDoWithLog")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
@SQLOutput(
name = "toDoItem",
commandText = "dbo.ToDo",
connectionStringSetting = "SqlConnectionString")
OutputBinding<ToDoItem> output,
@SQLOutput(
name = "requestLog",
commandText = "dbo.RequestLog",
connectionStringSetting = "SqlConnectionString")
OutputBinding<RequestLog> outputLog,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
String json = request.getBody().get();
Gson gson = new Gson();
ToDoItem newToDo = gson.fromJson(json, ToDoItem.class);
newToDo.Id = UUID.randomUUID();
output.setValue(newToDo);
RequestLog newLog = new RequestLog();
newLog.ItemCount = 1;
outputLog.setValue(newLog);
return request.createResponseBuilder(HttpStatus.CREATED).header("Content-Type", "application/json").body(output).build();
}
}
GitHub deposunda Azure SQL çıkış 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, tabloya kayıt yazma
Aşağıdaki örnekte, BIR HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak bir tabloya kayıt ekleyen bir SQL çıkış bağlaması gösterilmektedir.
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const sqlOutput = output.sql({
commandText: 'dbo.ToDo',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL output binding function processed a request.');
const body = await request.json();
context.extraOutputs.set(sqlOutput, body);
return { status: 201 };
}
app.http('httpTrigger1', {
methods: ['POST'],
authLevel: 'anonymous',
extraOutputs: [sqlOutput],
handler: httpTrigger1,
});
const { app, output } = require('@azure/functions');
const sqlOutput = output.sql({
commandText: 'dbo.ToDo',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['POST'],
authLevel: 'anonymous',
extraOutputs: [sqlOutput],
handler: async (request, context) => {
context.log('HTTP trigger and SQL output binding function processed a request.');
const body = await request.json();
context.extraOutputs.set(sqlOutput, body);
return { status: 201 };
},
});
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, BIR HTTP POST isteğinde JSON gövdesi ve birden çok çıkış bağlaması olarak sağlanan verileri kullanarak iki farklı tablodaki (dbo.ToDo
ve dbo.RequestLog
) bir veritabanına kayıt ekleyen bir SQL çıkış bağlaması gösterilmektedir.
İkinci tablo olan dbo.RequestLog
, aşağıdaki tanıma karşılık gelir:
CREATE TABLE dbo.RequestLog (
Id int identity(1,1) primary key,
RequestTimeStamp datetime2 not null,
ItemCount int not null
)
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const sqlTodoOutput = output.sql({
commandText: 'dbo.ToDo',
connectionStringSetting: 'SqlConnectionString',
});
const sqlRequestLogOutput = output.sql({
commandText: 'dbo.RequestLog',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL output binding function processed a request.');
const newLog = {
RequestTimeStamp: Date.now(),
ItemCount: 1,
};
context.extraOutputs.set(sqlRequestLogOutput, newLog);
const body = await request.json();
context.extraOutputs.set(sqlTodoOutput, body);
return { status: 201 };
}
app.http('httpTrigger1', {
methods: ['POST'],
authLevel: 'anonymous',
extraOutputs: [sqlTodoOutput, sqlRequestLogOutput],
handler: httpTrigger1,
});
const { app, output } = require('@azure/functions');
const sqlTodoOutput = output.sql({
commandText: 'dbo.ToDo',
connectionStringSetting: 'SqlConnectionString',
});
const sqlRequestLogOutput = output.sql({
commandText: 'dbo.RequestLog',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['POST'],
authLevel: 'anonymous',
extraOutputs: [sqlTodoOutput, sqlRequestLogOutput],
handler: async (request, context) => {
context.log('HTTP trigger and SQL output binding function processed a request.');
const newLog = {
RequestTimeStamp: Date.now(),
ItemCount: 1,
};
context.extraOutputs.set(sqlRequestLogOutput, newLog);
const body = await request.json();
context.extraOutputs.set(sqlTodoOutput, body);
return { status: 201 };
},
});
GitHub deposunda Azure SQL çıkış 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, tabloya kayıt yazma
Aşağıdaki örnekte, bir function.json dosyasındaki SQL çıkış bağlaması ve HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak bir tabloya kayıt ekleyen 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": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"name": "todoItems",
"type": "sql",
"direction": "out",
"commandText": "dbo.ToDo",
"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
:
```powershell
using namespace System.Net
param($Request)
Write-Host "PowerShell function with SQL Output Binding processed a request."
# Update req_body with the body of the request
$req_body = $Request.Body
# Assign the value we want to pass to the SQL Output binding.
# The -Name value corresponds to the name property in the function.json for the binding
Push-OutputBinding -Name todoItems -Value $req_body
Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $req_body
})
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, bir function.json dosyasındaki SQL çıkış bağlaması ve HTTP POST isteğinde JSON gövdesi ve birden çok çıkış bağlaması olarak sağlanan verileri kullanarak iki farklı tablodaki (dbo.ToDo
ve dbo.RequestLog
) bir veritabanına kayıt ekleyen bir PowerShell işlevi gösterilmektedir.
İkinci tablo olan dbo.RequestLog
, aşağıdaki tanıma karşılık gelir:
CREATE TABLE dbo.RequestLog (
Id int identity(1,1) primary key,
RequestTimeStamp datetime2 not null,
ItemCount int not null
)
Function.json dosyasındaki verileri bağlama aşağıdadır:
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"name": "todoItems",
"type": "sql",
"direction": "out",
"commandText": "dbo.ToDo",
"connectionStringSetting": "SqlConnectionString"
},
{
"name": "requestLog",
"type": "sql",
"direction": "out",
"commandText": "dbo.RequestLog",
"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)
Write-Host "PowerShell function with SQL Output Binding processed a request."
# Update req_body with the body of the request
$req_body = $Request.Body
$new_log = @{
RequestTimeStamp = [DateTime]::Now
ItemCount = 1
}
Push-OutputBinding -Name todoItems -Value $req_body
Push-OutputBinding -Name requestLog -Value $new_log
Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $req_body
})
GitHub deposunda Azure SQL çıkış 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, tabloya kayıt yazma
Aşağıdaki örnekte, bir function.json dosyasındaki SQL çıkış bağlaması ve HTTP POST isteğinde JSON gövdesi olarak sağlanan verileri kullanarak tabloya kayıt ekleyen 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="AddToDo")
@app.route(route="addtodo")
@app.sql_output(arg_name="todo",
command_text="[dbo].[ToDo]",
connection_string_setting="SqlConnectionString")
def add_todo(req: func.HttpRequest, todo: func.Out[func.SqlRow]) -> func.HttpResponse:
body = json.loads(req.get_body())
row = func.SqlRow.from_dict(body)
todo.set(row)
return func.HttpResponse(
body=req.get_body(),
status_code=201,
mimetype="application/json"
)
HTTP tetikleyicisi, iki tabloya yazma
Aşağıdaki örnekte, bir function.json dosyasındaki SQL çıkış bağlaması ve HTTP POST isteğinde JSON gövdesi ve birden çok çıkış bağlaması olarak sağlanan verileri kullanarak iki farklı tablodaki (dbo.ToDo
ve dbo.RequestLog
) bir veritabanına kayıt ekleyen bir Python işlevi gösterilmektedir.
İkinci tablo olan dbo.RequestLog
, aşağıdaki tanıma karşılık gelir:
CREATE TABLE dbo.RequestLog (
Id int identity(1,1) primary key,
RequestTimeStamp datetime2 not null,
ItemCount int not null
)
aşağıda function_app.py dosyası için örnek python kodu verilmiştir:
from datetime import datetime
import json
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="PostToDo")
@app.route(route="posttodo")
@app.sql_output(arg_name="todoItems",
command_text="[dbo].[ToDo]",
connection_string_setting="SqlConnectionString")
@app.sql_output(arg_name="requestLog",
command_text="[dbo].[RequestLog]",
connection_string_setting="SqlConnectionString")
def add_todo(req: func.HttpRequest, todoItems: func.Out[func.SqlRow], requestLog: func.Out[func.SqlRow]) -> func.HttpResponse:
logging.info('Python HTTP trigger and SQL output binding function processed a request.')
try:
req_body = req.get_json()
rows = func.SqlRowList(map(lambda r: func.SqlRow.from_dict(r), req_body))
except ValueError:
pass
requestLog.set(func.SqlRow({
"RequestTimeStamp": datetime.now().isoformat(),
"ItemCount": 1
}))
if req_body:
todoItems.set(rows)
return func.HttpResponse(
"OK",
status_code=201,
mimetype="application/json"
)
else:
return func.HttpResponse(
"Error accessing request body",
status_code=400
)
Ö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. Bağlama tarafından yazılmakta olan tablonun adı. |
ConnectionStringSetting | Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesi içeren bir uygulama ayarının adı. Bu gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. |
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.SQLOutput
) kullanın@SQLOutput
. Bu ek açıklama aşağıdaki öğeleri destekler:
Öğe | Açıklama |
---|---|
commandText | Gerekli. Bağlama tarafından yazılmakta olan tablonun adı. |
connectionStringSetting | Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesi içeren bir uygulama ayarının adı. Bu gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. |
ad | Gerekli. İşlev bağlamasının benzersiz adı. |
Yapılandırma
Aşağıdaki tabloda, yöntemine geçirilen output.sql()
nesnede options
ayarlayabileceğiniz özellikler açıklanmaktadır.
Özellik | Açıklama |
---|---|
commandText | Gerekli. Bağlama tarafından yazılmakta olan tablonun adı. |
connectionStringSetting | Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesi içeren bir uygulama ayarının adı. Bu gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. 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. |
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 out . |
ad | Gerekli. İşlev kodundaki varlığı temsil eden değişkenin adı. |
commandText | Gerekli. Bağlama tarafından yazılmakta olan tablonun adı. |
connectionStringSetting | Gerekli. Verilerin yazıldığı veritabanının bağlantı dizesi içeren bir uygulama ayarının adı. Bu gerçek bağlantı dizesi değildir ve bunun yerine bir ortam değişkenine çözümlenmesi gerekir. 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. |
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values
ekleyin.
Kullanım
CommandText
özelliği, verilerin depolandığı tablonun adıdır. bağlantı dizesi ayarı adı, Azure SQL veya SQL Server örneğinin bağlantı dizesi içeren uygulama ayarına karşılık gelir.
Çıkış bağlamaları, hedef veritabanında SELECT izinleri gerektiren T-SQL MERGE deyimini kullanır.
SQL çıkış bağlaması yürütürken bir özel durum oluşursa işlev kodu yürütülmeyi durdurur. Bu, 500 hata kodu döndüren HTTP tetikleyicisi gibi bir hata kodunun döndürülmesiyle sonuçlanabilir. IAsyncCollector
bir .NET işlevinde kullanılıyorsa işlev kodu çağrısı FlushAsync()
tarafından atılan özel durumları işleyebilir.