我有一个安装程序,可以创建或更新与网站相关的数据库。我们最初为Microsoft Server 2008 R2和SQL Server 2008编写了安装程序。我们已更新到Microsoft Server 2016,而SQL Server 2016和我现在因dacpac
而失败。
我已经在系统上更新了DAC框架,但问题仍然存在。失败的特定部分是PowerShell脚本。
New-Object:找不到类型[Microsoft.SqlServer.Management.Dac.DacStore]:验证包含此内容的程序集 类型已加载。 在C:\ Users \ Administrator \ AppData \ Local \ Temp \ 2_ir_sf_temp_3 \ UnregisterDataTier.ps1:29 char:13 + $ dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($ s ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo:InvalidType:(:) [New-Object],PSArgumentException + FullyQualifiedErrorId:TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
代码部分(第29行是最后一行):
If (!$uid -And !$pwd)
{
$serverconnection.ConnectionString = "Server = $server; Database = $database ; Integrated Security = True;"
}
Else
{
$serverconnection.ConnectionString = "Server = $server; Database = $database ; Integrated Security = False; User ID = $uid; Password = $pwd;"
}
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)
我一直在尝试我能找到的其他人得到相同的错误信息,但它似乎不适用于我的情况。我假设某些地方有一些我无法找到的小改动。
这在2008年完美无缺,但我无法找到可能导致此错误的更改内容。
答案 0 :(得分:1)
嗯,你是直接在SQL 2016服务器上运行吗(或者只在2016年工具集的计算机上运行?)。根据这个MS Social page,从SQL 2012开始不推荐使用DAC库。您应该能够使用SMO库或其他.NET库来创建连接字符串。但是,对于某些命令,您可能需要稍微重构一下脚本。