簡體   English   中英

在SQL Server中集成ac#類庫

[英]Integration of a c# class library in SQL Server

我正在嘗試在SQL Server 2012中測試CLR功能的功能。我在網上找到了有關如何基本執行此操作的教程,並將其在服務器上運行。( https://www.skylinetechnologies.com/Blog/Skyline-博客/ 2013年3月/ SQLR-Functions-in-SQL-Server-A-Tutorial

現在,我想創建一個不返回表而是返回字符串的函數。 據我了解,SQL Server需要某種對象才能使用,因此我使用以下測試方法進行了嘗試:

 public static class  TestSingleValue
{
  [SqlFunction(DataAccess = DataAccessKind.None, FillRowMethodName = "MyFillRowMethod", IsDeterministic = true)]

  public static SqlChars Test123()
    {
        SqlChars test = new SqlChars("teststring");
        return test;

    }

}

在SQL Server上,我執行以下操作:

ALTER ASSEMBLY ClassLibrary2 from 'D:\SQL\TestCLR\ClassLibrary2.dll' with Permission_set = SAFE
CREATE FUNCTION TestCLR()
  returns nvarchar(max)
    AS 
       EXTERNAL name ClassLibrary2.[CLRTest.TestSingleValue].Test123
 GO 

Execute TestCLR

SQL Server在執行測試方法時引發錯誤,指出“對象引用未設置為對象的實例”,並且進一步:

System.NullReferenceException:System.Data.SqlServer.Internal.ClrLevelContext.GetCurrentContextForLobAccess(>> CClrLobContext * pLobContext)System.Data.SqlServer.Internal.ClrLevelContext.GetXvarWlobStream(CXVariantBase pxvarSource,XvarLOBStreamInitCode eCode,IntareClcobs,LintAccess,LintAccess,LintAccess,LintAccess,LintAccess,LintAccess

誰能告訴我我在哪里弄錯了概念,或者可以提供指向好的教程的鏈接? 直到現在我都找不到。 提前致謝。

好的,我自己找到了答案,問題在於“ nvarchar(max)”作為返回類型。 您必須定義nvarchar的長度或使用變通方法,然后就可以正常工作。 相關: 如何使用Nvarchar(max)參數創建CLR存儲過程?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM