Образец результирующего набора
Изменения: 17 июля 2006 г.
Иногда полезно выполнять команды в процессе считывания результатов запроса, не открывая новое соединение и не считывая все результаты в память. Этого позволяет добиться технология MARS в ADO .NET 2.0. К сожалению, режим MARS не реализуется для внутрипроцессного поставщика для программирования на стороне сервера. Чтобы обойти это ограничение, можно воспользоваться серверными курсорами. Данный образец демонстрирует, каким образом они позволяют обойти проблему отсутствия поддержки режима MARS для программирования на стороне сервера.
Примечание. |
---|
Использование серверных курсоров ресурсоемко и иногда мешает оптимизатору запросов Microsoft SQL Server в повышении производительности запросов. Соответственно, следует рассмотреть возможность изменения кода таким образом, чтобы использовать JOIN везде, где это возможно. |
API-интерфейс для этого класса подобен модулю чтения данных, за исключением того, что по результирующему набору можно перемещаться вперед и назад, а по открытому соединению могут выполняться и другие команды, даже если результирующий набор еще не закрыт.
Эта реализация существенно упрощена, чтобы облегчить понимание образца. При более эффективной реализации будут выбираться множественные строки во избежание лишних проходов базы данных после каждой полученной строки.
Для работы с этим классом необходимо существенно меньше памяти, чем при полном заполнении набора данных результатами запроса, что очень важно при программировании на стороне сервера.
В этом образце показано также применение атрибута «Разрешить частично достоверный вызывающий код», который указывает, что сборка результирующего набора является библиотекой, которая может безопасно вызываться из других сборок. Такой подход немного сложнее, но гораздо надежнее, чем регистрация вызывающей сборки с разрешением unsafe
, поскольку такая регистрация ограничивает число задействуемых ресурсов вне сервера и предотвращает повреждения его целостности.
Каталог установки.
диск:\Program Files\Microsoft SQL Server\90\Samples\
Engine\Programmability\CLR\ResultSet\
Сценарий
Джейн — разработчик базы данных Adventure Works Cycles. Она должна написать программу, которая считывает данные и выполняет другие действия прежде, чем все данные будут возвращены от ее запроса стороны сервера.
Языки
Transact-SQL, Visual C# и Visual Basic.
Возможности
Образец ResultSet использует следующие возможности SQL Server.
Часть образца | Возможности |
---|---|
Все части |
CLR, курсоры на стороне сервера, Transact-SQL |
Предварительные требования
Прежде чем запустить этот образец, убедитесь, что установлено следующее программное обеспечение.
- SQL Server 2005 или SQL Server 2005 Express Edition (SQL Server Express). SQL Server Express можно получить бесплатно на веб-узле «Документация и образцы SQL Server 2005 Express Edition».
- База данных AdventureWorks, включенная в поставку SQL Server 2005, также доступна в центре разработчиков SQL Server.
- Образцы компонента SQL Server 2005 Database Engine. Данные образцы входят в комплект SQL Server 2005. Последнюю версию образцов можно загрузить в центре разработчиков на SQL Server.
- Пакет .NET Framework SDK 2.0 или среда Microsoft Visual Studio 2005. Пакет .NET Framework SDK можно получить бесплатно. Дополнительные сведения см. в разделе Установка пакета .NET Framework SDK.
Построение образца
Если файл ключа для строгого имени еще не создавался, создайте его следующим образом.
To generate a strong name key file
Откройте командную строку Microsoft Visual Studio 2005. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.
-- или --
Откройте командную строку Microsoft .NET Framework. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.
Используйте команду CD, чтобы сменить текущий каталог командной строки и перейти в каталог, в котором установлены образцы.
Примечание. Чтобы определить каталог, в котором установлены образцы, нажмите кнопку Пуск, укажите пункты Все программы, Microsoft SQL Server, Документация и учебные материалы, а затем выберите пункт Каталог образцов. Если использовался каталог установки по умолчанию, то образцы расположены в каталоге «<системный_диск>:\Program Files\Microsoft SQL Server\100\Samples». В командной строке выполните следующую команду, чтобы создать файл ключа:
sn -k SampleKey.snk
Важно! Дополнительные сведения о паре ключей для строгого имени см. в статье по строгим именам и безопасности для платформы .NET Framework в центре разработчиков .NET в MSDN.
Построение образца ResultSet
Скомпилируйте образец в среде Visual Studio 2005 с использованием поставляемого решения Visual Studio или при помощи программы Microsoft MSBuild, которая включена в пакет .NET Framework SDK 2.0. Выполните в командной строке следующие команды:
msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\ ResultSet.sln
Убедитесь, что база данных AdventureWorks установлена.
Если образцы компонента SQL Server Database Engine не установлены в каталог по умолчанию, измените путь в разделе сценария CREATE ASSEMBLY в файле Scripts\InstallCS.sql, чтобы указать место установки образцов.
Если вы не являетесь администратором используемого экземпляра SQL Server, то для завершения установки необходимо, чтобы администратор предоставил разрешение CreateAssembly.
Откройте в среде SQL Server Management Studio файл scripts\installCS.sql или scripts\installVB.sql (в зависимости от типа проекта: Visual C# или Visual Basic). Запустите сценарий из этого файла или введите в командной строке следующую команду:
sqlcmd -E -I -i Scripts\InstallCS.sql
Выполнение образца
Запуск образца ResultSet
Откройте файл scripts\test.sql в среде Management Studio и выполните сценарий, содержащийся в файле. Либо в окне командной строки выполните следующую команду:
sqlcmd -E -I -i Scripts\test.sql
Удаление образца
Удаление образца ResultSet
Откройте в среде SQL Server Management Studio файл scripts\cleanup.sql и запустите содержащийся в нем сценарий. Либо в командной строке выполните следующую команду:
sqlcmd -E -I -i Scripts\cleanup.sql
Примечания
Чтобы этот образец работал правильно, должна быть включена среда CLR для SQL Server 2005 или SQL Server Express.
Образцы предназначены только для обучения. Они не предназначены для использования в рабочей среде и не тестировались в ней. Корпорация Майкрософт не предоставляет техническую поддержку для этих образцов. Образцы приложений и сборок не следует соединять или использовать с рабочей базой данных SQL Server или с сервером отчетов без разрешения системного администратора.
См. также
Другие ресурсы
Allowing Partially Trusted Callers
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
5 декабря 2005 г. |
|
17 июля 2006 г. |
|