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
Database Azure
SQLInstans
Terkelola Azure SQLAzure Synapse Analytics
Sistem Platform Analitik (PDW)
Database SQL di Microsoft Fabric
Artikel ini menjelaskan cara menjalankan prosedur tersimpan di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.
Ada berbagai cara untuk mengeksekusi prosedur tersimpan. Pendekatan pertama dan paling umum adalah bagi aplikasi atau pengguna untuk memanggil prosedur. Pendekatan lain adalah mengatur prosedur tersimpan 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. Prosedur ini dapat dipanggil dan dijalankan tanpa kata kunci EXEC jika prosedur adalah pernyataan pertama dalam batch Transact-SQL.
Limitations
Kolase database panggilan digunakan saat mencocokkan nama prosedur sistem. Untuk alasan ini, selalu gunakan format nama prosedur sistem yang tepat dalam panggilan prosedur. Misalnya, kode ini gagal jika dijalankan dalam konteks database yang memiliki kolasi peka terhadap huruf besar/kecil.
EXEC SP_heLP; -- Fails to resolve because SP_heLP doesn't 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.
Recommendations
Gunakan rekomendasi berikut untuk menjalankan prosedur tersimpan.
Prosedur sistem tersimpan
Prosedur sistem dimulai dengan awalan sp_. Karena secara logis muncul di semua database yang ditentukan pengguna dan sistem, prosedur sistem dapat dijalankan dari database apa pun tanpa harus sepenuhnya memenuhi syarat nama prosedur. Namun, yang terbaik adalah memenuhi syarat skema semua nama prosedur sistem dengan sys nama skema untuk mencegah konflik nama. Contoh berikut menunjukkan metode yang direkomendasikan untuk memanggil prosedur sistem.
EXEC sys.sp_who;
Prosedur tersimpan yang ditentukan pengguna
Saat menjalankan prosedur yang ditentukan pengguna, yang terbaik adalah melengkapi nama prosedur dengan nama skema. Praktik ini memberikan peningkatan performa kecil karena Mesin Database tidak perlu mencari beberapa skema. Menggunakan nama skema 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. Prosedur ini menerima dua parameter input. Untuk informasi tentang menentukan parameter input dan output, lihat Menentukan parameter dalam prosedur tersimpan.
EXECUTE SalesLT.uspGetCustomerCompany @LastName = N'Cannon', @FirstName = N'Chris';
GO
Or:
EXEC SalesLT.uspGetCustomerCompany N'Cannon', N'Chris';
GO
Jika prosedur yang didefinisikan oleh pengguna yang tidak memenuhi syarat ditentukan, Mesin Database mencari prosedur dalam urutan berikut:
sysSkema database saat ini.Skema default pemanggil jika prosedur dijalankan dalam batch atau di SQL dinamis. Jika nama prosedur yang tidak memenuhi syarat muncul di dalam isi definisi prosedur lain, skema yang berisi prosedur lain ini akan dicari berikutnya.
Skema
dbodalam database saat ini.
Keamanan
Untuk informasi keamanan, lihat EXECUTE AS (Transact-SQL) dan EXECUTE AS Clause (Transact-SQL).
Permissions
Untuk informasi izin, lihat Izin di EXECUTE (Transact-SQL).
Pelaksanaan prosedur tersimpan
Anda dapat menggunakan SQL Server Management Studio (SSMS), atau Transact-SQL di jendela kueri SSMS, untuk menjalankan prosedur tersimpan. Instal versi terbaru SQL Server Management Studio (SSMS).
Menggunakan SQL Server Management Studio
Di Object Explorer, sambungkan ke instans SQL Server atau Azure SQL Database, perluas instans tersebut, lalu perluas Database.
Perluas database yang Anda inginkan, perluas Keterprograman, lalu perluas Prosedur Tersimpan.
Klik kanan prosedur tersimpan yang ingin Anda jalankan dan pilih Jalankan Prosedur Tersimpan.
Dalam kotak dialog Jalankan Prosedur , Parameter menunjukkan nama setiap parameter, Jenis Data menunjukkan jenis datanya, dan Parameter Output menunjukkan apakah itu parameter output.
Untuk setiap parameter:
- Di bawah Nilai, ketik nilai yang akan digunakan untuk parameter .
- Di bawah Lewati Nilai Null, pilih apakah akan menggunakan NULL sebagai nilai parameter.
Pilih OK untuk menjalankan prosedur tersimpan. Jika prosedur tersimpan tidak memiliki parameter apa pun, cukup pilih OK.
Prosedur tersimpan berjalan, dan hasilnya muncul di panel Hasil .
Misalnya, untuk menjalankan
SalesLT.uspGetCustomerCompanyprosedur tersimpan dari artikel Buat prosedur tersimpan, masukkan Cannon untuk parameter @LastName dan Chris untuk parameter @FirstName, dan pilih OK. Prosedur ini mengembalikanFirstNameChris,LastNameCannon, danCompanyNameOutdoor Sporting Goods.
Menggunakan Transact-SQL di jendela kueri
Di SSMS, sambungkan ke instans SQL Server atau Azure SQL Database.
Dari toolbar, pilih Kueri Baru.
Masukkan pernyataan EXECUTE dengan sintaks berikut ke dalam jendela kueri, yang menyediakan nilai untuk semua parameter yang diharapkan:
EXECUTE <ProcedureName> N'<Parameter 1 value>, N'<Parameter x value>; GOMisalnya, pernyataan Transact-SQL berikut menjalankan prosedur tersimpan
uspGetCustomerCompanydenganCannonsebagai parameter@LastNamedanChrissebagai parameter@FirstName.EXEC SalesLT.uspGetCustomerCompany N'Cannon', N'Chris'; GODari toolbar, pilih Jalankan. Prosedur tersimpan sedang berjalan.
Opsi untuk nilai parameter
Ada beberapa cara yang dapat digunakan untuk memberikan parameter dan nilai dalam pernyataan EXECUTE dari prosedur tersimpan. Contoh berikut menunjukkan beberapa opsi berbeda untuk pernyataan EXECUTE.
Jika Anda memberikan nilai parameter dalam urutan yang sama seperti yang ditentukan dalam prosedur tersimpan, Anda tidak perlu menyatakan nama parameter. Contohnya:
EXEC SalesLT.uspGetCustomerCompany N'Cannon', N'Chris';Jika Anda memberikan nama parameter dalam
@parameter_name=valuepola, Anda tidak perlu menentukan nama parameter dan nilai dalam urutan yang sama seperti yang ditentukan. Misalnya, salah satu pernyataan berikut valid:EXEC SalesLT.uspGetCustomerCompany @FirstName = N'Chris', @LastName = N'Cannon';or:
EXEC SalesLT.uspGetCustomerCompany @LastName = N'Cannon', @FirstName = N'Chris';Jika Anda menggunakan
@parameter_name=valueformulir untuk parameter apa pun, Anda harus menggunakannya untuk semua parameter berikutnya dalam pernyataan tersebut. Misalnya, Anda tidak dapat menggunakanEXEC SalesLT.uspGetCustomerCompany1 @FirstName = N'Chris', N'Cannon';.
Eksekusi otomatis saat startup
Berlaku untuk: SQL Server
Di SQL Server, anggota sysadmin peran server dapat menggunakan sp_procoption untuk mengatur atau menghapus prosedur untuk eksekusi otomatis saat startup. Prosedur startup harus berada dalam master database, harus dimiliki oleh sa, dan tidak dapat memiliki parameter input atau output. Untuk informasi selengkapnya, lihat sp_procoption (Transact-SQL).
Prosedur yang ditandai untuk eksekusi otomatis saat startup dijalankan setiap kali SQL Server dimulai dan database dipulihkan selama proses startup tersebut master . 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 di tempdb, seperti membuat tabel sementara global. Eksekusi otomatis memastikan bahwa tabel sementara seperti itu selalu ada ketika tempdb dibuat ulang selama startup SQL Server.
Prosedur yang dijalankan secara otomatis beroperasi dengan izin yang sama seperti anggota dalam peran server tetap sysadmin. Setiap pesan kesalahan yang dihasilkan oleh prosedur menulis ke log kesalahan SQL Server.
Tidak ada batasan jumlah prosedur startup yang dapat Anda miliki, tetapi setiap prosedur startup menggunakan satu thread pekerja saat dijalankan. Jika Anda perlu menjalankan beberapa prosedur saat startup tetapi tidak perlu menjalankannya secara paralel, buat satu prosedur prosedur startup dan minta prosedur tersebut memanggil prosedur lain. Metode ini hanya menggunakan satu thread pekerja.
Tip
Jangan mengembalikan kumpulan hasil apa pun dari prosedur yang dijalankan secara otomatis. Karena prosedur sedang dijalankan oleh SQL Server alih-alih aplikasi atau pengguna, tidak ada tempat bagi set hasil untuk pergi.
Note
Azure SQL Database dirancang untuk mengisolasi fitur dari dependensi pada master database. Dengan demikian, pernyataan Transact-SQL yang mengonfigurasi opsi tingkat server tidak tersedia di Azure SQL. Anda sering dapat menemukan alternatif yang sesuai dari layanan Azure lainnya, seperti Elastic jobs atau Azure Automation.
Mengatur prosedur untuk dijalankan secara otomatis saat startup
Hanya administrator sistem (sa) yang dapat menandai prosedur untuk dijalankan secara otomatis.
Di SSMS, sambungkan ke Mesin Database.
Dari toolbar Standar, pilih Kueri Baru.
Masukkan perintah sp_procoption berikut untuk mengatur prosedur tersimpan agar dijalankan secara otomatis di startup SQL Server.
EXEC sp_procoption @ProcName = N'<stored procedure name>' , @OptionName = 'startup' , @OptionValue = 'on'; GODi toolbar, pilih Jalankan.
Menghentikan prosedur agar tidak dijalankan secara otomatis saat startup
Sebuah sysadmin dapat menggunakan sp_procoption untuk menghentikan prosedur agar tidak dieksekusi secara otomatis saat startup SQL Server.
Di SSMS, sambungkan ke Mesin Database.
Dari toolbar Standar, pilih Kueri Baru.
Masukkan perintah berikut ke dalam jendela kueri.
EXEC sp_procoption @ProcName = N'<stored procedure name>' , @OptionName = 'startup' , @OptionValue = 'off'; GODi toolbar, pilih Jalankan.