Bagikan melalui


Menjalankan Prosedur Tersimpan

Topik ini menjelaskan cara menjalankan prosedur tersimpan di SQL Server 2014 dengan menggunakan SQL Server Management Studio atau Transact-SQL.

Ada dua cara berbeda untuk menjalankan prosedur tersimpan. Pendekatan pertama dan paling umum adalah bagi aplikasi atau pengguna untuk memanggil prosedur. Pendekatan kedua adalah mengatur prosedur untuk berjalan secara otomatis saat instans SQL Server dimulai. Ketika prosedur dipanggil oleh aplikasi atau pengguna, kata kunci TRANSACT-SQL EXECUTE atau EXEC secara eksplisit dinyatakan dalam panggilan. Atau, prosedur dapat dipanggil dan dijalankan tanpa kata kunci jika prosedur adalah pernyataan pertama dalam batch Transact-SQL.

Dalam Topik Ini

Sebelum Anda mulai

Batasan dan Pembatasan

  • Kolase database panggilan digunakan saat mencocokkan nama prosedur sistem. Oleh karena itu, selalu gunakan kasus nama prosedur sistem yang tepat dalam panggilan prosedur. Misalnya, kode ini akan gagal jika dijalankan dalam konteks database yang memiliki kolasi sensitif terhadap huruf besar/kecil.

    EXEC SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help  
    

    Untuk menampilkan nama prosedur sistem yang tepat, periksa view katalog sys.system_objects dan sys.system_parameters.

  • Jika prosedur yang ditentukan pengguna memiliki nama yang sama dengan prosedur sistem, prosedur yang ditentukan pengguna mungkin tidak pernah dijalankan.

Rekomendasi

  • Menjalankan Prosedur Tersimpan Sistem

    Prosedur sistem dimulai dengan awalan sp_. Karena mereka secara logis muncul di semua database yang ditentukan oleh pengguna dan sistem, mereka dapat dijalankan dari database mana pun tanpa harus memberikan kualifikasi penuh pada nama prosedur. Namun, kami merekomendasikan memberi skema yang memenuhi syarat pada semua nama prosedur sistem dengan nama skema sys untuk mencegah konflik nama. Contoh berikut menunjukkan metode yang direkomendasikan untuk memanggil prosedur sistem.

    EXEC sys.sp_who;  
    
  • Menjalankan Prosedur Tersimpan yang Ditentukan Pengguna

    Saat menjalankan prosedur yang ditentukan pengguna, sebaiknya memenuhi syarat nama prosedur dengan nama skema. Praktik ini memberikan peningkatan performa kecil karena Mesin Database tidak perlu mencari beberapa skema. Ini juga mencegah menjalankan prosedur yang salah jika database memiliki prosedur dengan nama yang sama dalam beberapa skema.

    Contoh berikut menunjukkan metode yang direkomendasikan untuk menjalankan prosedur yang ditentukan pengguna. Perhatikan bahwa prosedur menerima satu parameter input. Untuk informasi tentang menentukan parameter input dan output, lihat Menentukan Parameter.

    USE AdventureWorks2012;  
    GO  
    EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50;  
    

    -Atau-

    EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50;  
    GO  
    

    Jika prosedur yang didefinisikan oleh pengguna yang tidak memenuhi syarat ditentukan, Mesin Database mencari prosedur dalam urutan berikut:

    1. Skema sys dari database saat ini.

    2. Skema default pemanggil jika dijalankan dalam batch atau di SQL dinamis. Atau, jika nama prosedur yang tidak memenuhi syarat muncul di dalam isi definisi prosedur lain, skema yang berisi prosedur lain ini akan dicari berikutnya.

    3. Skema dbo dalam database saat ini.

  • Menjalankan Prosedur Tersimpan Secara Otomatis

    Prosedur yang ditandai untuk eksekusi otomatis dijalankan setiap kali SQL Server dimulai dan database master dipulihkan selama proses startup tersebut. Menyiapkan prosedur untuk dijalankan secara otomatis dapat berguna untuk melakukan operasi pemeliharaan database atau agar prosedur berjalan terus menerus sebagai proses latar belakang. Penggunaan lain untuk eksekusi otomatis adalah agar prosedur melakukan tugas sistem atau pemeliharaan dalam tempdb, seperti membuat tabel sementara global. Ini memastikan bahwa tabel sementara seperti itu akan selalu ada ketika tempdb dibuat ulang selama startup SQL Server.

    Prosedur yang dijalankan secara otomatis beroperasi dengan izin yang sama dengan anggota peran server tetap sysadmin . Setiap pesan kesalahan yang dihasilkan oleh prosedur ditulis ke log kesalahan SQL Server.

    Tidak ada batasan jumlah prosedur startup yang dapat Anda miliki, tetapi ingatlah bahwa masing-masing memerlukan satu utas pekerja selama proses. Jika Anda harus menjalankan beberapa prosedur saat startup tetapi tidak perlu menjalankannya secara paralel, buat satu prosedur prosedur startup dan minta prosedur tersebut memanggil prosedur lain. Hanya satu utas pekerja yang digunakan.

    Petunjuk / Saran

    Jangan mengembalikan tataan hasil apa pun dari prosedur yang dijalankan secara otomatis. Karena prosedur ini dijalankan oleh SQL Server, bukan oleh aplikasi atau pengguna, hasil-hasil tersebut tidak memiliki tujuan atau destinasi.

  • Mengatur, Menghapus, dan Mengontrol Eksekusi Otomatis

    Hanya administrator sistem (sa) yang dapat menandai prosedur untuk dijalankan secara otomatis. Selain itu, prosedur harus berada di database master , dimiliki oleh sa, dan tidak dapat memiliki parameter input atau output.

    Gunakan sp_procoption untuk:

    1. Menunjuk prosedur yang ada sebagai prosedur startup.

    2. Hentikan prosedur agar tidak dijalankan di startup SQL Server.

