【发布时间】:2011-11-26 15:57:15
【问题描述】:
我有一个问题,我无法解决。我正在使用 SQL Server 2005、C# CLR 来使用外部 dll。问题在于参数的长度。我需要使用函数参数类型varchar(max)。如果在 C# 代码中我使用 string、SqlSring,我不能使用 T-SQL 类型 varchar(max),只能使用 varchar(4000) 或 nvarchar(4000)。我需要说,在某些情况下,当我需要使用超过 4000 个符号时,我需要知道 varchar(max) 需要使用什么 C# 类型。
我读过很多文章,其中有几篇说,为此我可以使用SqlChars。但!我对字符串进行了操作。如何使用string 或SqlString 进行操作,然后转换为SqlChars? (可能是SqlChars.ToString() 或SqlChars.ToSqlString())。
我没有找到任何 C# 代码。
【问题讨论】:
-
使用其最大容量的
varchar(max)字符串将无法加载到 CLR 字符串中,因为它会耗尽地址空间。您能否更明确地说明您希望对这些字符串执行哪些操作? -
我将任何 SQL 类型转换为 varchar 并将这个值发送到外部 dll。然后,对其进行操作并返回到 SQL Server。现在我使用 SQL/vchar(4000) 和 C#/string。我需要超过 4000 个符号。
-
@Damien_The_Unbeliever:我的印象是 SQL Server 的
varchar(max)和 .NETstring实例的大小都可以达到 2 GB.... -
@marc_s - 事实证明,
varchar(max)变量可以contain more than 2GB。但我主要是从另一边工作。当然,在 32 位 CLR 下,您实际上无法分配 2GB 的对象,而且我认为即使在 64 位下您也可以挣扎。
标签: c# tsql sql-server-2005 types sqlclr