自更新到SQL Server 2016以来,数据库安装程序无法创建DacStore对象

时间:2017-03-29 17:58:15

标签: sql-server powershell

我有一个安装程序,可以创建或更新与网站相关的数据库。我们最初为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年完美无缺,但我无法找到可能导致此错误的更改内容。

1 个答案:

答案 0 :(得分:1)

嗯,你是直接在SQL 2016服务器上运行吗(或者只在2016年工具集的计算机上运行?)。根据这个MS Social page,从SQL 2012开始不推荐使用DAC库。您应该能够使用SMO库或其他.NET库来创建连接字符串。但是,对于某些命令,您可能需要稍微重构一下脚本。