SQL Server CLR Stored Procedures

2021-09-14

筆記如何使用 Visual Studio 使用 SQL Server Database Project 來設計 C# CLR Stored Procedures / Functions。

SQL Server Logo

說明

建立專案,類型為「SQL Server 資料庫專案

建立項目,類型為「SQL CLR C# 預存程序

Coding

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 POC ()
    {
        SqlPipe sqlPipeLine = SqlContext.Pipe;
        sqlPipeLine.Send(DateTime.UtcNow.ToString());
    }
}

執行此預存程序可以取得伺服器的日期時間,值得注意的是 SqlPipe Class 🤔

資料庫伺服器設定

資料庫伺服器需要允許執行 .NET CLR

EXEC sp_configure 'clr enabled' 

EXEC sp_configure 'clr enabled', 1
RECONFIGURE

驗證

USE master;
EXEC [dbo].[POC];

限制

🚫 無法從 .NET CLR 中進行 WebRequests。

參考資料

How to: Create CLR stored procedure and Work with CLR database object

如何在SQL Server中加入 C# CLR Function