You've already forked oScript-Examples
mirror of
https://github.com/Stepa86/oScript-Examples.git
synced 2026-04-23 19:31:06 +02:00
ExecQuery_SQLCMD теперь только подключаемый
This commit is contained in:
+38
-11
@@ -3,7 +3,6 @@
|
||||
#Использовать logos
|
||||
#Использовать json
|
||||
|
||||
|
||||
Перем фЛог;
|
||||
|
||||
// Получить имя лога продукта
|
||||
@@ -46,36 +45,36 @@
|
||||
ЗавершитьРаботу(1);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
текстНастроек = ПолучитьТекстИзФайла(Параметры["ПутьКФайлу"]);
|
||||
Если текстНастроек = Ложь Тогда
|
||||
|
||||
|
||||
Сообщить("Переданный файл не найден или не является файлом настроек.");
|
||||
Сообщить("Для создания файла воспользуйтесь обработкой _ПодготовкаНастроекДляБазы.epf");
|
||||
|
||||
|
||||
ЗавершитьРаботу(1);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЧтениеJSON = Новый ПарсерJSON;
|
||||
параметрыИзФайла = ЧтениеJSON.ПрочитатьJSON(текстНастроек,,,Истина);
|
||||
|
||||
|
||||
прочитанныеПараметры = Новый Соответствие;
|
||||
|
||||
ПрочитатьПараметрыРекурсивно( параметрыИзФайла, прочитанныеПараметры );
|
||||
|
||||
Для каждого цЭлемент Из прочитанныеПараметры Цикл
|
||||
|
||||
|
||||
фЛог.Отладка( "Прочитан параметр " + цЭлемент.Ключ + ": " + цЭлемент.Значение );
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
Возврат прочитанныеПараметры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПрочитатьПараметрыРекурсивно( Знач пПараметры, пПрочитенныеПараметры )
|
||||
|
||||
|
||||
Для каждого цЭлемент Из пПараметры Цикл
|
||||
|
||||
Если ТипЗнч( цЭлемент.Значение ) = Тип("Структура")
|
||||
@@ -90,13 +89,41 @@
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВыполнитьКоманду(Знач пАргументы)
|
||||
|
||||
параметры = ПолучитьПараметры( пАргументы );
|
||||
|
||||
работаСSQL = ЗагрузитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "ExecQuery_SQLCMD.os"));
|
||||
|
||||
Если параметры["Source_SQL.UseBackup"] = Истина Тогда
|
||||
|
||||
результат = работаСSQL.ВыполнитьБекап( параметры["Source_SQL.Server"], параметры["Source_SQL.User"], параметры["Source_SQL.Password"], параметры["Source_SQL.Base"], параметры["FileBackup"] );
|
||||
|
||||
Если Не результат Тогда
|
||||
ЗавершитьРаботу(1);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если параметры["Current_SQL.UseRestore"] = Истина Тогда
|
||||
|
||||
результат = работаСSQL.ВыполнитьСкрипт( параметры["Current_SQL.Server"], параметры["Current_SQL.User"], параметры["Current_SQL.Password"], параметры["Current_SQL.Base"], параметры["Script_Restore"] );
|
||||
|
||||
Если Не результат Тогда
|
||||
ЗавершитьРаботу(1);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если параметры["Current_Repo.Blind"] = Истина Тогда
|
||||
|
||||
Сообщить( "Выполняется переподключение к хранилищу" );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
фЛог = Логирование.ПолучитьЛог(ИмяЛога());
|
||||
|
||||
+90
-12
@@ -13,6 +13,78 @@
|
||||
Возврат "oscript.app.ExecQuery_SQLCMD";
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьБекап( Знач пСервер, Знач пПользователь, Знач пПароль, Знач пИмяБазы, Знач пИмяФайлаБекапа ) Экспорт
|
||||
|
||||
Если Не ЗначениеЗаполнено( пСервер ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Сервер не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пПользователь ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Пользователь не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяФайлаБекапа ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Файл для бекапа не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяБазы ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Файл для бекапа не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-Q""" + ТекстЗапроса_ВыполнитьБекап( пИмяБазы, пИмяФайлаБекапа ) + """";
|
||||
|
||||
Возврат ВыполнитьЧерезSQLCMD(пСервер, пПользователь, пПароль, пИмяБазы, параметрСТекстомЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьСкрипт( Знач пСервер, Знач пПользователь, Знач пПароль, Знач пИмяБазы, Знач пИмяФайлаСкрипта ) Экспорт
|
||||
|
||||
Если Не ЗначениеЗаполнено( пСервер ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Сервер не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пПользователь ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Пользователь не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяФайлаСкрипта ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Файл скрипта не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
текстЗапроса = ПолучитьТекстИзФайла( пИмяФайлаСкрипта );
|
||||
|
||||
Если текстЗапроса = Ложь Тогда
|
||||
фЛог.Ошибка( "Не удалось прочитать текст запроса из " + пИмяФайлаСкрипта );
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-i """ + пИмяФайлаСкрипта + """";
|
||||
|
||||
Возврат ВыполнитьЧерезSQLCMD(пСервер, пПользователь, пПароль, пИмяБазы, параметрСТекстомЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьТекстИзФайла( Знач пИмяФайла )
|
||||
|
||||
файлОбмена = Новый Файл(пИмяФайла);
|
||||
@@ -63,7 +135,7 @@
|
||||
текстЗапроса = СтрШаблон( шаблонЗапросБекапа, пПараметры["ИмяБазы"], пПараметры["ПутьКФайлу"]);
|
||||
|
||||
параметрСТекстомЗапроса = "-Q""" + текстЗапроса + """";
|
||||
|
||||
|
||||
ИначеЕсли ВРег( пПараметры["Команда"]) = ВРег("execQuery") Тогда
|
||||
|
||||
текстЗапроса = ПолучитьТекстИзФайла( пПараметры["ПутьКФайлу"] );
|
||||
@@ -74,7 +146,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-i """ + пПараметры["ПутьКФайлу"] + """";
|
||||
|
||||
|
||||
Иначе
|
||||
|
||||
фЛог.Ошибка( "Неизвестная команда " + пПараметры["Команда"] );
|
||||
@@ -85,11 +157,16 @@
|
||||
|
||||
Возврат параметрСТекстомЗапроса;
|
||||
|
||||
КонецФункции // ПолучитьТекстЗапроса( Знач пКоманда )
|
||||
КонецФункции
|
||||
|
||||
Процедура ВыполнитьКоманду(Знач пАргументы)
|
||||
Функция ТекстЗапроса_ВыполнитьБекап( Знач пИмяБазы, Знач пИмяФайла)
|
||||
|
||||
параметры = ПолучитьПараметрыИзКоманднойСтроки( пАргументы );
|
||||
шаблонЗапросБекапа = "BACKUP DATABASE [%1] TO DISK = N'%2' WITH NOFORMAT, INIT, NAME = N'%1 FULL Backup', SKIP, NOREWIND, NOUNLOAD,COMPRESSION, STATS = 10";
|
||||
Возврат СтрШаблон( шаблонЗапросБекапа, пИмяБазы, пИмяФайла);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьЧерезSQLCMD( Знач пСервер, Знач пПользователь, Знач пПароль, Знач пИмяБазы, Знач пПараметрСТекстомЗапроса )
|
||||
|
||||
командаЗапуска = Новый Команда;
|
||||
|
||||
@@ -101,10 +178,10 @@
|
||||
КонецЕсли;
|
||||
|
||||
командаЗапуска.УстановитьКоманду("sqlcmd");
|
||||
командаЗапуска.ДобавитьПараметр("-S" + параметры["Сервер"]);
|
||||
командаЗапуска.ДобавитьПараметр("-U" + параметры["Пользователь"]);
|
||||
командаЗапуска.ДобавитьПараметр("-P" + параметры["Пароль"]);
|
||||
командаЗапуска.ДобавитьПараметр( ПолучитьПараметрСТекстомЗапроса( параметры ) );
|
||||
командаЗапуска.ДобавитьПараметр("-S" + пСервер);
|
||||
командаЗапуска.ДобавитьПараметр("-U" + пПользователь);
|
||||
командаЗапуска.ДобавитьПараметр("-P" + пПароль);
|
||||
командаЗапуска.ДобавитьПараметр( пПараметрСТекстомЗапроса );
|
||||
|
||||
командаЗапуска.УстановитьИсполнениеЧерезКомандыСистемы( Ложь );
|
||||
|
||||
@@ -112,14 +189,15 @@
|
||||
|
||||
Если Не КодВозврата = 0 Тогда
|
||||
фЛог.Ошибка("Код возврата: " + КодВозврата);
|
||||
фЛог.Информация(командаЗапуска.ПолучитьВывод());
|
||||
фЛог.Ошибка(командаЗапуска.ПолучитьВывод());
|
||||
КонецЕсли;
|
||||
|
||||
фЛог.Информация(командаЗапуска.ПолучитьВывод());
|
||||
|
||||
КонецПроцедуры
|
||||
Возврат кодВозврата = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
фЛог = Логирование.ПолучитьЛог(ИмяЛога());
|
||||
//фЛог.УстановитьУровень(УровниЛога.Предупреждение);
|
||||
//фЛог.УстановитьУровень(УровниЛога.Отладка);
|
||||
ВыполнитьКоманду(АргументыКоманднойСтроки);
|
||||
Reference in New Issue
Block a user