Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2025 (17.x)
Database SQL Azure SQL database
di Microsoft Fabric
Membuat objek model eksternal yang berisi lokasi, metode autentikasi, dan tujuan titik akhir inferensi model AI.
Sintaksis
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' ]
);
Argumen
external_model_object_name
Menentukan nama yang ditentukan pengguna untuk model eksternal. Nama dalam database harus unik.
owner_name
Menentukan nama pengguna atau peran yang memiliki model eksternal. Jika Anda tidak menentukan argumen ini, pengguna saat ini menjadi pemiliknya. Bergantung pada izin dan peran, Anda mungkin perlu memberikan izin eksplisit kepada pengguna untuk menggunakan model eksternal tertentu.
TEMPAT
Menyediakan protokol konektivitas dan jalur ke titik akhir inferensi model AI.
API_FORMAT
Format pesan API untuk penyedia titik akhir inferensi model AI.
Nilai yang diterima adalah:
Azure OpenAIOpenAIOllamaONNX Runtime
Jenis Model
Jenis model yang diakses dari lokasi titik akhir inferensi model AI.
Nilai yang diterima adalah:
EMBEDDINGS
POLA
Model tertentu yang dihosting oleh penyedia AI. Misalnya, text-embedding-ada-002, text-embedding-3-large, atau o3-mini.
bukti sah
Menentukan DATABASE SCOPED CREDENTIAL objek yang digunakan dengan titik akhir inferensi model AI. Untuk informasi selengkapnya tentang jenis kredensial yang diterima dan aturan penamaan, lihat sp_invoke_external_rest_endpoint atau bagian Keterangan di artikel ini.
PARAMETER
String JSON valid yang berisi parameter runtime untuk ditambahkan ke pesan permintaan titik akhir inferensi model AI. Contohnya:
'{ "dimensions": 1536 }'
LOCAL_RUNTIME_PATH
LOCAL_RUNTIME_PATH menentukan direktori pada instans SQL Server lokal tempat eksekusi ONNX Runtime berada.
Hak akses
Pembuatan dan perubahan model eksternal
ALTER ANY EXTERNAL MODEL Memerlukan izin database atau CREATE EXTERNAL MODEL .
Contohnya:
GRANT CREATE EXTERNAL MODEL TO [<PRINCIPAL>];
Atau:
GRANT ALTER ANY EXTERNAL MODEL TO [<PRINCIPAL>];
Pemberian model eksternal
Untuk menggunakan model eksternal dalam fungsi AI, prinsipal harus diberikan kemampuan untuk EXECUTE itu.
Contohnya:
GRANT EXECUTE ON EXTERNAL MODEL::MODEL_NAME TO [<PRINCIPAL>];
GO
Jumlah Pengulangan
Jika panggilan penyematan mengalami kode status HTTP yang menunjukkan masalah sementara, Anda dapat mengonfigurasi permintaan untuk mencoba kembali secara otomatis. Untuk menentukan jumlah percobaan ulang, tambahkan JSON berikut ke PARAMETERS pada EXTERNAL MODEL. bilangan <number_of_retries> buletin antara nol (0) dan sepuluh (10), inklusif, dan tidak boleh NULL atau negatif.
{ "sql_rest_options": { "retry_count": <number_of_retries> } }
Misalnya, untuk mengatur ke retry_count 3, gunakan string JSON berikut:
{ "sql_rest_options": { "retry_count": 3 } }
Coba lagi hitungan dengan parameter lain
Anda dapat menggabungkan jumlah percobaan ulang dengan parameter lain selama string JSON valid.
{ "dimensions": 725, "sql_rest_options": { "retry_count": 5 } }
Komentar
HTTPS dan TLS
Untuk LOCATION parameter, hanya titik akhir inferensi model AI yang dikonfigurasi untuk menggunakan HTTPS dengan protokol enkripsi TLS yang didukung.
Format API dan jenis model yang diterima
Bagian berikut menguraikan format API yang diterima untuk setiap MODEL_TYPE.
API_FORMAT untuk EMBEDDINGS
Tabel ini menguraikan format API dan struktur titik akhir URL untuk EMBEDDINGS jenis model. Untuk melihat struktur payload tertentu, gunakan tautan di kolom Format API.
| Format API | Format jalur lokasi |
|---|---|
| Azure OpenAI | https://{endpoint}/openai/deployments/{deployment-id}/embeddings?api-version={date} |
| OpenAI | https://{server_name}/v1/penyematan |
| Ollama | https://localhost:{port}/api/embed |
Membuat titik akhir penyematan
Untuk informasi selengkapnya tentang membuat titik akhir penyematan, gunakan tautan ini untuk penyedia titik akhir inferensi model AI yang sesuai:
Aturan nama kredensial untuk model eksternal
Yang dibuat DATABASE SCOPED CREDENTIAL yang digunakan oleh model eksternal harus mengikuti aturan berikut:
Harus berupa URL yang valid
Domain URL harus menjadi salah satu domain yang disertakan dalam daftar yang diizinkan.
URL tidak boleh berisi string kueri
Protokol + Nama Domain yang Sepenuhnya Memenuhi Syarat (FQDN) dari URL yang disebut harus cocok dengan Protokol + FQDN dari nama kredensial
Setiap bagian dari jalur URL yang dipanggil harus sepenuhnya cocok dengan masing-masing bagian jalur URL dalam nama kredensial.
Kredensial harus mengarah ke jalur yang lebih umum daripada URL permintaan. Misalnya, kredensial yang dibuat untuk path
https://northwind.azurewebsite.net/customerstidak dapat digunakan untuk URLhttps://northwind.azurewebsite.net.
Aturan nama kolase dan kredensial
RFC 3986 Bagian 6.2.2.1 menyatakan bahwa "Ketika URI menggunakan komponen sintaks generik, aturan kesetaraan sintaks komponen selalu berlaku; yaitu, bahwa skema dan tuan rumah tidak peka huruf besar/kecil." RFC 7230 Bagian 2.7.3 menyebutkan bahwa "semua yang lain dibandingkan dengan cara yang peka terhadap huruf besar/kecil."
Karena aturan kolase diatur di tingkat database, logika berikut berlaku untuk menjaga aturan kolase database dan aturan RFC tetap konsisten. (Aturan yang dijelaskan berpotensi lebih ketat daripada aturan RFC, misalnya jika database diatur untuk menggunakan kolase peka huruf besar/kecil.)
Periksa apakah URL dan kredensial cocok menggunakan RFC, yang berarti:
- Periksa skema dan host menggunakan kolater yang tidak peka huruf besar/kecil (
Latin1_General_100_CI_AS_KS_WS_SC) - Periksa semua segmen URL lainnya dibandingkan dalam kolaset peka huruf besar/kecil (
Latin1_General_100_BIN2)
- Periksa skema dan host menggunakan kolater yang tidak peka huruf besar/kecil (
Periksa apakah URL dan kecocokan kredensial menggunakan aturan kolase database (dan tanpa melakukan pengodean URL apa pun).
Identitas yang dikelola
Untuk menggunakan identitas terkelola host Arc/VM sebagai kredensial tingkat database di SQL Server 2025 (17.x), Anda harus mengaktifkan opsi dengan menggunakan sp_configure dengan pengguna yang diberikan izin tingkat server ALTER SETTINGS.
EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE WITH OVERRIDE;
SCHEMABINDING
Tampilan yang dibuat dengan SCHEMABINDING yang mereferensikan model eksternal (seperti SELECT pernyataan menggunakan AI_GENERATE_EMBEDDINGS) tidak dapat dihilangkan, dan Mesin Database memunculkan kesalahan. Untuk menghapus dependensi yang mereferensikan model eksternal, Anda harus terlebih dahulu memodifikasi atau menghapus definisi tampilan.
Tampilan katalog
Anda dapat melihat metadata model eksternal dengan mengkueri tampilan katalog sys.external_models . Anda harus memiliki akses ke model untuk melihat metadatanya.
SELECT *
FROM sys.external_models;
Contoh dengan titik akhir jarak jauh
Membuat MODEL EKSTERNAL dengan Azure OpenAI menggunakan Identitas Terkelola
Contoh ini membuat model eksternal dari jenis menggunakan EMBEDDINGS Azure OpenAI dan menggunakan Identitas Terkelola untuk autentikasi.
Di SQL Server 2025 (17.x) dan versi yang lebih baru, Anda harus menyambungkan SQL Server ke Azure Arc dan mengaktifkan identitas terkelola utama.
Penting
Jika Anda menggunakan Identitas Terkelola dengan Azure OpenAI dan SQL Server 2025 (17.x), peran Kontributor OpenAI Cognitive Services harus diberikan ke identitas terkelola yang ditetapkan sistem SQL Server yang diaktifkan oleh Azure Arc. Untuk informasi selengkapnya, lihat Kontrol akses berbasis peran untuk Azure OpenAI di Azure AI Foundry Models.
Buat kredensial akses ke Azure OpenAI menggunakan identitas terkelola:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'Managed Identity', secret = '{"resourceid":"https://cognitiveservices.azure.com"}';
GO
Buat model eksternal:
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/]
);
Membuat model eksternal dengan Azure OpenAI menggunakan kunci dan parameter API
Contoh ini membuat model eksternal jenis menggunakan EMBEDDINGS Azure OpenAI dan menggunakan Kunci API untuk autentikasi. Contoh ini juga menggunakan PARAMETERS untuk mengatur parameter dimensi di titik akhir ke 725.
Buat kredensial akses ke Azure OpenAI menggunakan kunci:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
Buat model eksternal:
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}'
);
Membuat MODEL EKSTERNAL dengan Ollama dan pemilik eksplisit
Contoh ini membuat model eksternal dari jenis menggunakan EMBEDDINGS Ollama yang dihosting secara lokal untuk tujuan pengembangan.
CREATE EXTERNAL MODEL MyOllamaModel
AUTHORIZATION AI_User
WITH (
LOCATION = 'https://localhost:11435/api/embed',
API_FORMAT = 'Ollama',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'all-minilm'
);
Membuat MODEL EKSTERNAL dengan OpenAI
Contoh ini membuat model eksternal dari jenis menggunakan EMBEDDINGS kredensial berbasis header OpenAI API_FORMAT dan HTTP untuk autentikasi.
-- 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]
);
Contoh dengan ONNX Runtime berjalan secara lokal
ONNX Runtime adalah mesin inferensi sumber terbuka yang memungkinkan Anda menjalankan model pembelajaran mesin secara lokal, menjadikannya ideal untuk mengintegrasikan kemampuan AI ke lingkungan SQL Server.
Contoh ini memandu Anda menyiapkan SQL Server 2025 (17.x) dengan ONNX Runtime untuk mengaktifkan pembuatan penyematan teks bertenaga AI lokal. Ini hanya berlaku pada Windows.
Penting
Fitur ini mengharuskan SQL Server Machine Learning Services diinstal.
Langkah 1: Mengaktifkan fitur pratinjau pengembang di SQL Server 2025
Jalankan perintah Transact-SQL (T-SQL) berikut untuk mengaktifkan fitur pratinjau SQL Server 2025 (17.x) dalam database yang ingin Anda gunakan untuk contoh ini:
ALTER DATABASE SCOPED CONFIGURATION
SET PREVIEW_FEATURES = ON;
Langkah 2: Aktifkan runtime AI lokal di SQL Server 2025
Aktifkan runtime AI eksternal dengan menjalankan kueri T-SQL berikut:
EXECUTE sp_configure 'external AI runtimes enabled', 1;
RECONFIGURE WITH OVERRIDE;
Langkah 3: Siapkan pustaka ONNX Runtime
Buat direktori pada instans SQL Server untuk menyimpan file pustaka ONNX Runtime. Dalam contoh ini, C:\onnx_runtime digunakan.
Anda dapat menggunakan perintah berikut untuk membuat direktori:
cd C:\
mkdir onnx_runtime
Selanjutnya, unduh versi ONNX Runtime (1.19 atau lebih tinggi) yang sesuai untuk sistem operasi Anda. Setelah membuka zip unduhan, salin onnxruntime.dll (terletak di direktori lib) ke C:\onnx_runtime direktori yang dibuat.
Langkah 4: Siapkan pustaka tokenisasi
Unduh dan bangun tokenizers-cpp pustaka dari GitHub. Setelah dll dibuat, tempatkan tokenizer di C:\onnx_runtime direktori.
Nota
Pastikan dll yang dibuat diberi nama tokenizers_cpp.dll
Langkah 5: Unduh model ONNX
Mulailah dengan membuat model direktori di C:\onnx_runtime\.
cd C:\onnx_runtime
mkdir model
Contoh ini menggunakan all-MiniLM-L6-v2-onnx model, yang dapat diunduh dari Hugging Face.
Kloning repositori ke C:\onnx_runtime\model direktori dengan perintah git berikut:
Jika tidak diinstal, Anda dapat mengunduh git dari tautan unduhan berikut atau melalui winget (winget install Microsoft.Git)
cd C:\onnx_runtime\model
git clone https://huggingface.co/nsense/all-MiniLM-L6-v2-onnx
Langkah 6: Mengatur izin direktori
Gunakan skrip PowerShell berikut untuk menyediakan akses pengguna MSSQLLaunchpad ke direktori ONNX Runtime:
$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
Langkah 7: Membuat model eksternal
Jalankan kueri berikut untuk mendaftarkan model ONNX Anda sebagai objek model eksternal:
Nilai 'PARAMETERS' yang digunakan di sini adalah placeholder yang diperlukan untuk SQL Server 2025 (17.x).
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\'
);
-
LOCATIONharus menunjuk ke direktori yang berisimodel.onnxdantokenizer.jsonfile. -
LOCAL_RUNTIME_PATHharus menunjuk ke direktori yang berisionnxruntime.dlldantokenizer_cpp.dllfile.
Langkah 8: Hasilkan penyematan
Gunakan fungsi untuk ai_generate_embeddings menguji model dengan menjalankan kueri berikut:
SELECT AI_GENERATE_EMBEDDINGS(N'Test Text' USE MODEL myLocalOnnxModel);
Perintah ini meluncurkan AIRuntimeHost, memuat DLL yang diperlukan, dan memproses teks input.
Hasil dari kueri sebelumnya adalah array penyematan:
[0.320098,0.568766,0.154386,0.205526,-0.027379,-0.149689,-0.022946,-0.385856,-0.039183...]
Aktifkan pencatatan sistem XEvent
Jalankan kueri berikut untuk mengaktifkan pengelogan sistem untuk pemecahan masalah.
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
Selanjutnya, gunakan kueri ini untuk melihat log sistem yang diambil:
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);
Pembersihan
Untuk menghapus objek model eksternal, jalankan pernyataan T-SQL berikut:
DROP EXTERNAL MODEL myLocalOnnxModel;
Untuk menghapus izin direktori, jalankan perintah PowerShell berikut ini:
$Acl.RemoveAccessRule($AccessRule)
Set-Acl -Path $AIExtPath -AclObject $Acl
Terakhir, hapus C:/onnx_runtime direktori.
Konten terkait
- UBAH MODEL EKSTERNAL (Transact-SQL)
- JATUHKAN MODEL EKSTERNAL (Transact-SQL)
- AI_GENERATE_EMBEDDINGS (Transact-SQL)
- AI_GENERATE_CHUNKS (Transact-SQL)
- sys.external_models
- Membuat dan menyebarkan Azure OpenAI di sumber daya Azure AI Foundry Models
- Opsi konfigurasi server
- Kontrol akses berbasis peran untuk Azure OpenAI di Model Azure AI Foundry