Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
Yapay zeka modeli çıkarım uç noktasının konumunu, kimlik doğrulama yöntemini ve amacını içeren bir dış model nesnesi oluşturur.
Sözdizimi
Transact-SQL söz dizimi kuralları
CREATE EXTERNAL MODEL external_model_object_name
[ AUTHORIZATION owner_name ]
WITH
( LOCATION = '<prefix>://<path>[:<port>]'
, API_FORMAT = '<OpenAI, Azure OpenAI, etc>'
, MODEL_TYPE = EMBEDDINGS
, MODEL = 'text-embedding-model-name'
[ , CREDENTIAL = <credential_name> ]
[ , PARAMETERS = '{"valid":"JSON"}' ]
[ , LOCAL_RUNTIME_PATH = 'path to the ONNX Runtime files' ]
);
Tartışmalar
external_model_object_name
Dış model için kullanıcı tanımlı adı belirtir. Adın veritabanında benzersiz olması gerekir.
owner_name
Dış modelin sahibi olan kullanıcının veya rolün adını belirtir. Bu argümanı belirtmezseniz, mevcut kullanıcı sahibi olur. İzinlere ve rollere bağlı olarak, kullanıcılara belirli harici modelleri kullanmaları için açık izin vermeniz gerekebilir.
KONUM
Bağlantı protokolunu ve yapay zeka modeli çıkarım uç noktasının yolunu sağlar.
API_FORMAT
Yapay zeka modeli çıkarım uç noktası sağlayıcısı için API ileti biçimi.
Kabul edilen değerler şunlardır:
Azure OpenAIOpenAIOllamaONNX Runtime
MODEL_TİPİ
Yapay zeka modelinden erişilen model türü, çıkarım nokta konumu.
Kabul edilen değerler şunlardır:
EMBEDDINGS
Model
Yapay zeka sağlayıcısı tarafından barındırılan model. Örneğin, text-embedding-ada-002, text-embedding-3-large veya o3-mini.
YETKİ BELGESİ
AI model çıkarım uç noktasında kullanılan nesneyi belirtir DATABASE SCOPED CREDENTIAL . Kabul edilen kimlik türleri ve adlandırma kuralları hakkında daha fazla bilgi için sp_invoke_external_rest_endpoint veya bu makalenin Açıklamalar bölümüne bakınız.
PARAMETRE
AI modeli çıkarım uç noktası isteği mesajına eklenecek çalışma zamanı parametreleri içeren geçerli bir JSON dizisi. Örneğin:
'{ "dimensions": 1536 }'
LOCAL_RUNTIME_PATH
LOCAL_RUNTIME_PATH yerel SQL Server örneğinde ONNX Çalışma Zamanı çalıştırılabilir dosyalarının bulunduğu dizini belirler.
İzinler
Dış model oluşturma ve değiştirme
ALTER ANY EXTERNAL MODEL veya CREATE EXTERNAL MODEL veritabanı izni gerektirir.
Örneğin:
GRANT CREATE EXTERNAL MODEL TO [<PRINCIPAL>];
Veya:
GRANT ALTER ANY EXTERNAL MODEL TO [<PRINCIPAL>];
Dış model izinleri
Yapay zeka işlevinde dış model kullanmak için bir sorumluya EXECUTE bu özellik verilmelidir.
Örneğin:
GRANT EXECUTE ON EXTERNAL MODEL::MODEL_NAME TO [<PRINCIPAL>];
GO
Yeniden deneme sayısı
Ekleme çağrısı geçici sorunları belirten HTTP durum kodlarıyla karşılaşırsa, isteği otomatik olarak yeniden deneyecek şekilde yapılandırabilirsiniz. Yeniden deneme sayısını belirtmek için öğesine aşağıdaki JSON'ı PARAMETERSEXTERNAL MODELekleyin.
<number_of_retries> sıfır () ile on (010 ) () arasında bir tamsayı olmalıdır ve bu sayı negatif veya negatif olamazNULL.
{ "sql_rest_options": { "retry_count": <number_of_retries> } }
Örneğin, 3'e retry_count ayarlamak için aşağıdaki JSON dizisi kullanılır:
{ "sql_rest_options": { "retry_count": 3 } }
Diğer parametrelerle yeniden deneme sayısı
JSON dizisi geçerli olduğu sürece tekrar deneme sayısını diğer parametrelerle birleştirebilirsiniz.
{ "dimensions": 725, "sql_rest_options": { "retry_count": 5 } }
Açıklamalar
HTTPS ve TLS
Parametre LOCATION için, yalnızca TLS şifreleme protokolüyle HTTPS kullanacak şekilde yapılandırılmış yapay zeka model çıkarım uç noktaları desteklenir.
Kabul edilen API biçimleri ve model türleri
Aşağıdaki bölümler, her biri MODEL_TYPEiçin kabul edilen API formatlarını özetlemektedir.
EMBEDDINGS için API_FORMAT
Bu tablo, model tipi için EMBEDDINGS API formatlarını ve URL uç nokta yapılarını özetler. Belirli yük yapılarını görüntülemek için API Biçimi sütunundaki bağlantıyı kullanın.
| API biçimi | Konum yolu biçimi |
|---|---|
| Azure OpenAI | https://{endpoint}/openai/deployments/{deployment-id}/embeddings?api-version={date} |
| OpenAI | https://{server_name}/v1/embeddings |
| Ollama | https://localhost:{port}/api/embed |
Ekleme uç noktaları oluşturma
Ekleme uç noktaları oluşturma hakkında daha fazla bilgi için uygun yapay zeka modeli çıkarım uç noktası sağlayıcısı için şu bağlantıları kullanın:
Dış model için kimlik adı kuralları
Harici bir model tarafından oluşturulan DATABASE SCOPED CREDENTIAL model şu kurallara uymalıdır:
Geçerli bir URL olmalıdır
URL alan adı, izin listesinde yer alan alan adlarından biri olmalıdır.
URL bir sorgu dizesi içermemelidir
Çağrılan URL'nin Protokol + Tam Etki Alanı Adı (FQDN), kimlik bilgisi adının Protokol + FQDN değeriyle eşleşmelidir
Çağrılan URL yolunun her bölümü, kimlik adındaki URL yolunun ilgili kısmıyla tamamen eşleşmelidir.
Kimlik bilgisi, istek URL'sinden daha genel bir yola işaret etmelidir. Örneğin, yol
https://northwind.azurewebsite.net/customersiçin oluşturulan bir kimlik bilgisi URLhttps://northwind.azurewebsite.netiçin kullanılamaz.
Harmanlama ve kimlik bilgisi adı kuralları
RFC 3986 Bölüm 6.2.2.1 şöyle der: "Bir URI genel sözdiziminin bileşenlerini kullandığında, bileşen sözdizimi eşdeğerlik kuralları her zaman geçerlidir; yani, şema ve ev sahibi çok küçük harf duyarsız olsun." RFC 7230 Bölüm 2.7.3 , "diğer tüm unsurların çok küçük harf hassasiyetli şekilde karşılaştırıldığını" belirtir.
Veritabanı düzeyinde bir derleme kuralı belirlendiğinden, veritabanı derleme kuralı ile RFC kurallarının tutarlı kalması için aşağıdaki mantık geçerlidir. (Tanımlanan kural, örneğin veritabanı büyük harf duyarlı bir derleme kullanacak şekilde ayarlanmışsa, RFC kurallarından daha kısıtlayıcı olabilir.)
RFC kullanarak URL ve kimlik bilgilerinin eşleşip eşleşmediğini denetleyin, yani:
- Büyük/küçük harfe duyarlı olmayan harmanlama (
Latin1_General_100_CI_AS_KS_WS_SC) kullanarak düzeni ve konağı denetleyin - URL'nin diğer tüm kesimlerinin büyük/küçük harfe duyarlı harmanlamada (
Latin1_General_100_BIN2) karşılaştırılmasını denetleyin
- Büyük/küçük harfe duyarlı olmayan harmanlama (
Veritabanı harmanlama kurallarını kullanarak (ve URL kodlaması yapmadan) URL'nin ve kimlik bilgilerinin eşleşip eşleşmediğini denetleyin.
İdare edilen kimlik
SQL Server 2025 (17.x)'de Arc/VM hostunun yönetilen kimliğini veritabanı düzeyinde bir kimlik doğrulaması olarak kullanmak için, ALTER SETTINGS sunucu düzeyinde izni verilen bir kullanıcıyla bu seçeneği sp_configure etkinleştirmeniz gerekir.
EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE WITH OVERRIDE;
SCHEMABINDING
Bu harici modele (örneğin SELECT bir ifade kullanılarak AI_GENERATE_EMBEDDINGS) referansla oluşturulan SCHEMABINDING görünümler kaldırılamaz ve Veritabanı Motoru hata oluşturur. Dış modele referans veren bağımlılıkları kaldırmak için önce görünüm tanımını değiştirmek veya kaldırmak gerekir.
Katalog görünümü
sys.external_models katalog görünümünü sorgulaarak harici model meta verilerini görebilirsiniz. Meta verilerini görmek için bir modele erişiminiz olmalıdır.
SELECT *
FROM sys.external_models;
Uzak uç noktalarla ilgili örnekler
Yönetilen Kimlik kullanarak Azure OpenAI ile EXTERNAL MODEL oluşturma
Bu örnek, Azure OpenAI kullanarak bu EMBEDDINGS tipin harici bir modelini oluşturur ve kimlik doğrulaması için Managed Identity kullanır.
SQL Server 2025 (17.x) ve sonraki sürümlerde, SQL Server'ınızı Azure Arc'a bağlamalı ve birincil yönetilen kimliği etkinleştirmelisiniz.
Önemli
Azure OpenAI ve SQL Server 2025 (17.x) ile Yönetilen Kimlik kullanıyorsanız, Cognitive Services OpenAI Katkıcı rolü, Azure Arc tarafından etkinleştirilen SQL Server'ın sistem tarafından atanan yönetilen kimliğine verilmelidir. Daha fazla bilgi için Azure AI Foundry Models'te Azure OpenAI için Rol tabanlı erişim kontrolü sayfasına bakınız.
Azure OpenAI'ye yönetilen bir kimlik kullanarak erişim kimlik bilgileri oluşturun:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'Managed Identity', secret = '{"resourceid":"https://cognitiveservices.azure.com"}';
GO
Dış modeli oluşturun:
CREATE EXTERNAL MODEL MyAzureOpenAIModel
AUTHORIZATION CRM_User
WITH (
LOCATION = 'https://my-azure-openai-endpoint.cognitiveservices.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2024-02-01',
API_FORMAT = 'Azure OpenAI',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'text-embedding-ada-002',
CREDENTIAL = [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
);
API anahtarları ve parametreleri kullanarak Azure OpenAI ile harici bir model oluşturun
Bu örnek, Azure OpenAI kullanarak bu EMBEDDINGS tipin harici bir modelini oluşturur ve kimlik doğrulama için API Anahtarları kullanır. Örnek ayrıca uç noktadaki dimensions parametresini 725 olarak ayarlamak için kullanır PARAMETERS .
Bir anahtar kullanarak Azure OpenAI'ye erişim credentialları oluşturun:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
Dış modeli oluşturun:
CREATE EXTERNAL MODEL MyAzureOpenAIModel
AUTHORIZATION CRM_User
WITH (
LOCATION = 'https://my-azure-openai-endpoint.cognitiveservices.azure.com/openai/deployments/text-embedding-3-small/embeddings?api-version=2024-02-01',
API_FORMAT = 'Azure OpenAI',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'text-embedding-3-small',
CREDENTIAL = [https://my-azure-openai-endpoint.cognitiveservices.azure.com/],
PARAMETERS = '{"dimensions":725}'
);
Ollama ve açık bir sahip ile EXTERNAL MODEL oluşturma
Bu örnek, geliştirme amaçları için yerel olarak barındırılan Ollama kullanılarak harici EMBEDDINGS bir model oluşturur.
CREATE EXTERNAL MODEL MyOllamaModel
AUTHORIZATION AI_User
WITH (
LOCATION = 'https://localhost:11435/api/embed',
API_FORMAT = 'Ollama',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'all-minilm'
);
OpenAI ile EXTERNAL MODEL oluşturma
Bu örnek, kimlik doğrulama için OpenAI API_FORMAT ve HTTP başlığı tabanlı kimlik bilgilerini kullanarak türde EMBEDDINGS harici bir model oluşturur.
-- Create access credentials
CREATE DATABASE SCOPED CREDENTIAL [https://openai.com]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"Bearer":"YOUR_OPENAI_KEY"}';
GO
-- Create the external model
CREATE EXTERNAL MODEL MyAzureOpenAIModel
AUTHORIZATION CRM_User
WITH (
LOCATION = 'https://api.openai.com/v1/embeddings',
API_FORMAT = 'OpenAI',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'text-embedding-ada-002',
CREDENTIAL = [https://openai.com]
);
ONNX Çalışma Zamanının yerel olarak çalıştığı bir örnek
ONNX Runtime , makine öğrenmesi modellerini yerel olarak çalıştırmanıza olanak tanıyan bir açık kaynak çıkarım altyapısıdır ve yapay zeka özelliklerini SQL Server ortamlarıyla tümleştirmek için idealdir.
Bu örnek, SQL Server 2025 (17.x) kurmayı ONNX Runtime ile kurarken yerel yapay zeka destekli metin gömme üretimini etkinleştirir. Yalnızca Windows için geçerlidir.
Önemli
Bu özellik , SQL Server Machine Learning Services'ın yüklü olmasını gerektirir.
1. Adım: SQL Server 2025'te geliştirici önizleme özelliklerini etkinleştirme
Bu örnek için kullanmak istediğiniz veritabanında SQL Server 2025 (17.x) önizleme özelliklerini etkinleştirmek için aşağıdaki Transact-SQL (T-SQL) komutunu çalıştırın:
ALTER DATABASE SCOPED CONFIGURATION
SET PREVIEW_FEATURES = ON;
2. Adım: SQL Server 2025'te yerel yapay zeka çalışma zamanını etkinleştirme
Aşağıdaki T-SQL sorgusunu çalıştırarak harici yapay zeka çalışma zamanlarını etkinleştirin:
EXECUTE sp_configure 'external AI runtimes enabled', 1;
RECONFIGURE WITH OVERRIDE;
Adım 3: ONNX Çalışma Zamanı kütüphanesini kurun
ONNX Çalışma Zamanı kütüphane dosyalarını tutacak SQL Server örneğinde bir dizin oluşturun. Bu örnekte C:\onnx_runtime kullanılmıştır.
Dizini oluşturmak için aşağıdaki komutları kullanabilirsiniz:
cd C:\
mkdir onnx_runtime
Sonra, işletim sisteminize uygun bir ONNX Runtime sürümünü (1.19 veya üzeri) indirin. İndirmenin sıkıştırmasını kaldırdıktan sonra dosyasını (lib dizininde bulunur) oluşturulan dizine onnxruntime.dll kopyalayın C:\onnx_runtime .
4. Adım: Belirteç oluşturma kitaplığını ayarlama
GitHub'dan tokenizers-cpp kitaplığı indirin ve derleyin. Dll oluşturulduktan sonra belirteci dizinine C:\onnx_runtime yerleştirin.
Uyarı
Oluşturulan dll dosyasının tokenizers_cpp.dll olarak adlandırılmasını sağlayın
5. Adım: ONNX modelini indirme
dizinini model içinde C:\onnx_runtime\oluşturarak başlayın.
cd C:\onnx_runtime
mkdir model
Bu örnekte, all-MiniLM-L6-v2-onnx indirilebilen model kullanılır.
Aşağıdaki C:\onnx_runtime\model komutuyla depoyu dizine kopyalayın:
Yüklü değilse, git'i aşağıdaki indirme bağlantısından veya winget aracılığıyla indirebilirsiniz (winget Microsoft.Git'i yükleyin)
cd C:\onnx_runtime\model
git clone https://huggingface.co/nsense/all-MiniLM-L6-v2-onnx
6. Adım: Dizin izinlerini ayarlama
MSSQLLaunchpad kullanıcısına ONNX Çalışma Zamanı dizinine erişim sağlamak için aşağıdaki PowerShell betiklerini kullanın:
$AIExtPath = "C:\onnx_runtime";
$Acl = Get-Acl -Path $AIExtPath
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("MSSQLLaunchpad", "FullControl", "ContainerInherit,ObjectInherit", "None","Allow")
$Acl.AddAccessRule($AccessRule)
Set-Acl -Path $AIExtPath -AclObject $Acl
7. Adım: Dış modeli oluşturma
ONNX modelinizi harici model nesnesi olarak kaydetmek için aşağıdaki sorguyu çalıştırın:
Burada kullanılan 'PARAMETERS' değeri, SQL Server 2025 (17.x) için gereken bir yer tutucudur.
CREATE EXTERNAL MODEL myLocalOnnxModel
WITH (
LOCATION = 'C:\onnx_runtime\model\all-MiniLM-L6-v2-onnx',
API_FORMAT = 'ONNX Runtime',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'allMiniLM',
PARAMETERS = '{"valid":"JSON"}',
LOCAL_RUNTIME_PATH = 'C:\onnx_runtime\'
);
-
LOCATIONve dosyalarını içerenmodel.onnxtokenizer.jsondizine işaret etmeli. -
LOCAL_RUNTIME_PATHve dosyalarıonnxruntime.dlltokenizer_cpp.dlliçeren dizine işaret etmeli.
8. Adım: Eklemeler oluşturma
Modeli test etmek için aşağıdaki sorguyu çalıştırarak bu ai_generate_embeddings fonksiyonu kullanın:
SELECT AI_GENERATE_EMBEDDINGS(N'Test Text' USE MODEL myLocalOnnxModel);
Bu komut AIRuntimeHost, gerekli DLL'leri yükler ve giriş metnini işler.
Önceki sorgudan elde edilen bir gömme dizisi ortaya çıktı:
[0.320098,0.568766,0.154386,0.205526,-0.027379,-0.149689,-0.022946,-0.385856,-0.039183...]
XEvent sistem kaydını etkinleştir
Sorun giderme için sistem kaydını etkinleştirmek için aşağıdaki sorguyu çalıştırın.
CREATE EVENT SESSION newevt
ON SERVER
ADD EVENT ai_generate_embeddings_airuntime_trace
(
ACTION (sqlserver.sql_text, sqlserver.session_id)
)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY = 4096 KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY = 30 SECONDS, TRACK_CAUSALITY = ON, STARTUP_STATE = OFF);
GO
ALTER EVENT SESSION newevt ON SERVER STATE = START;
GO
Sonra, bu sorguyu kullanarak ele geçirilen sistem kayıtlarına bakın:
SELECT event_data.value('(@name)[1]', 'varchar(100)') AS event_name,
event_data.value('(@timestamp)[1]', 'datetime2') AS [timestamp],
event_data.value('(data[@name = "model_name"]/value)[1]', 'nvarchar(200)') AS model_name,
event_data.value('(data[@name = "phase_name"]/value)[1]', 'nvarchar(100)') AS phase,
event_data.value('(data[@name = "message"]/value)[1]', 'nvarchar(max)') AS message,
event_data.value('(data[@name = "request_id"]/value)[1]', 'nvarchar(max)') AS session_id,
event_data.value('(data[@name = "error_code"]/value)[1]', 'bigint') AS error_code
FROM (SELECT CAST (target_data AS XML) AS target_data
FROM sys.dm_xe_sessions AS s
INNER JOIN sys.dm_xe_session_targets AS t
ON s.address = t.event_session_address
WHERE s.name = 'newevt'
AND t.target_name = 'ring_buffer') AS data
CROSS APPLY target_data.nodes('//RingBufferTarget/event') AS XEvent(event_data);
Temizleme
Harici model nesnesini kaldırmak için aşağıdaki T-SQL ifadesini çalıştırın:
DROP EXTERNAL MODEL myLocalOnnxModel;
Dizin izinlerini kaldırmak için aşağıdaki PowerShell komutlarını çalıştırın:
$Acl.RemoveAccessRule($AccessRule)
Set-Acl -Path $AIExtPath -AclObject $Acl
Son olarak, dizini silin C:/onnx_runtime .
İlgili içerik
- HARICI MODELI DEĞIŞTIR (Transact-SQL)
- DROP HARICI MODEL (Transact-SQL)
- AI_GENERATE_EMBEDDINGS (Transact-SQL)
- AI_GENERATE_CHUNKS (Transact-SQL)
- sys.external_models
- Azure AI Foundry Models kaynağında Azure OpenAI oluşturma ve dağıtma
- Sunucu yapılandırma seçenekleri
- Azure AI Foundry Modellerinde Azure OpenAI için rol tabanlı erişim denetimi