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.
Sampel Hello World menunjukkan operasi dasar yang terlibat dalam membuat, menyebarkan, dan menguji prosedur tersimpan berbasis integrasi runtime bahasa umum sederhana (CLR). Sampel ini juga menunjukkan cara mengembalikan data melalui rekaman, yang secara dinamis dibangun oleh prosedur tersimpan dan dikembalikan ke pemanggil.
Prosedur HelloWorld tersimpan mengembalikan string "Halo dunia!" dalam kumpulan hasil yang terdiri dari satu baris. Contoh ini mengilustrasikan beberapa kegunaan untuk kelas Microsoft.SqlServer.Server.SqlMetaData, Microsoft.SqlServer.Server.SqlDataRecord dan Microsoft.SqlServer.Server.Pipe.
Prasyarat
Untuk membuat dan menjalankan proyek ini, perangkat lunak berikut harus diinstal:
SQL Server atau SQL Server Express. Anda dapat memperoleh SQL Server Express secara gratis dari SQL Server Express Documentation dan Samples Web site
Database AdventureWorks yang tersedia di situs Web Pengembang SQL Server
.NET Framework SDK 2.0 atau yang lebih baru atau Microsoft Visual Studio 2005 atau yang lebih baru. Anda dapat memperoleh .NET Framework SDK secara gratis.
Selain itu, kondisi berikut harus dipenuhi:
Instans SQL Server yang Anda gunakan harus mengaktifkan integrasi CLR.
Untuk mengaktifkan integrasi CLR, lakukan langkah-langkah berikut:
Mengaktifkan Integrasi CLR
- Jalankan perintah Transact-SQL berikut:
sp_configure 'clr enabled', 1GORECONFIGUREGONota
Untuk mengaktifkan CLR, Anda harus memiliki
ALTER SETTINGSizin tingkat server, yang secara implisit dipegang oleh anggotasysadminperan server tetap danserveradmin.Database AdventureWorks harus diinstal pada instans SQL Server yang Anda gunakan.
Jika Anda bukan administrator untuk instans SQL Server yang Anda gunakan, Anda harus memiliki administrator yang memberi Anda izin CreateAssembly untuk menyelesaikan penginstalan.
Membangun Sampel
Buat dan jalankan sampel dengan menggunakan instruksi berikut:
Buka perintah Visual Studio atau .NET Framework.
Jika perlu, buat direktori untuk sampel Anda. Untuk contoh ini, kita akan menggunakan C:\MySample.
Di c:\MySample, buat
HelloWorld.vb(untuk sampel Visual Basic) atauHelloWorld.cs(untuk sampel C#) dan salin kode sampel Visual Basic atau C# yang sesuai (di bawah) ke dalam file.Kompilasikan kode sampel dari prompt baris perintah dengan menjalankan salah satu hal berikut, tergantung pada pilihan bahasa Anda.
vbc C:HelloWorld.vb /target:librarycsc /target:library HelloWorld.cs
Salin kode penginstalan Transact-SQL ke dalam file dan simpan seperti
Install.sqldi direktori sampel.Menyebarkan prosedur rakitan dan tersimpan dengan menjalankan
sqlcmd -E -I -i install.sql -v root = "C:\MySample\"
Salin Transact-SQL uji skrip perintah ke dalam file dan simpan seperti
test.sqldi direktori sampel.Jalankan skrip pengujian dengan perintah berikut
sqlcmd -E -I -i test.sql
Salin skrip pembersihan Transact-SQL ke dalam file dan simpan seperti
cleanup.sqldi direktori sampel.Jalankan skrip dengan perintah berikut
sqlcmd -E -I -i cleanup.sql
Contoh Kode
Berikut ini adalah daftar kode untuk sampel ini.
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void HelloWorld()
{
Microsoft.SqlServer.Server.SqlMetaData columnInfo
= new Microsoft.SqlServer.Server.SqlMetaData("Column1", SqlDbType.NVarChar, 12);
SqlDataRecord greetingRecord
= new SqlDataRecord(new Microsoft.SqlServer.Server.SqlMetaData[] { columnInfo });
greetingRecord.SetString(0, "Hello world!");
SqlContext.Pipe.Send(greetingRecord);
}
};
Visual Basic
Imports System
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Partial Public NotInheritable Class StoredProcedures
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub HelloWorld()
Dim columnInfo As New Microsoft.SqlServer.Server.SqlMetaData("Column1", _
SqlDbType.NVarChar, 12)
Dim greetingRecord As New SqlDataRecord(New _
Microsoft.SqlServer.Server.SqlMetaData() {columnInfo})
greetingRecord.SetString(0, "Hello World!")
SqlContext.Pipe.Send(greetingRecord)
End Sub
End Class
Ini adalah skrip penginstalan Transact-SQL (Install.sql), yang menyebarkan rakitan dan membuat prosedur tersimpan dalam database.
USE AdventureWorks
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'usp_HelloWorld')
DROP PROCEDURE usp_HelloWorld;
GO
IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'HelloWorld')
DROP ASSEMBLY HelloWorld;
GO
DECLARE @SamplesPath nvarchar(1024)
set @SamplesPath = '$(root)'
CREATE ASSEMBLY HelloWorld
FROM @SamplesPath + 'HelloWorld.dll'
WITH permission_set = Safe;
GO
CREATE PROCEDURE usp_HelloWorld
--(
-- @Greeting nvarchar(12) OUTPUT
--)
AS EXTERNAL NAME HelloWorld.[StoredProcedures].HelloWorld;
GO
Ini adalah test.sql, yang menguji sampel dengan menjalankan prosedur tersimpan.
use AdventureWorks
go
execute usp_HelloWorld
USE AdventureWorks;
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'usp_HelloWorld')
DROP PROCEDURE usp_HelloWorld;
GO
Transact-SQL berikut menghapus prosedur rakitan dan tersimpan dari database.
USE AdventureWorks
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'usp_HelloWorld')
DROP PROCEDURE usp_HelloWorld;
GO
IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'HelloWorld')
DROP ASSEMBLY HelloWorld;
GO
Lihat Juga
Skenario Penggunaan dan Contoh untuk Integrasi Common Language Runtime (CLR)