<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.standart-n.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.standart-n.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Sp%24docs</id>
		<title>Sp$docs - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.standart-n.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Sp%24docs"/>
		<link rel="alternate" type="text/html" href="http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;action=history"/>
		<updated>2026-05-09T09:50:15Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=7202&amp;oldid=prev</id>
		<title>Avo в 10:41, 15 января 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=7202&amp;oldid=prev"/>
				<updated>2019-01-15T10:41:11Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 10:41, 15 января 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Необходимые файлы&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;= Универсальный алгоритм настройки таблицы БД для хранения BLOB полей во внешних файлах.… ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Необходимые файлы&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; [[Файл:Sp$docs distrib.rar]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; [[Файл:Sp$docs distrib.rar]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Avo</name></author>	</entry>

	<entry>
		<id>http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=6933&amp;oldid=prev</id>
		<title>Olgav: /* необходимые файлы */</title>
		<link rel="alternate" type="text/html" href="http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=6933&amp;oldid=prev"/>
				<updated>2018-09-26T05:54:51Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;необходимые файлы&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:54, 26 сентября 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;необходимые &lt;/del&gt;файлы=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Необходимые &lt;/ins&gt;файлы=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; [[Файл:Sp$docs distrib.rar]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; [[Файл:Sp$docs distrib.rar]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Olgav</name></author>	</entry>

	<entry>
		<id>http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=6932&amp;oldid=prev</id>
		<title>Olgav в 05:54, 26 сентября 2018</title>
		<link rel="alternate" type="text/html" href="http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=6932&amp;oldid=prev"/>
				<updated>2018-09-26T05:54:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:54, 26 сентября 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=необходимые файлы=&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; [[Файл:Sp$docs distrib.rar]] &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Универсальный алгоритм настройки таблицы БД для хранения BLOB полей во внешних файлах.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Универсальный алгоритм настройки таблицы БД для хранения BLOB полей во внешних файлах.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Olgav</name></author>	</entry>

	<entry>
		<id>http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=6930&amp;oldid=prev</id>
		<title>Olgav: Новая страница: «&lt;pre&gt; Универсальный алгоритм настройки таблицы БД для хранения BLOB полей во внешних файлах.…»</title>
		<link rel="alternate" type="text/html" href="http://wiki.standart-n.ru/index.php?title=Sp$docs&amp;diff=6930&amp;oldid=prev"/>
				<updated>2018-09-26T05:51:33Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&amp;lt;pre&amp;gt; Универсальный алгоритм настройки таблицы БД для хранения BLOB полей во внешних файлах.…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Универсальный алгоритм настройки таблицы БД для хранения BLOB полей во внешних файлах.&lt;br /&gt;
На примере SP$DOCS&lt;br /&gt;
&lt;br /&gt;
Подключение UDF.&lt;br /&gt;
1. Копируем sp_docs.dll в каталог &amp;quot;UDF&amp;quot; - куда установлен сервер FB.&lt;br /&gt;
2. Выполняем sp_docs.dll.sql - объявляем функции в базе, так же будет создана таблица Z$SINGLELINEPARAMS и вставлена одна запись - в ней путь для хранения BLOB'ов.&lt;br /&gt;
3. Если надо - настраиваем путь в таблице Z$SINGLELINEPARAMS, по-умолчанию рядом с базой создастся каталог &amp;lt;имя_файл_БД&amp;gt;__sp$docs.&lt;br /&gt;
&lt;br /&gt;
Подготовка служебной таблицы&lt;br /&gt;
1. Извлекаем скрипт создания таблицы SP$DOCS и вставляем текст в редактор скриптов.&lt;br /&gt;
2. Редактируем:&lt;br /&gt;
  - убираем создание генератора - будем использовать тотже&lt;br /&gt;
  - изменяем имя таблицы на SP$DOCS_SRVC&lt;br /&gt;
  - изменяем имена всех индексов и ключей (&amp;quot;SP$DOCS&amp;quot; меняем на &amp;quot;SP$DOCS_SRVC&amp;quot;)&lt;br /&gt;
  - убираем триггеры! Они без изменений перейдут на вьюху.&lt;br /&gt;
  - оставляем, если есть описания полей(Fields descriptions), в них тоже меняем имена.&lt;br /&gt;
3. Выполняем скрипт - будет создана служебная таблица.&lt;br /&gt;
4. Выполняем triggers4blob.sql - !внимание! в скрипте триггеры для &amp;quot;SP$DOCS_SRVC&amp;quot; и для ключа &amp;quot;ID&amp;quot;!!!!! Если ключ UUID - подкорректировать!&lt;br /&gt;
&lt;br /&gt;
Перенос данных&lt;br /&gt;
Тут все просто - выполняем запрос:&lt;br /&gt;
  insert into sp$docs_srvc select * from sp$docs&lt;br /&gt;
вместо BLOB значений будут созданы соответствующие файлы в созданном каталоге.&lt;br /&gt;
Кстати! Транзакции не поддерживаются - изменения сразу скидываются на диск!!! И удаляются тоже.&lt;br /&gt;
&lt;br /&gt;
Удаление таблицы SP$DOCS&lt;br /&gt;
1. Сохраняем гденить скрипт создания таблицы SP$DOCS.&lt;br /&gt;
2. Избавляемся от зависимостей: комментируем, подменяем... Все запоминаем, чтобы потом восстановить!&lt;br /&gt;
3. Удаляем таблицу SP$DOCS.&lt;br /&gt;
&lt;br /&gt;
Создание вьюхи SP$DOCS&lt;br /&gt;
1. sp$docs_srvc -&amp;gt; создать просмотр.&lt;br /&gt;
2. Отмечаем галочками создание всех триггеров&lt;br /&gt;
3. Редактируем SQL-тексты создания вьюхи и триггеров - заменяем &amp;quot;vw_sp$docs_srvc&amp;quot; на &amp;quot;sp$docs&amp;quot;&lt;br /&gt;
4. Также в скрипте создания вьюхи подменяем поле BLOB'а вот так:&lt;br /&gt;
&lt;br /&gt;
--    data,&lt;br /&gt;
    iif((data='in the file'), /*then*/&lt;br /&gt;
        sp_docs_getblob((select first 1 SP$DOCS_PATH from Z$SINGLELINEPARAMS),id),&lt;br /&gt;
        /* else */&lt;br /&gt;
        data),&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Выполняем.&lt;br /&gt;
6. Берем из сохраненного скрипта создания таблицы SP$DOCS секцию с триггерами, если надо, меняем названия и выполняем.&lt;br /&gt;
&lt;br /&gt;
Завершающий этап&lt;br /&gt;
1. Возвращяем все зависимости - все, кроме внешних ключей травим на созданную вьюху. Внешние ключи на P$DOCS_SRVC.&lt;br /&gt;
&lt;br /&gt;
Готово! Теоретически никто не заметит подмены, а база будет махонькая и аккуратненькая).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Olgav</name></author>	</entry>

	</feed>