Программирование >>  Программирование баз данных 

1 ... 130 131 132 [ 133 ] 134 135 136 ... 346


(1 row(s) affected)

Проверьте указанный список критериев соответствия требованиям к детерминированной функции, чтобы узнать, сможете ли вы сами определить, почему данная функция не рассматривается как детерминированная.

Работая над этим примером, автор получил одно из тех не очень приятных напоминаний о том, насколько трудно обойтись без элементарных ошибок. Безусловно, я был уверен, что эта функция должна быть детерминированной, но она отнюдь не стала таковой по определению. Просидев за работой без сна слишком много ночей и уходя на отдых только в предрассветные часы, я полностью забыл выполнить очевидное требование - ввести опцию WITH SCHEMABINDING.

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

допускается при условии, что эти переменные типа таблицы или временные таблицы объявлены в области определения функции).

В функции нельзя применять расширенную хранимую процедуру.

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

В связи с этим мы должны научиться находить ответ на вопрос о том, является ли рассматриваемая функция детерминированной, или нет. При этом следует учитывать, что, кроме проверки соответствия создаваемой функции описанным выше критериям, можно также прибегнуть к помощи СУБД SQL Server, которая сообщает, является ли функция детерминированной или недетерминированной, поскольку информация об этом сохраняется в свойстве IsDeterministic интересующего вас объекта. Для проверки этой информации можно воспользоваться функцией OBJECTPROPERTY. Например, можно проверить детерминированность функции DayOnly, которая использовалась выше в данной главе, следующим образом: USE Accounting

SELECT OBJECTPROPERTY(OBJECT ID(DayOnly), IsDeterministic)

Для многих программистов окажется неожиданным (а для многих, возможно, нет), что в ответе, полученном от СУБД, будет указано, что данная функция является недетерминированной:



(1 row(s) affected)

Итак, полученные результаты свидетельствуют о том, что функция стала детерминированной.

Отладка

Практически применимые средства отладки для СУБД SQL Server впервые появились в версии SQL Server 2000. В указанной версии, во многом как и в версии SQL Server 2005, приходится добиваться почти идеальной настройки параметров и успешного согласования работы нескольких приложений, чтобы обеспечить функционирование средств отладки. Но после этого достигаются поистине превосходные результаты.

Средства отладки в версии SQL Server 2005 действуют в тесной интеграции с программой Visual Studio и позволяют добиться очень многого.

Не будет преувеличением сказать, что задача заставить нормально работать средства отладки является очень трудоемкой (а в самых худших случаях даже неосуществимой). В посяедние годы значительные усилия направлены на обеспечение защиты информации. В связи с этим столь большое число компонентов сервера закрыто для внешних вызовов, что особенно затруднительной стала дистанционная отладка (а именно такая организация работы должна быть обеспечена, если над проектом работает не один разработчик, а несколько). Автор может лишь порекомендовать не отказываться от борьбы и продолжать попытки наладить работу средств отладки. После того как эти средства начнут нормально функционировать, все ваши усилия оправдаются.

Настройка параметров СУБД SQL Server для применения отладки

к сожалению, отладчик больше не поставляется в составе программного продукта SQL Server, поэтому для отладки хранимых процедур на основе языка T-SQL необходимо иметь программное обеспечение Visual Studio. Ко времени написания данной книги было известно, что редакция Express программы Visual Studio в течение одного года может эксплуатироваться бесплатно.

сти в определение функции опцию WITH SCHEMABINDING, и полученные результаты станут совсем другими:

ALTER FUNCTION DayOnly(©Date datetime) RETURNS varchar(12) WITH SCHEMABINDING AS

BEGIN

RETURN CONVERT(varchar(12), ©Date, 101)

Теперь вызовем повторно на выполнение тот же запрос с функцией OBJECTPROPERTY, после чего буд)пг получены данные, свидетельствующие о том, что теперь эта функция является детерминированной:



Некоторые варианты инсталляции могут не требовать каких-либо дополнительных действий для обеспечения работы средств отладки. Тем не менее, если во время инсталляции выбран путь к каталогу, применяемый по умолчанию, и предусмотрена эксплуатация программного обеспечения SQL Server с использованием учетной записи Local System, то может оказаться, что средства отладки вообще не работают. Следствием этого становится реальная необходимость выполнить настройку конфигурации, требуемой для отладки службы SQL Server, чтобы она эксплуатировалась с использованием действительной учетной записи пользователя, а именно, записи, предоставляющей доступ с правами администратора к операционной системе, под управлением которой работает СУБД SQL Server.

Но большинство специалистов в области защиты данных, безусловно, не рекомендуют эксплуатировать СУБД SQL Server с использованием учетной записи, которой предоставлены административные права. Такой режим эксплуатации СУБД приводит к возникновению существенной бреши в системе безопасности. Рассмотрим, с чем это связано. Дело в том, что кроме обеспечения функционирования самой СУБД с правами администратора приходится также осуществлять многие другие действия. Достаточно представить себе, что любой пользователь, которому предоставляется право создавать в системе сборки .NET, получает также возможность удалять и перемещать на компьютере любые файлы и даже проводить еще более опасные операции. Такое положение дел допустимо только в системе, применяемой исключительно для разработки. Кроме того, при этюм приходится учитывать, что должна иепользоваться учетная запись администратора компьютера, а не администратора домена.

Запуск программы Debugger

Принципы использования программы Debugger напоминают предусмотренные в отладчиках программ на языке VB или С++; по-видимому, функционирование большинства современных отладчиков организовано по такому же принципу.

Прежде чем перейти к более подробному изложению этой темы, автор обязан предупредить, чтю программа Debugger, превосходная во многих отношениях, оставляет желать лучшего с тючки зрения удобства ее вызова. В пюследней версии SQL Seruer эта программа больше не встроена в инструментарий обработки запросов, поэтюму внимательно следите за описанием того, как осуществляется вызов программы, приеденным в настоящем разделе.

Чтобы перейти к использованию программы Debugger, необходимо запустить программу Visual Studio и перейти в окно Server Explorer (с помощью команды меню View). Щелкните правой кнопкой мыши на элементе Data Connection и выберите команду Add Connection (если это еще не сделано). Введите информацию о соединении в диалоговом окне Add Connection, как показано на рис. 11.2.

Затем необходимо перейти к обозначению хранимой процедуры (или пользовательской функции), для которой требуется выполнить отладку, и щелкнуть на этом обозначении правой кнопкой мыши. В данном случае перейдите к обозначению хранимой процедуры spTriangular, которая рассматривалась выше в данной главе, щелкните правой кнопкой мыши на этом обозначении и выберите команду Step Into Stored Procedure (рис. 11.3).



1 ... 130 131 132 [ 133 ] 134 135 136 ... 346

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика