sp_OACreate (T-SQL)

Berlaku untuk:SQL Server

Membuat instans objek OLE.

Konvensi sintaks transact-SQL

Sintaks

  
sp_OACreate { progid | clsid } , objecttoken OUTPUT [ , context ]   

Argumen

progid
Adalah pengidentifikasi terprogram (ProgID) dari objek OLE yang akan dibuat. String karakter ini menjelaskan kelas objek OLE dan memiliki formulir: 'OLEComponent.Objek'

OLEComponent adalah nama komponen server OLE Automation, dan Object adalah nama objek OLE. Objek OLE yang ditentukan harus valid dan harus mendukung antarmuka IDispatch .

Misalnya, SQLDMO. SQLServer adalah ProgID dari objek SQL-DMO SQLServer . SQL-DMO memiliki nama komponen SQLDMO, objek SQLServer valid, dan (seperti semua objek SQL-DMO) objek SQLServer mendukung IDispatch.

Clsid
Adalah pengidentifikasi kelas (CLSID) dari objek OLE untuk dibuat. String karakter ini menjelaskan kelas objek OLE dan memiliki formulir: '{nnnnnnnn-nnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}'. Objek OLE yang ditentukan harus valid dan harus mendukung antarmuka IDispatch .

Misalnya, {00026BA1-0000-0000-C000-000000000046} adalah CLSID dari objek SQL-DMO SQLServer .

OUTPUT objecttoken
Adalah token objek yang dikembalikan, dan harus merupakan variabel lokal dari int tipe data. Token objek ini mengidentifikasi objek OLE yang dibuat dan digunakan dalam panggilan ke prosedur tersimpan OLE Automation lainnya.

context
Menentukan konteks eksekusi tempat objek OLE yang baru dibuat berjalan. Jika ditentukan, nilai ini harus salah satu dari yang berikut ini:

1 = Hanya server OLE dalam proses (.dll).

4 = Server OLE lokal (.exe) saja.

5 = Server OLE dalam proses dan lokal diizinkan

Jika tidak ditentukan, nilai defaultnya adalah 5. Nilai ini diteruskan sebagai parameter dwClsContext dari panggilan ke CoCreateInstance.

Jika server OLE dalam proses diizinkan (dengan menggunakan nilai konteks 1 atau 5 atau dengan tidak menentukan nilai konteks), server tersebut memiliki akses ke memori dan sumber daya lain yang dimiliki oleh SQL Server. Server OLE dalam proses dapat merusak memori atau sumber daya SQL Server dan menyebabkan hasil yang tidak dapat diprediksi, seperti pelanggaran akses SQL Server.

Saat Anda menentukan nilai konteks 4, server OLE lokal tidak memiliki akses ke sumber daya SQL Server apa pun, dan tidak dapat merusak memori atau sumber daya SQL Server.

Catatan

Parameter untuk prosedur tersimpan ini ditentukan berdasarkan posisi, bukan berdasarkan nama.

Mengembalikan Nilai Kode

0 (berhasil) atau angka bukan nol (kegagalan) yang merupakan nilai bilangan bulat HRESULT yang dikembalikan oleh objek OLE Automation.

Untuk informasi selengkapnya tentang Kode Pengembalian HRESULT, lihat Kode Pengembalian Otomatisasi OLE dan Informasi Kesalahan.

Keterangan

Jika prosedur otomatisasi OLE diaktifkan, panggilan ke sp_OACreate akan memulai lingkungan eksekusi bersama OLE Automation. Untuk informasi selengkapnya tentang mengaktifkan otomatisasi OLE, lihat Opsi Konfigurasi Server Prosedur Otomatisasi Ole.

Objek OLE yang dibuat secara otomatis dihancurkan di akhir batch pernyataan Transact-SQL.

Izin

Memerlukan keanggotaan dalam peran server tetap sysadmin atau menjalankan izin langsung pada Prosedur Tersimpan ini. Ole Automation Procedures konfigurasi harus diaktifkan untuk menggunakan prosedur sistem apa pun yang terkait dengan OLE Automation.

Contoh

J. Menggunakan ProgID

Contoh berikut membuat objek SQL-DMO SQLServer dengan menggunakan ProgID-nya.

DECLARE @object int;  
DECLARE @hr int;  
DECLARE @src varchar(255), @desc varchar(255);  
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT   
   raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)  
    RETURN  
END;  
GO  

B. Menggunakan CLSID

Contoh berikut membuat objek SQL-DMO SQLServer dengan menggunakan CLSID-nya.

DECLARE @object int;  
DECLARE @hr int;  
DECLARE @src varchar(255), @desc varchar(255);  
EXEC @hr = sp_OACreate '{00026BA1-0000-0000-C000-000000000046}',  
    @object OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT   
   raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)  
    RETURN  
END;  
GO  

Lihat Juga

Prosedur Tersimpan Automasi OLE (Transact-SQL)
Opsi Konfigurasi Server Prosedur Otomatisasi Ole
Skrip Sampel Automasi OLE