Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Azure и замена сиквел агенту.  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1090
Добрый день,

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

Пытаюсь тоже самое сделать на Азуре. 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.


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

Спасибо.

#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
}
13 июн 19, 07:33    [21907602]     Ответить | Цитировать Сообщить модератору
 Re: Azure и замена сиквел агенту.  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1090
Когда запускаю Powershell на обычном инстансе, то выдает сообщение:
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 скрипт не запустится. Вопрос только в том, как их можно в Азур установить?
13 июн 19, 09:25    [21907681]     Ответить | Цитировать Сообщить модератору
 Re: Azure и замена сиквел агенту.  [new]
vikkiv
Member

Откуда: London
Сообщений: 2620
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)
13 июн 19, 10:42    [21907735]     Ответить | Цитировать Сообщить модератору
 Re: Azure и замена сиквел агенту.  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1090
vikkiv
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)


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

То есть заскриптовать базу, ну и потом вставить скрипт в таблицу.
18 июн 19, 06:43    [21910257]     Ответить | Цитировать Сообщить модератору
 Re: Azure и замена сиквел агенту.  [new]
vikkiv
Member

Откуда: London
Сообщений: 2620
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 бессмысленным) в общем в скрипте ненужный зоопарк где намешано всего..
18 июн 19, 17:40    [21910888]     Ответить | Цитировать Сообщить модератору
 Re: Azure и замена сиквел агенту.  [new]
vikkiv
Member

Откуда: London
Сообщений: 2620
не то скопировал, точнее этот линк http://docs.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module
18 июн 19, 18:07    [21910911]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить