[英]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.