|
Программирование >> Разработка пользовательского интерфейса
Таблица 6.7. Сравнение внешних представлений и сквозных запросов SQL Удаленное представление Сквозные запросы SQL Базируется на операторе SQL Базируется на любом операторе SQL, SELECT Выбирает одно результирующее множество Обеспечивает встроенное управление соединениями Предоставляет встроенную стандартную информацию обновления для операций обновления, вставки и удаления Обеспечивает неявное выполнение SQL и выборку данных Не обеспечивает управление транзакциями Постоянно хранит свойства в базе данных открывая доступ к операторам определения данных или к выполнению хранимых процедур сервера Выбирает одно или несколько результирующих множеств Требует явного управления соединениями Не предоставляет информации обновления по умолчанию Обеспечивает явное выполнение SQL и управление результатами выборки Обеспечивает явное управление транзакциями Обеспечивает временные свойства для курсора сквозного запроса SQL, основанного на свойствах сеанса к нужным объектам. Полномочия, принимаемые для новой базы данных по умолчанию, делают ее доступной только системным администраторам и владельцу базы данных. Вы можете добавить новых пользователей и группы пользователей, используя на сервере SQL Server приложение Security Manager или системные процедуры sр adduser и sp addgroup. Подробнее о том, как добавлять пользователей и группы, вы можете узнать из приводимого ниже примера. Чтобы предоставить полномочия доступа к таблицам, воспользуйтесь приложением SQL Object Manager или командами GRANT и REVOKE. Когда на сервере SQL Server создается база данных, в системные таблицы главной базы данных Master добавляются новые записи. Сделав дамп базы данных Master, вы получите резервную копию, отражающую все последние изменения. Составьте план регулярного сохранения резервных копий содержимого базы данных, чтобы при возникновении серьезной проблемы вы могли восстановить базу данных из резервной копии. Функция зеркального дублирования устройства выполняет постоянное дублирование информации с одного устройства SQL Server на другое. Если первое устройство даст сбой, то можно перейти на второе, содержащее актуальную копию всех транзакций. Если ожидаются многочисленные изменения в базе данных в промежутке между выполнением резервных копий и нельзя потерять ни одно из этих изменений, воспользуйтесь средством дублирования устройств. Оно будет наиболее эффективным, когда устройства находятся на раздельных дисках, поскольку если они находятся на одном диске и этот диск даст сбой, будут потеряны оба устройства. А теперь рассмотрим выполнение процесса наращивания локальной БД с помощью технологии сквозных запросов SQL . Приложение клиент-сервер может получать доступ к данным на сервере двумя способами: С помощью внешних представлений. Средствами сквозных запросов SQL. Внешние представления - это самый популярный и простой метод доступа к внешним данным и их обновления. Мастер наращивания может автоматически создавать внешние представления в базе данных в процессе наращивания, также возможно создание внешних представлений с помощью Visual FoxPro после наращивания. Подробнее о внешних представлениях вы прочитаете в дальнейшем. Технология сквозных запросов SQL позволяет посылать оператор SQL непосредственно на сервер. Поскольку операторы сквозного запроса SQL выполняются на сервере, они позволяют существенно повысить производительность работы приложения. В табл. 6.7 сравниваются технологии использования внешних представлений и сквозных запросов SQL. Сквозной запрос SQL (SQL pass-through) обеспечивает прямой доступ к внешнему серверу с помощью функций сквозного запроса SQL. Эти функции расширяют возможности доступа к серверу и управления им, предлагаемые представлениями. Вы можете, например, составлять описание данных на внешнем сервере, устанавливать свойства сервера и обращаться к хранимым процедурам сервера. Сквозной запрос SQL является наилучшим средством для создания результирующих множеств, предназначенных только для чтения, и для использования любого другого синтаксиса SQL. В отличие от представления, которое является результирующим множеством оператора SQL SELECT, сквозные запросы SQL позволяют посылать на сервер все что угодно, используя функцию SQLEXEC() для системы Visual FoxPro. Подробнее об отдельных функциях см. главу 8. В конце данной главы приведен пример использования технологии SQL pass-through на Visual FoxPro. С помощью сквозных запросов SQL вы сами можете создавать курсоры. Механизм сквозных запросов SQL предлагает хотя и более непосредственный, но менее долговечный доступ к серверу, чем представления. Если описания представлений хранятся в базе данных на постоянной основе, то курсоры, созданные сквозными запросами SQL, существуют только в рамках текущего сеанса. Чтобы с помощью сквозных запросов SQL подсоединиться к внешнему источнику данных ODBC, сначала вызовите функцию Visual FoxPro SQLCONNECT(), которая создает соединение. После этого можно пользоваться функциями сквозных запросов SQL Visual FoxPro для передачи команд во внешний источник данных на выполнение. Если создать соединение с помощью сквозных запросов SQL, информация об этом соединении не будет сохранена в базе данных в качестве определения именованного соединения. Как пользоваться функциями сквозных запросов SQL в Visual FoxPro? 1. Проверьте способность системы соединить компьютер с источником данных. Воспользуйтесь утилитой Test ODBC в составе ODBC или ей подобной. 2. Установите соединение с источником данных с помощью функции SQLCONNECT() или SQLSTRINGCONNECT(). Использует асинхронную Полностью поддерживает постепенную выборку при программируемую асинхронную выполнении кода SQL выборку Таким образом, технология сквозных запросов SQL предоставляет следующие преимущества по сравнению с внешними представлениями: Вы можете пользоваться функциональными возможностями, специфическими для сервера, например хранимыми процедурами и встроенными функциями на базе сервера. Вы можете использовать расширенные возможности SQL, поддерживаемые сервером, а также команды определения данных, администрирования сервера и защиты. Вы получаете более полный контроль над операторами Update, Delete и Insert сквозных запросов SQL. Вы расширяете возможности контроля над внешними транзакциями. Visual FoxPro может обрабатывать сквозные запросы SQL, возвращающие более одного результирующего множества. Сквозные запросы SQL имеют и ряд недостатков. Основные из них: По умолчанию сквозной запрос SQL всегда возвращает не обновляемый моментальный снимок внешних данных, хранящихся в активном курсоре представления. Курсор можно сделать обновляемым, установив соответствующие свойства с помощью функции CURSORSETPROP(). Напротив, обновляемое внешнее представление обычно не требует установки свойств для обновления внешних данных. Команды SQL нужно вводить прямо в окне команд или в программе, не пользуясь графическим конструктором представлений. Независимо от того, какая технология используется - внешние представления или сквозные запросы SQL, вы можете выполнять запросы и обновлять внешние данные. Практика показывает, что обычно используются как внешние представления, так и сквозные запросы SQL. Например, если вы соединяете Visual FoxPro с источником данных master на сервере SQL Server, вам следует зарегистрироваться в качестве системного администратора (идентификатор пользователя sa ) с паролем , выдав следующую команду: lhandle=SQLCONNECT(master,sa, ) 3. Воспользуйтесь функциями сквозных запросов SQL в составе Visual FoxPro для извлечения данных в курсоры Visual FoxPro и обработки этих данных с помощью стандартных команд и функций Visual FoxPro. Например, можно выдать запрос в таблицу Customer и просмотреть полученный курсор с помощью следующей команды: ? SQLEXEC (lhandle, select * from customer , ; my cursor ) BROWSE 4. Отсоединитесь от источника данных с помощью функции SQLDISCONNECT(). =SQLDISCONNECT(lhandle) Пример использования технологии SQL pass-through на Visual FoxPro SET CONSOLE OFF * Установка соединения с источником данных lhandle=SQLCONNECT(master,sa, ) IF lhandle>>0 && Проверка на наличие связи с SQL Server * Следующие три строчки программного кода удаляют * устройство Rdev lib и устройство Rdev log, * так как впоследствии мы создаем новые устройства с * подобными именами и со своими параметрами use m=SQLEXEC(lhandle, USE master ) mlibr=SQLEXEC(lhandle, sp dropdevice Rdev lib, delfile ) mlogr=SQLEXEC(lhandle, sp dropdevice Rdev log, delfile ) * Создаем устройство для нашей БД mlib=SQLEXEC(lhandle, DISK INIT ; NAME = Rdev lib, ; PHYSNAME = C:\SQL 60\DATA\SAMP LIB.DAT, ; VDEVNO = 1, ; SIZE = 5120 ) * Создаем устройство для журнала БД mlog=SQLEXEC(lhandle, DISK INIT ; & NAME = Rdev log, ; PHYSNAME = C:\SQL 60\DATA\SAMP LOG.DAT, ; VDEVNO=2, ; SIZE = 2048 ) * Если процесс создания * устройств прошел успешно * Проверка наличия БД auto store * на сервере, и , если она существует, * мы ее удаляем IF mlib>>0 AND mlog>>0 =SQLEXEC(lhandle, IF EXISTS ( SELECT name FROM ; sysdatabases ; WHERE name IN (auto store) ); BEGIN DROP DATABASE auto store END ) * Создаем базу данных auto store, которая будет * размещаться на двух * устройствах Rdev lib и устройстве для журнала * транзакций базы данных Rdev log creat data=SQLEXEC(lhandle, CREATE DATABASE auto store ; ON Rdev lib = 10 LOG ON Rdev log = 4 ) * Если процесс создания БД прошел успешно IF creat data>>0 =SQLEXEC(lhandle, USE auto store ) * Проверка наличия таблицы country на сервере, и, если она * существует, мы ее удаляем =SQLEXEC(lhandle, IF EXISTS (SELECT name FROM sysobjects;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |