ربط إخراج Azure SQL لوظائف Azure

يتيح لك ربط إخراج Azure SQL الكتابة إلى قاعدة بيانات.

للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.

هام

تستخدم هذه المقالة علامات التبويب لدعم إصدارات متعددة من نموذج البرمجة Node.js. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور دالات Azure Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.

للحصول على مثال كامل من طرف إلى طرف لاستخدام ربط إخراج Azure SQL، راجع Respond قاعدة بيانات Azure SQL التغييرات باستخدام دالات Azure.

الأمثلة

دعم Go غير متوفر حاليا لهذا الربط.

يمكنك إنشاء دالة C# باستخدام أحد أوضاع C# التالية:

  • نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. مطلوب عملية عامل معزولة لدعم وظائف C# التي تعمل على إصدارات الدعم طويل المدى (LTS) والإصدارات غير LTS ل .NET و.NET Framework.
  • نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل دالات Azure.
  • البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.

هام

سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.

يتوفر المزيد من العينات لربط إخراج Azure SQL في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تُشير الأمثلة إلى فئة ToDoItem وجدول قاعدة بيانات مطابق:

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
);

لإرجاع روابط إخراج متعددة في عيناتنا، نقوم بإنشاء نوع إرجاع مخصص:

public static class OutputType
{
    [SqlOutput("dbo.ToDo", connectionStringSetting: "SqlConnectionString")]
    public static ToDoItem ToDoItem { get; set; }
    public static HttpResponseData HttpResponse { get; set; }
}

مشغل HTTP، اكتب سجلاً واحداً

يظهر المثال التالي دالة C# التي تضيف سجلا إلى قاعدة بيانات، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON. كائن الإرجاع هو الفئة التي OutputType أنشأناها لمعالجة كل من استجابة HTTP وربط إخراج SQL.

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، اكتب على جدولين

يوضح المثال التالي دالة C# التي تضيف سجلات إلى قاعدة بيانات في جدولين مختلفين (dbo.ToDo وdbo.RequestLog)، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON وروابط إخراج متعددة.

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

لاستخدام ربط إخراج إضافي، نضيف فئة للفئة RequestLog الخاصة بنا 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; }
    }

}

يتوفر المزيد من العينات لربط إخراج Azure SQL في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تشير الأمثلة ToDoItem إلى فئة (في ملف ToDoItem.javaمنفصل) وجدول قاعدة بيانات مطابق:

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، اكتب سجلا إلى جدول

يوضح المثال التالي ربط إخراج SQL في دالة Java التي تضيف سجلا إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON. تأخذ الدالة تبعية أخرى على مكتبة com.google.code.gson لتحليل نص JSON.

<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، اكتب على جدولين

يوضح المثال التالي ربط إخراج SQL في دالة JavaS التي تضيف سجلات إلى قاعدة بيانات في جدولين مختلفين (dbo.ToDo و dbo.RequestLog)، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON وروابط إخراج متعددة. تأخذ الدالة تبعية أخرى على مكتبة com.google.code.gson لتحليل نص JSON.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

الجدول الثاني، dbo.RequestLog، يتوافق مع التعريف التالي:

CREATE TABLE dbo.RequestLog (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    RequestTimeStamp DATETIME2 NOT NULL DEFAULT(GETDATE()),
    ItemCount INT NOT NULL
)

وفئة Java في RequestLog.java:

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();
    }
}

يتوفر المزيد من العينات لربط إخراج Azure SQL في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تُشير الأمثلة إلى جدول قاعدة البيانات:

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، اكتب السجلات إلى جدول

يوضح المثال التالي ربط إخراج SQL الذي يضيف سجلات إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON.

مشغل HTTP، اكتب على جدولين

يوضح المثال التالي ربط إخراج SQL الذي يضيف سجلات إلى قاعدة بيانات في جدولين مختلفين (dbo.ToDo و dbo.RequestLog)، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON وروابط إخراج متعددة.

الجدول الثاني، dbo.RequestLog، يتوافق مع التعريف التالي:

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

يتوفر المزيد من العينات لربط إخراج Azure SQL في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تُشير الأمثلة إلى جدول قاعدة البيانات:

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، اكتب السجلات إلى جدول

يوضح المثال التالي ربط إخراج SQL في ملف function.json ودالة PowerShell التي تضيف سجلات إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON.

فيما يلي هو ربط البيانات في ملف function.json:

{
    "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"
}

قسم التكوين يشرح هذه الخصائص.

فيما يلي نموذج التعليمات البرمجية PowerShell للدالة في 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، اكتب على جدولين

يظهر المثال التالي ربط إخراج SQL في ملف function.json ودالة PowerShell التي تضيف سجلات إلى قاعدة بيانات في جدولين مختلفين (dbo.ToDo و dbo.RequestLog)، باستخدام البيانات المقدمة في طلب HTTP POST كنص JSON وروابط إخراج متعددة.

الجدول الثاني، dbo.RequestLog، يتوافق مع التعريف التالي:

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

فيما يلي هو ربط البيانات في ملف function.json:

{
    "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"
}

قسم التكوين يشرح هذه الخصائص.

فيما يلي نموذج التعليمات البرمجية PowerShell للدالة في 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
})

يتوفر المزيد من العينات لربط إخراج Azure SQL في مستودع GitHub.

يحتوي هذا القسم على الأمثلة التالية:

تُشير الأمثلة إلى جدول قاعدة البيانات:

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، اكتب السجلات إلى جدول

يوضح المثال التالي ربط إخراج SQL في ملف function.json ودالة Python التي تضيف سجلات إلى جدول، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON.

فيما يلي نموذج التعليمات البرمجية python لملف function_app.py:

import json
import logging
import azure.functions as func

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، اكتب على جدولين

يظهر المثال التالي ربط إخراج SQL في ملف function.json ودالة Python التي تضيف سجلات إلى قاعدة بيانات في جدولين مختلفين (dbo.ToDo و dbo.RequestLog)، باستخدام البيانات المتوفرة في طلب HTTP POST كنص JSON وروابط إخراج متعددة.

الجدول الثاني، dbo.RequestLog، يتوافق مع التعريف التالي:

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

فيما يلي نموذج التعليمات البرمجية python لملف function_app.py:

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
        )

السمات

تستخدم مكتبة C# السمة SqlAttribute للإعلان عن روابط SQL على الدالة، والتي تحتوي على الخصائص التالية:

خاصية السمة ‏‏الوصف
نص الأوامر مطلوب. اسم الجدول الذي يتم كتابته بواسطة الربط.
ConnectionStringSetting مطلوب. اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات عليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة.

تعليقات توضيحية

في مكتبة وقت تشغيل وظائف Java، استخدم @SQLOutput التعليق التوضيحي (com.microsoft.azure.functions.sql.annotation.SQLOutput) على المعلمات التي تأتي قيمتها من Azure SQL. يدعم هذا التعليق التوضيحي العناصر التالية:

العنصر ‏‏الوصف
نص الأمر مطلوب. اسم الجدول الذي يتم كتابته بواسطة الربط.
connectionStringSetting مطلوب. اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات عليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة.
الاسم مطلوب. الاسم الفريد لربط الدالة.

التكوين

يوضح الجدول التالي الخصائص التي يمكنك تعيينها على الكائن الذي options تم تمريره output.sql() إلى الأسلوب .

الخاصية ‏‏الوصف
نص الأمر مطلوب. اسم الجدول الذي يتم كتابته بواسطة الربط.
connectionStringSetting مطلوب. اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات عليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة. تتوفر الكلمات الأساسية الاختيارية في قيمة سلسلة الاتصال لتحسين اتصال روابط SQL.

التكوين

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

خاصية function.json ‏‏الوصف
النوع مطلوب. يجب تعيينه إلى sql.
الاتجاه مطلوب. يجب تعيينه إلى out.
الاسم مطلوب. اسم المتغيّر الذي يمثل الكيان في التعليمة البرمجية الوظيفة.
نص الأمر مطلوب. اسم الجدول الذي يتم كتابته بواسطة الربط.
connectionStringSetting مطلوب. اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال لقاعدة البيانات التي تتم كتابة البيانات عليها. هذه القيمة ليست سلسلة الاتصال الفعلية ويجب حلها بدلا من ذلك إلى متغير بيئة. تتوفر الكلمات الأساسية الاختيارية في قيمة سلسلة الاتصال لتحسين اتصال روابط SQL.

عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.

الاستخدام

الخاصية CommandText هي اسم الجدول الذي سيتم تخزين البيانات فيه.

تستخدم روابط الإخراج عبارة T-SQL MERGE التي تتطلب أذونات SELECT على قاعدة البيانات الهدف.

إذا حدث استثناء عند تنفيذ ربط إخراج SQL، فإن التعليمة البرمجية للدالة تتوقف عن التنفيذ. قد يؤدي هذا السلوك إلى إرجاع رمز خطأ، مثل مشغل HTTP الذي يرجع رمز خطأ 500. IAsyncCollector إذا تم استخدام في دالة .NET، يمكن للتعليمات البرمجية للدالة معالجة الاستثناءات التي يطرحها الاستدعاء إلى FlushAsync().

الاتصالات

يتم تعيين connectionStringSetting الخاصية على مفتاح في إعدادات التطبيق يعيد قيمة تستخدم في وقت تشغيل الدوال للاتصال بقاعدة بيانات Azure SQL أو SQL Server المستخدمة في الامتداد. تعتمد قيمة إعداد خاصية الاتصال على نوع الاتصال:

  • اتصال الهوية المدار:connectionStringSetting تعيد الخاصية سلسلة سلسلة الاتصال تستخدمها Authentication=Active Directory Managed Identity للمصادقة بدون أسرار. يمكنك استخدام هوية مدارة معينة من قبل النظام أو معينة من قبل المستخدم. لمزيد من المعلومات، راجع Connect a function app to Azure SQL with managed identity و Define identity connections.
  • Key Vault reference: connectionStringSetting إعداد الخاصية يعيد مرجع Azure Key Vault إلى الموقع الذي يتم فيه صيانة سلسلة الاتصال بشكل مركزي. لمزيد من المعلومات، راجع تعريف اتصالات Key Vault.
  • مرجع App Configuration: connectionStringSetting إعداد الخاصية يعيد مرجع تكوين Azure App يعيد سلسلة سلسلة الاتصال أو مرجع Key Vault. لمزيد من المعلومات، راجع تكوين Azure App في مقالة الاتصالات.
  • Connection string: connectionStringSetting إعداد الخاصية يعيد سلسلة سلسلة الاتصال الحقيقية في SQL. نظرا لأن سلسلة الاتصال قد يحتوي على بيانات اعتماد، يجب عليك استخدام اتصال Managed Identity أو على الأقل تخزين سلسلة الاتصال في Key Vault. لمزيد من المعلومات، راجع تعريف الروابط.

لمعرفة المزيد عن روابط الbindings، راجع إدارة الاتصالات في دالات Azure.

يتم تمرير سلسلة الاتصال إلى Microsoft. Data.SqlClient ويدعم جميع الكلمات المفتاحية المعرفة في وثائق SqlClient ConnectionString. تشمل الكلمات الأساسية البارزة ما يلي:

  • Authentication: Connect to Azure SQL with Microsoft Entra ID. ضبطه على Active Directory Managed Identity الهويات المدارة. لمزيد من المعلومات، راجع Connect a function app to Azure SQL with managed identity.
  • Command Timeout: انتظر وقتا محددا بالثواني قبل إنهاء الاستعلام (الافتراضي 30 ثانية).
  • ConnectRetryCount: قم بمحاولات إعادة الاتصال الإضافية تلقائيا، خاصة في المستوى الخالي من الخادم في قاعدة بيانات Azure SQL (الافتراضي 1).
  • Pooling: إعادة استخدام الاتصالات مع قاعدة البيانات لتحسين الأداء (الافتراضي true). تتضمن Connection Lifetimeالإعدادات الإضافية لتجميع الاتصال و Max Pool Sizeو.Min Pool Size تعرف على المزيد في وثائق ADO.NET.

الخطوات التالية