Bagikan melalui


Contoh Halo Dunia

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', 1

    GO

    RECONFIGURE

    GO

    Nota

    Untuk mengaktifkan CLR, Anda harus memiliki ALTER SETTINGS izin tingkat server, yang secara implisit dipegang oleh anggota sysadmin peran server tetap dan serveradmin .

  • 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:

  1. Buka perintah Visual Studio atau .NET Framework.

  2. Jika perlu, buat direktori untuk sampel Anda. Untuk contoh ini, kita akan menggunakan C:\MySample.

  3. Di c:\MySample, buat HelloWorld.vb (untuk sampel Visual Basic) atau HelloWorld.cs (untuk sampel C#) dan salin kode sampel Visual Basic atau C# yang sesuai (di bawah) ke dalam file.

  4. Kompilasikan kode sampel dari prompt baris perintah dengan menjalankan salah satu hal berikut, tergantung pada pilihan bahasa Anda.

    • vbc C:HelloWorld.vb /target:library

    • csc /target:library HelloWorld.cs

  5. Salin kode penginstalan Transact-SQL ke dalam file dan simpan seperti Install.sql di direktori sampel.

  6. Menyebarkan prosedur rakitan dan tersimpan dengan menjalankan

    • sqlcmd -E -I -i install.sql -v root = "C:\MySample\"
  7. Salin Transact-SQL uji skrip perintah ke dalam file dan simpan seperti test.sql di direktori sampel.

  8. Jalankan skrip pengujian dengan perintah berikut

    • sqlcmd -E -I -i test.sql
  9. Salin skrip pembersihan Transact-SQL ke dalam file dan simpan seperti cleanup.sql di direktori sampel.

  10. 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)