Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Azure и замена сиквел агенту. / 6 сообщений из 6, страница 1 из 1
13.06.2019, 07:33
    #39825923
Roust_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Azure и замена сиквел агенту.
Добрый день,

На стандартном сиквельном инстансе у меня была джоба по скриптованию баз. Шаг из этой джобы приведен ниже.э

Пытаюсь тоже самое сделать на Азуре. Elastic job agent поддерживает только TSQL. Automation Account (Runbooks) поддерживавет Powershell, но как-то не до конца. Когда запускаю код ниже, получаю ошибку:
Failed
The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Cannot find drive. A drive with the name 'SQLSERVER' does not exist.


Я что-то делаю не так или в Азуре такое в принципе невозможно?

Спасибо.

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
#Stop script on any error
$erroractionpreference = "Stop"
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

#$Srv = '$(ESCAPE_SQUOTE(SRVR))'
$Srv = 'myserver.database.windows.net,1433'
SL SQLSERVER:\SQL\"$Srv"\Databases
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') "$Srv"  
$dbs=$s.Databases 
$so = new-object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$so.IncludeIfNotExists = 1
$so.ExtendedProperties = 1
# $so.Permissions = 1
$so.IncludeDatabaseContext = 1
# $so.WithDependencies = 1

$Query = "select name from master.sys.databases (nolock) where database_id > 5" 
$DBList = Invoke-Sqlcmd -query $Query 

foreach($item in $DBList) {
  $DB = $item.name
  $File = "01-DB.sql"
  $script = $dbs["$DB"].Script($so)  
  $script = $script -replace "''", "''''"
  $Query = "INSERT INTO [Support].[support].[DBScripts]([DBName], [ScriptName], [ScriptDate], [ScriptText]) VALUES ('$DB','$File','$timestamp','$script')"
  Invoke-Sqlcmd -query $Query
}
...
Рейтинг: 0 / 0
13.06.2019, 09:25
    #39825977
Roust_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Azure и замена сиквел агенту.
Когда запускаю Powershell на обычном инстансе, то выдает сообщение:
Код: sql
1.
2.
3.
4.
5.
6.
TITLE: 'SqlServer' module not found
------------------------------
No SQL Server cmdlets found on this computer. 
Get the 'SqlServer' module at https://powershellgallery.com/packages/SqlServer

Start PowerShell without SQL Server cmdlets?



Без этих cmdlets скрипт не запустится. Вопрос только в том, как их можно в Азур установить?
...
Рейтинг: 0 / 0
13.06.2019, 10:42
    #39826010
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Azure и замена сиквел агенту.
Roust_m,

Вместо Агента на Azure есть много чего другого: Azure Data Factory (ADF), Azure DataBricks, Azure Automation/Orchestration и т.д.
кроме того в PowerShell можно ссылаться на те references/libraries которые установлены на сервере с которого запускается PowerSHell
их так-же можно вызывать указывая путь
SMO скорее всего стояла на сервере откуда была вызвана (ставится вместе с SQL Server),
в облаке может и не быть установлено (или стоять другая версия, с другими NameSpace)

PowerShell можно так-же вызывать дистанционно (в т.ч. из orchestrator который вызывается на Azure)
или пользоваться другими cmdlets специально предназначенными для Azure, которых вполне хватает
(тем более на такую простую операцию как SQL Insert)
...
Рейтинг: 0 / 0
18.06.2019, 06:43
    #39827506
Roust_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Azure и замена сиквел агенту.
vikkivRoust_m,

Вместо Агента на Azure есть много чего другого: Azure Data Factory (ADF), Azure DataBricks, Azure Automation/Orchestration и т.д.
кроме того в PowerShell можно ссылаться на те references/libraries которые установлены на сервере с которого запускается PowerSHell
их так-же можно вызывать указывая путь
SMO скорее всего стояла на сервере откуда была вызвана (ставится вместе с SQL Server),
в облаке может и не быть установлено (или стоять другая версия, с другими NameSpace)

PowerShell можно так-же вызывать дистанционно (в т.ч. из orchestrator который вызывается на Azure)
или пользоваться другими cmdlets специально предназначенными для Azure, которых вполне хватает
(тем более на такую простую операцию как SQL Insert)

Тут самая сложная операция вот эта:
$script = $dbs["$DB"].Script($so)

То есть заскриптовать базу, ну и потом вставить скрипт в таблицу.
...
Рейтинг: 0 / 0
18.06.2019, 17:40
    #39827889
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Azure и замена сиквел агенту.
Roust_m,

SMO в Azure SQL DataBase должен работать хотя в Ажуре много чего по другому (если работать изнутри), есть изоляция баз
(поэтому лучше список баз по другому получать, напр. Get-AzSqlInstanceDatabase), есть установка контекста (Set-AzContext
так-же AzureCredentials, Subscription, ResourceGroup, Instance, DataBase) но это немного другие модули
(можно-бы ещё задействовать Azure Shell, но у тебя насколько понимаю принимающий endpoint является OnPremises
{с отдельным исполняющим хостом}, т.е. тогда нужен GateWay) при этом неплохо-бы проверять доступность
(статус не обязательно Online , может и на паузе/sleep стоять)
и ждать пока она придёт в Online после пробуждения первым запросом, но проблема не в этом..

у тебя явно пишет ошибку по другому модулю (т.е. не SMO) a SqlServer (вместо старого SQLPS)
http://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql
которые могут быть не установлены / не инициализированы (Get/Install/Import/Update -Module)
по идее sl (Set-Location) там вообще лишний т.к. можно установить контекст (местного сервера принимающего insert)
и выполнить скрипт той-же SMO библиотекой (т.е. без привлечения других PS модулей)

кроме всего прочего Invoke-Sqlcmd так-же вполне успешно принимает параметры и сервера и базы данных и авторизацию.
(что опять-же делает вызов SqlServer бессмысленным) в общем в скрипте ненужный зоопарк где намешано всего..
...
Рейтинг: 0 / 0
18.06.2019, 18:07
    #39827900
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Azure и замена сиквел агенту.
не то скопировал, точнее этот линк http://docs.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Azure и замена сиквел агенту. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]