Указание длины SqlString для хранимой процедуры CLR - PullRequest
2 голосов
/ 30 марта 2011

Я сейчас пишу хранимые процедуры на 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 или что-то в этом роде?

Ответы [ 2 ]

3 голосов
/ 10 декабря 2013

Возвращаясь к этому спустя годы, я попытался использовать SqlChars в функции, которая считывает данные из базы данных и возвращает отформатированную строку с данными в ней. Использование SqlChars фактически сделало функцию бомба, заявив, что она не может найти связанный сервер System - сообщение об ошибке, которое, похоже, не имеет отношения к проблеме, так как я никогда не ссылался на связанный сервер в первую очередь.

Изменение типа возвращаемого значения и параметров обратно на SqlString, добавление атрибута [return:SqlFacet(MaxSize = -1)] к функции и добавление [SqlFacet(MaxSize = -1)] к каждому параметру заставило мою функцию работать правильно.

2 голосов
/ 30 марта 2011

Попробуйте использовать SqlChars.SqlChars автоматически сопоставляется с NVARCHAR (MAX)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...