sql-server - Powershell SQL Server 存储过程备份
问题描述
我正在尝试通过从 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”。
在 line:12 char:5
+ $Scripter.Script($Objects) | Out-File "C:\Users\fthoma15\Document ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
有人能帮我吗?
解决方案
这就是我所做的。
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 名称。
推荐阅读
- python - 从另一个python文件调用函数后画布不显示图像
- sql - 为什么这个 sql 片段总是返回 8 或 1?
- python - Python:将一列列表插入Mysql
- python - 在 Python 中使用这个二维数组的更好方法
- python - 有效地将 pandas 数据帧转换为 scipy 稀疏矩阵
- javascript - 如何实现允许用户从前端在图像上绘制点的功能?
- python - 可视化 netCDFs xarray
- ruby-on-rails - Ruby - 使用 jsonb_accessor 更新 jsonb 数组列设置
- sql - SQL:如何在 Redshift 中选择具有最大值的 COLUMN?
- autokey - 如果 Window 不匹配,则停止 AutoKey 脚本并打印 ShortCut 文字