Реферат: Работа с объектами большого объема в MS SQL и ADO

You cannot use a text pointer for a table with option 'text in row' set to ON.

Дело в том, что в режиме «данные в строке» указатель становить неверным сразу же по окончании транзакции. Так как SQL Server по умолчанию находится в режиме автоматического подтверждения транзакции (auto commit), указатель перестает быть действительным сразу после выполнения запроса. Чтобы наш пример заработал, необходимо включить обе операции (получение указателя и его использование) в одну транзакцию. Кроме этого, SQL Server автоматически устанавливает коллективную блокировку в момент получения указателя для данных в строке, так что не нужно прибегать к каким-либо хинтам. Эта блокировка снимется после того, как указатель станет недействительным. Как я сказал, это происходит в конце транзакции или при использовании следующих команд:

create clustered index

drop clustered index

alter table

drop table

truncate table

sp_tableoption(‘text in row’)

sp_indexoption

Можно и вручную сделать указатель недействительным с помощью вызова функции sp_invalidate_textptr.

Если транзакция выполняется на уровне изоляции READ UNCOMMITTED, полученный указатель можно использовать только в операциях чтения. Операция обновления закончится ошибкой 7106: You cannot update a blob with a read-only text pointer.

Работа с ADO

В этом разделе я приведу примеры работы с большими объектами, используя ADO.NET и ADO. Начнем с простого.

Чтение изображения и вывод на экран с помощью VB6

Хотя VB6 уже не так популярен, как несколько лет назад, на нем все же очень удобно писать определенного вида программы. Я иногда просто удивляюсь, как много VS.NET переняла из среды VB6, вплоть до иконок. Программируя на C#, вы по прежнему в меню Project можете найти пункт References, а в списке событий формы – события OnLoad. Очень удобная технологий DataBinding, которую я и буду использовать в примерах, также благополучно перекочевала в дотнет. На самом деле, очень много знаний из «прежней жизни» вы можете использовать в новой среде. Вот только я не понимаю, почему совместимости в ADO.NET уделено меньше всего внимания. Например, тот же самый DataBinding не работает со старым ADO. Вместо этого нужно «заливать» ADO-шный Recordset в DataSet, и использовать уже его. Ну, хватит лирики, давайте перейдем к предмету разговора.

Алгоритм вывода изображения на экран из БД может быть таким:

Подготовка соединения;

Открытие соединения;

Выборка данных в Recordset;

Связывание изображения с помощью встроенной технологии DataBinding.

Вот фрагменты кода из демонстрационного приложения, реализующие этот алгоритм.

'Задаем провайдера

conn.Provider = "sqloledb"

sb.SimpleText = "Connecting to DB..."

sb.Refresh

'Открываем соединение с БД

conn.Open "localhost", "user", "psw"

sb.SimpleText = "Ready"

sb.SimpleText = "Loading image..."

sb.Refresh

К-во Просмотров: 666
Бесплатно скачать Реферат: Работа с объектами большого объема в MS SQL и ADO