إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
عند تشغيل دالة، يقوم ربط إدخال البيانات Azure SQL باسترداد البيانات من قاعدة بيانات وتمريرها إلى معلمة الإدخال للدالة.
للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.
هام
تستخدم هذه المقالة علامات التبويب لدعم إصدارات متعددة من نموذج البرمجة Node.js. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور دالات Azure Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.
الأمثلة
دعم Go غير متوفر حاليا لهذا الربط.
يمكنك إنشاء دالة C# باستخدام أحد أوضاع C# التالية:
- نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. مطلوب عملية عامل معزولة لدعم وظائف C# التي تعمل على إصدارات الدعم طويل المدى (LTS) والإصدارات غير LTS ل .NET و.NET Framework.
- نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل دالات Azure.
- البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.
هام
سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.
يتوفر المزيد من العينات لربط إدخال البيانات Azure SQL في مستودع GitHub.
يحتوي هذا القسم على الأمثلة التالية:
- مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
- مشغِّل HTTP، الحصول على سجلات متعددة من بيانات المسار
- مُشغّل HTTP، حذف السجلات
تُشير الأمثلة إلى فئة 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
);
مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
يُظهر المثال التالي دالة C# التي تسترد سجلًا واحدًا. يتم تشغيل الدالة بواسطة طلب HTTP يستخدم سلسلة استعلام لتحديد المعرف. يُستخدم هذا المعرّف لاسترداد سجل ToDoItem باستخدام الاستعلام المحدد.
إشعار
معلمة سلسلة استعلام HTTP حساسة لحالة الأحرف.
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، الحصول على سجلات متعددة من معلمة المسار
يُوضح المثال التالي دالة C# التي تسترد المستندات التي تم إرجاعها بواسطة الاستعلام. يتم تشغيل الدالة بواسطة طلب HTTP يستخدم بيانات المسار لتحديد قيمة معلمة استعلام. يتم استخدام هذه المعلمة لتصفية السجلات ToDoItem في الاستعلام المحدد.
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، حذف السجلات
يُوضح المثال التالي دالة C# التي تنفذ إجراءً مخزنًا مع إدخال من معلمة استعلام طلب HTTP.
يجب إنشاء الإجراء المخزن dbo.DeleteToDo على قاعدة بيانات SQL. وفي هذا المثال، يحذف الإجراء المخزن سجلاً واحدًا أو كافة السجلات اعتمادًا على قيمة المعلمة.
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);
}
}
}
يتوفر المزيد من العينات لربط إدخال البيانات Azure SQL في مستودع GitHub.
يحتوي هذا القسم على الأمثلة التالية:
- مُشغل HTTP، الحصول علي سجلات متعددة
- مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
- مُشغّل HTTP، حذف السجلات
تشير الأمثلة 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 . يقرأ من استعلام ويعيد النتائج في استجابة HTTP.
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، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
يوضح المثال التالي ربط إدخال SQL في دالة Java التي يتم تشغيلها بواسطة طلب HTTP . يقرأ من استعلام، تتم تصفيته بواسطة معلمة من سلسلة الاستعلام، ويعيد الصف في استجابة HTTP.
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، حذف السجلات
يوضح المثال التالي ربط إدخال SQL في دالة Java التي يتم تشغيلها بواسطة طلب HTTP . ينفذ إجراء مخزنا مع إدخال من معلمة استعلام طلب HTTP.
يجب إنشاء الإجراء المخزن dbo.DeleteToDo على قاعدة بيانات SQL. وفي هذا المثال، يحذف الإجراء المخزن سجلاً واحدًا أو كافة السجلات اعتمادًا على قيمة المعلمة.
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();
}
}
يتوفر المزيد من العينات لربط إدخال البيانات Azure SQL في مستودع GitHub.
يحتوي هذا القسم على الأمثلة التالية:
- مُشغل HTTP، الحصول علي سجلات متعددة
- مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
- مُشغّل HTTP، حذف السجلات
تُشير الأمثلة إلى جدول قاعدة البيانات:
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 . يقرأ من استعلام ويعيد النتائج في استجابة HTTP.
مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
يوضح المثال التالي ربط إدخال SQL الذي يتم تشغيله بواسطة طلب HTTP . يقرأ من استعلام، تتم تصفيته بواسطة معلمة من سلسلة الاستعلام، ويعيد الصف في استجابة HTTP.
مُشغّل HTTP، حذف السجلات
يوضح المثال التالي ربط إدخال SQL الذي يتم تشغيله بواسطة طلب HTTP . ينفذ إجراء مخزنا مع إدخال من معلمة استعلام طلب HTTP.
يجب إنشاء الإجراء المخزن dbo.DeleteToDo على قاعدة بيانات SQL. وفي هذا المثال، يحذف الإجراء المخزن سجلاً واحدًا أو كافة السجلات اعتمادًا على قيمة المعلمة.
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
يتوفر المزيد من العينات لربط إدخال البيانات Azure SQL في مستودع GitHub.
يحتوي هذا القسم على الأمثلة التالية:
- مُشغل HTTP، الحصول علي سجلات متعددة
- مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
- مُشغّل HTTP، حذف السجلات
تُشير الأمثلة إلى جدول قاعدة البيانات:
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 . يقرأ من استعلام ويعيد النتائج في استجابة HTTP.
فيما يلي هو ربط البيانات في ملف function.json:
{
"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"
}
قسم التكوين يشرح هذه الخصائص.
فيما يلي نموذج التعليمات البرمجية PowerShell للدالة في 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، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
يوضح المثال التالي ربط إدخال SQL في دالة PowerShell التي يتم تشغيلها بواسطة طلب HTTP . يقرأ من استعلام، تتم تصفيته بواسطة معلمة من سلسلة الاستعلام، ويعيد الصف في استجابة HTTP.
فيما يلي هو ربط البيانات في ملف function.json:
{
"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"
}
قسم التكوين يشرح هذه الخصائص.
فيما يلي نموذج التعليمات البرمجية PowerShell للدالة في 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، حذف السجلات
يوضح المثال التالي ربط إدخال SQL في ملف function.json ودالة PowerShell التي يتم تشغيلها بواسطة طلب HTTP . ينفذ إجراء مخزنا مع إدخال من معلمة استعلام طلب HTTP.
يجب إنشاء الإجراء المخزن dbo.DeleteToDo على قاعدة بيانات SQL. وفي هذا المثال، يحذف الإجراء المخزن سجلاً واحدًا أو كافة السجلات اعتمادًا على قيمة المعلمة.
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"
}
قسم التكوين يشرح هذه الخصائص.
فيما يلي نموذج التعليمات البرمجية PowerShell للدالة في 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
})
يتوفر المزيد من العينات لربط إدخال البيانات Azure SQL في مستودع GitHub.
يحتوي هذا القسم على الأمثلة التالية:
- مُشغل HTTP، الحصول علي سجلات متعددة
- مشغل HTTP، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
- مُشغّل HTTP، حذف السجلات
تُشير الأمثلة إلى جدول قاعدة البيانات:
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 . يقرأ من استعلام ويعيد النتائج في استجابة HTTP.
التعليمات البرمجية ل python التالية هي عينة function_app.py الملف:
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، الحصول على سجل حسب المعرّف من سلسلة الاستعلام
يوضح المثال التالي ربط إدخال SQL في دالة Python التي يتم تشغيلها بواسطة طلب HTTP . يقرأ من استعلام، تتم تصفيته بواسطة معلمة من سلسلة الاستعلام، ويعيد الصف في استجابة HTTP.
التعليمات البرمجية ل python التالية هي عينة function_app.py الملف:
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، حذف السجلات
يوضح المثال التالي ربط إدخال SQL في ملف function.json ودالة Python التي يتم تشغيلها بواسطة طلب HTTP . ينفذ إجراء مخزنا مع إدخال من معلمة استعلام طلب HTTP.
يجب إنشاء الإجراء المخزن dbo.DeleteToDo على قاعدة بيانات SQL. وفي هذا المثال، يحذف الإجراء المخزن سجلاً واحدًا أو كافة السجلات اعتمادًا على قيمة المعلمة.
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
التعليمات البرمجية ل python التالية هي عينة function_app.py الملف:
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"
)
السمات
تستخدم مكتبة C# السمة SqlAttribute للإعلان عن روابط SQL على الدالة، والتي تحتوي على الخصائص التالية:
| خاصية السمة | الوصف |
|---|---|
| نص الأوامر | مطلوب. أمر الاستعلام Transact-SQL أو اسم الإجراء المخزن الذي تم تنفيذه بواسطة الربط. |
| ConnectionStringSetting | مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي يتم تنفيذ الاستعلام أو الإجراء المخزن عليها. هذه ليست سلسلة الاتصال الفعلية ويجب بدلًا من ذلك حلها إلى متغير البيئة. |
| CommandType | مطلوب. قيمة CommandType، وهي نص لاستعلام وStoredProcedure لإجراء مخزن. |
| البارامترات | اختياري. صفر أو أكثر من قيم المُعلمات التي تم تمريرها إلى الأمر أثناء التنفيذ كسلسلة واحدة. ينبغي أن تتبع التنسيق @param1=param1,@param2=param2. لا يمكن أن يحتوي اسم المعلمة وقيمة المعلمة على فاصلة (,) أو علامة يساوي (=). |
تعليقات توضيحية
في مكتبة وقت تشغيل وظائف Java، استخدم @SQLInput التعليق التوضيحي (com.microsoft.azure.functions.sql.annotation.SQLInput) على المعلمات التي تأتي قيمتها من Azure SQL. يدعم هذا التعليق التوضيحي العناصر التالية:
| العنصر | الوصف |
|---|---|
| نص الأمر | مطلوب. أمر الاستعلام Transact-SQL أو اسم الإجراء المخزن الذي تم تنفيذه بواسطة الربط. |
| connectionStringSetting | مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي يتم تنفيذ الاستعلام أو الإجراء المخزن عليها. هذه ليست سلسلة الاتصال الفعلية ويجب بدلًا من ذلك حلها إلى متغير البيئة. |
| نوع الأمر | مطلوب. قيمة CommandType، وهي "نص" لاستعلام و"StoredProcedure" لإجراء مخزن. |
| الاسم | مطلوب. الاسم الفريد لربط الدالة. |
| البارامترات | اختياري. صفر أو أكثر من قيم المُعلمات التي تم تمريرها إلى الأمر أثناء التنفيذ كسلسلة واحدة. ينبغي أن تتبع التنسيق @param1=param1,@param2=param2. لا يمكن أن يحتوي اسم المعلمة وقيمة المعلمة على فاصلة (,) أو علامة يساوي (=). |
التكوين
يوضح الجدول التالي الخصائص التي يمكنك تعيينها على الكائن الذي options تم تمريره input.sql() إلى الأسلوب .
| الخاصية | الوصف |
|---|---|
| نص الأمر | مطلوب. أمر الاستعلام Transact-SQL أو اسم الإجراء المخزن الذي تم تنفيذه بواسطة الربط. |
| connectionStringSetting | مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي يتم تنفيذ الاستعلام أو الإجراء المخزن عليها. هذه ليست سلسلة الاتصال الفعلية ويجب بدلًا من ذلك حلها إلى متغير البيئة. تتوفر الكلمات الأساسية الاختيارية في قيمة سلسلة الاتصال لتحسين اتصال روابط SQL. |
| نوع الأمر | مطلوب. قيمة CommandType، وهي نص لاستعلام وStoredProcedure لإجراء مخزن. |
| البارامترات | اختياري. صفر أو أكثر من قيم المُعلمات التي تم تمريرها إلى الأمر أثناء التنفيذ كسلسلة واحدة. ينبغي أن تتبع التنسيق @param1=param1,@param2=param2. لا يمكن أن يحتوي اسم المعلمة وقيمة المعلمة على فاصلة (,) أو علامة يساوي (=). |
التكوين
يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.
| خاصية function.json | الوصف |
|---|---|
| النوع | مطلوب. يجب تعيينه إلى sql. |
| الاتجاه | مطلوب. يجب تعيينه إلى in. |
| الاسم | مطلوب. اسم المتغير الذي يُمثل قائمة الانتظار في التعليمة البرمجية للدالة. |
| نص الأمر | مطلوب. أمر الاستعلام Transact-SQL أو اسم الإجراء المخزن الذي تم تنفيذه بواسطة الربط. |
| connectionStringSetting | مطلوب. اسم إعداد تطبيق يحتوي على سلسلة الاتصال لقاعدة البيانات التي يتم تنفيذ الاستعلام أو الإجراء المخزن عليها. هذه ليست سلسلة الاتصال الفعلية ويجب بدلًا من ذلك حلها إلى متغير البيئة. تتوفر الكلمات الأساسية الاختيارية في قيمة سلسلة الاتصال لتحسين اتصال روابط SQL. |
| نوع الأمر | مطلوب. قيمة CommandType، وهي نص لاستعلام وStoredProcedure لإجراء مخزن. |
| البارامترات | اختياري. صفر أو أكثر من قيم المُعلمات التي تم تمريرها إلى الأمر أثناء التنفيذ كسلسلة واحدة. ينبغي أن تتبع التنسيق @param1=param1,@param2=param2. لا يمكن أن يحتوي اسم المعلمة وقيمة المعلمة على فاصلة (,) أو علامة يساوي (=). |
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.
الاستخدام
يتضمن تعريف الربط نص أمر SQL ونوع الأمر والمعلمات واسم إعداد سلسلة الاتصال. يُمكن أن يكون الأمر استعلام Transact-SQL (T-SQL) مع نوع System.Data.CommandType.Text الأمر أو اسم الإجراء المخزن مع نوع الأمر System.Data.CommandType.StoredProcedure.
يتم تحديد معلمات الاستعلامات التي يتم تنفيذها بواسطة ربط الإدخال في Microsoft.Data.SqlClient لتقليل مخاطر حقن SQL من قيم المعلمات التي تم تمريرها إلى الربط.
إذا حدث استثناء عند تنفيذ ربط إدخال SQL، فلن يتم تنفيذ التعليمة البرمجية للدالة. قد يؤدي هذا السلوك إلى إرجاع رمز خطأ، مثل مشغل HTTP الذي يرجع رمز خطأ 500.
الاتصالات
يتم تعيين 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.