Powershell SQL Server存储过程备份

问题描述 投票:0回答:1

我正在尝试通过传递Python程序中的参数来从SQL Server数据库中备份一个特定的存储过程。这是我尝试过的代码,但是我一直遇到错误。

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”

错误:

发现“脚本”的多重歧义重载,参数计数为“ 1”。在线:12字符:5+ $ Scripter.Script($ Objects)|外档“ C:\ Users \ fthoma15 \ Document ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~+ CategoryInfo:未指定:(:) [],MethodException+ FullyQualifiedErrorId:MethodCountCouldNotFindBest

有人可以帮我吗?

sql-server powershell stored-procedures backup
1个回答
0
投票

这是我所做的。

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名称。

© www.soinside.com 2019 - 2024. All rights reserved.