Я пытаюсь получить выходное значение varbinary из запроса, запущенного на SQL Server 2005, в классический ASP. Выполнение ASP просто терпит неудачу, когда дело доходит до части кода, который просто принимает вывод varbinary в строку. Поэтому я думаю, что мы должны справиться с этим по-другому.Извлечение varbinary выход из запроса в sql-сервере в классический ASP
На самом деле, я пытаюсь установить (sp_setapprole) и unset (sp_unsetapprole) роли приложения для подключения к базе данных. Сначала я бы установил апелляцию, затем я запустил свои требуемые запросы и, наконец, отменил решение. Во время сбрасывания - когда мне нужно значение cookie (varbinary) в моем ASP-коде, чтобы я мог создать такой запрос, как «exec sp_unsetapprole @cookie». На этом этапе у меня нет значения cookie (varbinary).
Причина, по которой я делаю это, я использовал для получения ошибки «sp_setapprole был неправильно вызван» при попытке установить роли приложения. Я отключил объединение, добавив в мою строку подключения «OLE DB Services = -2; Pooling = False».
Я знаю, что объединение помогает производительности, но здесь у меня большие проблемы.
Пожалуйста, помогите мне получить значение varbinary в классическом файле ASP или предложите способ установить & unset роли приложения. В любом случае решения оцениваются.
Спасибо, Nandagopal
Я пробовал эту опцию, но я столкнулся с этой проблемой, когда запрос выполняется из объекта Command. Exec sp_executesql N'EXEC sp_unsetapprole @ P1», N '@ P1 VARBINARY (36)', 0x01000000CD11697F8F0ED362A471B0B05D0F47B9BDBBC423A1869EA4E510CD9F29230000 И это приводит к Msg 15422, уровень 16, состояние 1, процедура sp_unsetapprole, строка 18 роли приложений могут быть активированы только на уровне ad hoc. Если бы это был какой-то другой запрос, он бы сработал, но, будучи sp_unsetapprole, я должен запустить этот запрос «напрямую» в базу данных. – user303526
Должно быть возможным: состояния MSDN «Хранимая процедура sp_setapprole может выполняться только с помощью прямых операторов Transact-SQL, она не может быть выполнена в другой хранимой процедуре или из пользовательской транзакции». Вы не пытаетесь сделать это внутри транзакции случайно? Вы также можете попытаться изменить командный стиль. Наконец, посмотрите на SQL Profiler, чтобы узнать, какие вызовы базы данных генерируются ADO. – tijmenvdk