Sql server 仅在从ISE执行时通过Powershell DB备份脚本

Sql server 仅在从ISE执行时通过Powershell DB备份脚本,sql-server,powershell,powershell-ise,bacpac,Sql Server,Powershell,Powershell Ise,Bacpac,我使用以下备份脚本为MSSQL数据库创建.bacpac文件已有一段时间了。脚本通常工作正常,但对于某些数据库失败。这些数据库与其他数据库没有太大区别,可能更大一些。由于这仅用于dev数据库,因此平均大小不大,bacpac文件大小约为200Mb 奇怪的是,脚本在从PowerShell ISE执行时成功运行,但在从命令行运行时失败。请注意,该脚本只适用于某些数据库,而适用于其他数据库。错误消息并没有真正的帮助: 警告:发生异常:使用“2”参数调用“ExportBacpac”时发生异常:“无法从数据库

我使用以下备份脚本为MSSQL数据库创建.bacpac文件已有一段时间了。脚本通常工作正常,但对于某些数据库失败。这些数据库与其他数据库没有太大区别,可能更大一些。由于这仅用于dev数据库,因此平均大小不大,bacpac文件大小约为200Mb

奇怪的是,脚本在从PowerShell ISE执行时成功运行,但在从命令行运行时失败。请注意,该脚本只适用于某些数据库,而适用于其他数据库。错误消息并没有真正的帮助:

警告:发生异常:使用“2”参数调用“ExportBacpac”时发生异常:“无法从数据库导出架构和数据。”

我们使用MSSQL 2104,数据库可以从MSSQL Studio导出到备份,没有问题

剧本:

Param(
    # Database name to backup e.g 'MYDB'
    $databaseName,
    # Database connection string "server=server ip;Integrated Security = True;User ID=user;Password=pass"
    $connectionString,
    # Path to the directory where backup file should be created
    $backupDirectory
)
add-type -path "C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\Microsoft.SqlServer.Dac.dll";

try {
    $dacService = new-object Microsoft.SqlServer.Dac.DacServices $connectionString
    # build backup filename
    $backupFileName  = $backupDirectory+"\"+$dataBaseName+[DateTime]::Now.ToString("yyyyMMdd-HHmmss")+".bacpac" 
    # perform backup
    $dacService.exportBacpac($backupFileName, $dataBaseName);
    Write-Output "Database backup file created $backupFileName"
} catch {
    Write-warning "Exception occurred: $_"
    throw "Database backup haven't been created, execution aborted."
}
有人遇到过这个问题吗?我知道PowerShell和PowerShell ISE有点不同,但我不明白为什么脚本执行会产生不同的结果

[编辑]

尝试为DacService添加事件侦听器并打印输出以获取更多调试信息

 register-objectevent -in $dacService -eventname Message -source "msg" -action { out-host -in $Event.SourceArgs[1].Message.Message } | Out-Null
输出是

Dac Assembly loaded.
Extracting schema (Start)
Gathering database options
Gathering users
WARNING: Exception occurred: Exception calling "ExportBacpac" with "2" argument(s): "Could not export schema and data
from database."
Gathering roles
Gathering application roles
Gathering role memberships
Gathering filegroups
Gathering full-text catalogs
Gathering assemblies
Gathering certificates 
....
Processing Table '[dbo].[file_storage_entity]'. 99.74 % done.
Processing Table '[dbo].[file_storage_entity]'. 100.00 % done.
Exporting data (Failed)
[编辑2]


作为一种变通方法,我创建了C#程序来做同样的事情。在任何环境下都运行良好。代码与PowerShell脚本中的代码几乎相同。

尝试在catch语句中使用
$\u124; fl*-f
获取更多错误信息。对于相同的数据库,它是否总是失败?也许您应该增加高级内存设置。@Majkinator。在16个数据库中,我有3个数据库的脚本始终失败。我尝试根据增加高级内存,但没有帮助如果您尝试使用
SqlPackage.exe
导出bacpac会发生什么情况?@majkinator它成功导出。尝试使用catch语句中的
$\u124; fl*-f
获取更多错误信息相同的数据库是否总是失败?也许您应该增加高级内存设置。@Majkinator。在16个数据库中,我有3个数据库的脚本始终失败。我尝试根据增加高级内存,但没有帮助如果您尝试使用导出成功的
SqlPackage.exe
?@majkinator导出bacpac会发生什么。