Powershell SQL Резервное копирование хранимых процедур сервера - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь сделать резервную копию одной конкретной хранимой процедуры из базы данных SQL Server, передав параметры из программы Python. Вот код, который я пробовал, но получаю сообщение об ошибке.

param([string]$server='dbsed0898', [string]$dbname='global_hub',[string]$sp='dbo.gs_eligibility')

[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.SMO”) | out-null

$SMOserver = 'Microsoft.SqlServer.Management.Smo' #-argumentlist $server
$srv = New-Object("$SMOserver.Server") $server
$db = $srv.databases[$dbname]

$Objects = $db.storedprocedures[$sp]
$scripter = new-object ("$SMOserver.Scripter") $srv

$Scripter.Script($Objects) | Out-File 
" C:\Users\fthoma15\Documents\backup_03212020.sql"

$db = $SMOserver.databases[$dbname]

$Objects = $db.storedprocedures[$sp]
$Scripter.Script($Objects) | Out-File 

"C: \ Users \ fthoma15 \ Documents \ backup_03212020. sql"

Ошибка:

Найдено несколько неоднозначных перегрузок для "Script" и количество аргументов: "1".
В строке: 12 символов: 5
+ $ Scripter.Script ($ Objects) | Out-File "C: \ Users \ fthoma15 \ Document ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId: MethodCountCouldNotFindBest

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 30 марта 2020

Вот что я сделал.

param([string]$server='test', [string]$dbname='test',[string[]]$sp=('test','test'))

[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.SMO”) | out- 
null

$SMOserver = new-object ("Microsoft.SqlServer.Management.Smo.Scripter") #-argumentlist 
$server
$srv = new-Object Microsoft.SqlServer.Management.Smo.Server("$server")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database
$db = $srv.Databases.Item("$dbname")
$Objects = $db.storedprocedures[$sp[1,3]]
$scripter = new-object ("$SMOserver") $srv

$Scripter.Script($Objects) | Out-File 
"C:\Users\fthoma15\Documents\backup_03212020.sql"

Как и предполагал AlwaysLearning, я изменил переменную sp на список массивов, разделив и схему, и имя sp.

...