Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 November 18

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Gopneg
ну так ты разъясни в чем у тебя проблема
а то пока что это похоже на то что ты просишь написать что-то за тебя
У меня есть N баз данных, которые лежат по разным системным путям
Так же есть бекапы, которые так же расположены по "своим" каталогам.

Все эти пути систематизированы и идентичны, различаются только наименованиями.
На BASH я бы завёл отдельный лист с базами и написал бы цикл использования построчного перебора из файла в переменную

Но да, я прошу здесь помочь "дописать", т.к. очень плохо ориентируюсь в tsql и перечитав статью, что вы дали, понимаю, что я могу получить лист баз в экземпляре, который я и без хранимой процедуры могу получить
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
и это мне ровным счётом ничего не даёт
источник

G

Gopneg in SqlCom.ru - Стиль жизни SQL
ну так заведи лист
лист в базе это таблица
далее по таблице курсор
источник

G

Gopneg in SqlCom.ru - Стиль жизни SQL
таблицу можно временную или табличную переменную, если не хочется в реальной базе объекты создавать
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Спасибо, логику я прекрасно понимаю. Если бы не было трудностей с tsql, давно уже сделал бы.
Ладно, не стоит обсуждать понятные вещи. Как-нибудь разбирусь
источник

G

Gopneg in SqlCom.ru - Стиль жизни SQL
так какие трудности-то?
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Gopneg
так какие трудности-то?
Трудности в том, как этот лист использовать.
Я ввожу

declare
 @basename varchar(150),

Определю её в коде.

Как  мне передать базы в эту переменную, я не знаю
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
но учитывая то, сколько вы меня пытаете, я бы уже для 10 баз сделал 10 task`s. Эффект тот же, но через жопу
источник

G

Gopneg in SqlCom.ru - Стиль жизни SQL
через курсор по этой таблице
ты почитал что такое курсор?
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Почитал. Но в этом случае мне нужно переделывать своё тело задания.
Курсор вернет мне списки баз, пути их расположения ... во всяком случае это я могу через него получить.
Один фиг мне нужно имена баз биндить в системный путь хранения бекапов
источник

G

Gopneg in SqlCom.ru - Стиль жизни SQL
ну ты в таблице можешь и пути хранить, но даже если не хочешь, сложить две строки проблемой не является
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
И я должен этой таблице делать update, если новая БД появляется?

Конечно, здесь просто чудо примеры)

DECLARE @cmd1 nvarchar(2000)

SET @cmd1 = 'IF ''?'' NOT IN(''master'', ''model'', ''tempdb'', ''msdb'')' + 'BEGIN '

+ 'USE ?

DBCC SHRINKFILE( ?_log, 1 )

BACKUP LOG ? WITH TRUNCATE_ONLY

DBCC SHRINKFILE( ?_log, 1 )

END
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Очень важно при использовании курсора, когда выполняются системные операции шринка и бекапа лога.

У меня мягко говоря всё чуть сложнее
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Эта модель понятна. Адаптив под мою задачу - не вполне.
Сейчас мы дойдем до того, что для такой операции мне нужно держать отдельную базу с обновляемыми таблицами из хранимой процедуры списка баз, и исключениями. И данные из таблиц брать в качестве переменных в свой код
источник

G

Gopneg in SqlCom.ru - Стиль жизни SQL
я лично задачу вижу предельно простой
есть таблица баз и настроек, селектом из нее вытаскиваешь нужные данные, курсором по результату проходишь, выполняешь нужный t-sql код с параметрами
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Gopneg
я лично задачу вижу предельно простой
есть таблица баз и настроек, селектом из нее вытаскиваешь нужные данные, курсором по результату проходишь, выполняешь нужный t-sql код с параметрами
Хорошо, спасибо за наводку. Я попробую что-то сваять
источник

О奧

Олег 奧列格 (Ào liè gé)... in SqlCom.ru - Стиль жизни SQL
Dmitry
У меня есть N баз данных, которые лежат по разным системным путям
Так же есть бекапы, которые так же расположены по "своим" каталогам.

Все эти пути систематизированы и идентичны, различаются только наименованиями.
На BASH я бы завёл отдельный лист с базами и написал бы цикл использования построчного перебора из файла в переменную

Но да, я прошу здесь помочь "дописать", т.к. очень плохо ориентируюсь в tsql и перечитав статью, что вы дали, понимаю, что я могу получить лист баз в экземпляре, который я и без хранимой процедуры могу получить
На powershel это так же решается просто, а с модулем dbatools вообще задача восстановления баз данных решается на раз два.
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Олег 奧列格 (Ào liè gé)
На powershel это так же решается просто, а с модулем dbatools вообще задача восстановления баз данных решается на раз два.
А вот это кстати мысль, что-то я упоролся, завязнув в незнакомом для себя синтаксисе
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Dmitry
У меня есть N баз данных, которые лежат по разным системным путям
Так же есть бекапы, которые так же расположены по "своим" каталогам.

Все эти пути систематизированы и идентичны, различаются только наименованиями.
На BASH я бы завёл отдельный лист с базами и написал бы цикл использования построчного перебора из файла в переменную

Но да, я прошу здесь помочь "дописать", т.к. очень плохо ориентируюсь в tsql и перечитав статью, что вы дали, понимаю, что я могу получить лист баз в экземпляре, который я и без хранимой процедуры могу получить
вам нужно один раз разобраться с https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/blob/dev/sp_DatabaseRestore.sql (если хотите чистый TSQL), либо с https://www.sqlshack.com/sql-restore-database-using-dbatools/ (для автоматизации работы с несколькими серверами)
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Я не dba, мне тут сложновато. Я лучше действительно перепишу на posh
источник