Keamanan

Untuk informasi selengkapnya, lihat EXECUTE AS (Transact-SQL) dan EXECUTE AS Clause (Transact-SQL).

Hak akses

Untuk informasi selengkapnya, lihat bagian "Izin" di EXECUTE (Transact-SQL).

Menggunakan SQL Server Management Studio

Untuk menjalankan prosedur tersimpan

  1. Di Object Explorer, sambungkan ke instans Mesin Database SQL Server, perluas instans tersebut, lalu perluas Database.

  2. Perluas database yang Anda inginkan, perluas Keterprograman, lalu perluas Prosedur Tersimpan.

  3. Klik kanan prosedur tersimpan yang ditentukan pengguna yang Anda inginkan dan klik Jalankan Prosedur Tersimpan.

  4. Dalam kotak dialog Jalankan Prosedur , tentukan nilai untuk setiap parameter dan apakah harus melewati nilai null.

    Parameter
    Menunjukkan nama parameter.

    Tipe Data
    Menunjukkan jenis data parameter.

    Output Parameter
    Menunjukkan apakah ini adalah parameter output.

    Lewatkan Nilai Null
    Berikan NULL sebagai nilai parameter.

    Nilai
    Ketik nilai untuk parameter saat memanggil prosedur.

  5. Untuk menjalankan prosedur tersimpan, klik OK.

Menggunakan T-SQL

Untuk menjalankan prosedur tersimpan

  1. Sambungkan ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan. Contoh ini menunjukkan cara menjalankan prosedur tersimpan yang mengharapkan satu parameter. Contoh menjalankan prosedur tersimpan uspGetEmployeeManagers dengan nilai yang ditentukan 6 sebagai parameter @EmployeeID.

USE AdventureWorks2012;  
GO  
EXEC dbo.uspGetEmployeeManagers 6;  
GO  

Untuk mengatur atau menghapus prosedur untuk menjalankan secara otomatis

  1. Sambungkan ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan. Contoh ini menunjukkan cara menggunakan sp_procoption untuk mengatur prosedur untuk eksekusi otomatis.

USE AdventureWorks2012;  
GO  
EXEC sp_procoption @ProcName = '<procedure name>'   
    , @OptionName = ] 'startup'   
    , @OptionValue = 'on';  

Untuk menghentikan prosedur agar tidak dijalankan secara otomatis

  1. Sambungkan ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan. Contoh ini menunjukkan cara menggunakan sp_procoption untuk menghentikan prosedur agar tidak dijalankan secara otomatis.

USE AdventureWorks2012;  
GO  
EXEC sp_procoption @ProcName = '<procedure name>'   
    , @OptionValue = 'off';  

Contoh (Transact-SQL)

Lihat Juga

Tentukan Parameter
Mengonfigurasi pemindaian untuk opsi konfigurasi server prosedur startup
JALANKAN (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
Prosedur Tersimpan (Mesin Basis Data)