我现在正在用C#编写存储过程,但我遇到了参数大小的问题。
所以我在VS 2008中创建了一个项目并创建了几个存储过程,看起来有点像这样:
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SaveProgress(... SqlString logpart, ...)
{
...stuff...
}
}
现在因为我没有指定任何其他内容,当我将其部署到数据库时,CREATE DATABASE
语句(显然)创建时使用nvarchar(4000)
作为输入参数的定义。
但是,我经常需要刷新大于4000个字符的日志部分,所以我希望它是nvarchar(MAX)
。
现在我想我可以做一些jiggery-pokery并使用Management Studio来重新定义CREATE DATABASE
语句,但我实际上想定义一个事实,我希望它是MAX
在项目/解决方案中,部署正确完成,我不必开始为需要在我之后维护此代码的任何人添加大量的评论和/或文档。
有没有办法在代码中或者在AssemblyInfo中指定这个或类似的东西?
答案 0 :(得分:3)
回顾这几年后,我尝试在一个从数据库读取数据的函数中使用SqlChars
,并返回一个带有数据的格式化字符串。使用SqlChars
实际上制作了功能炸弹,声明它无法找到链接服务器系统 - 一条似乎与问题无关的错误消息,因为我从来没有在第一个引用链接服务器的地方。
将返回类型和参数更改回SqlString
,将[return:SqlFacet(MaxSize = -1)]
属性添加到函数中,并为每个参数添加[SqlFacet(MaxSize = -1)]
,使我的函数正常工作。
答案 1 :(得分:2)
尝试使用SqlChars
。 SqlChars自动映射到NVARCHAR(MAX)