Я прочитал здесь (и в других местах), что в SQL Server 2008 возможно создать определяемый пользователем агрегат, который может возвращать строку длиной более 8000 символов. Это именно то, что мне нужно.
Предположительно, метод должен установить maxByteSize в -1 вместо числа между 1 и 8000; это должно разрешить любой размер до 2 ГБ.
По какой-то причине, очевидно, вы не можете развернуть прямо из Visual Studio 2008, если используете этот параметр; поэтому вам нужно вручную развернуть.
Итак: я строю свой проект - GroupConcat (который должен имитировать агрегатор group_concat MySQL) - который дает мне в папке bin проекта файл "SqlClassLibrary.dll". В соответствии с инструкциями на указанной выше странице я собираю сборку в SQL Server. Команда выполняется успешно. Однако когда я пытаюсь на самом деле использовать агрегатор groupconcat:
select department, dbo.groupconcat(projectNumber) from projectleads group by department
... он говорит, что не может быть найден. Это все работает нормально, если я установил maxByteSize на 8000 и развернул его непосредственно из VS2008, но мне нужно> 8000. Кто-нибудь знает, что я делаю не так?
Спасибо
-дан
ПРИМЕЧАНИЕ: Мне действительно нужно иметь агрегаторную функцию groupconcat, а не использовать некоторые приемы SQL Server, которые я часто видел.