使用VS2012 sqlpackage.exe

时间:2017-08-30 12:36:47

标签: database sql-server-2012 dacpac sql-server-2012-datatools sqlpackage

我一直在尝试测试构建在SQL Server 2014上的项目(数据库,SSIS,SSAS)是否与SQL Server 2012兼容。我有一个.dproj以dacpac格式打包,当我尝试从cmd运行:

sqlpackage.exe /Action:Script /SourceFile:"Project.dacpac" /TargetDatabaseName:DBName /TargetServerName:"DBName /p:BlockOnPossibleDataLoss=false /p:RegisterDataTierApplication=true /p:BlockWhenDriftDetected=false /OutputPath:Logs\Output.sql

我收到以下错误:

  

***无法部署包。内部错误。数据库平台服务,类型为Microsoft.Data.Tools.Sch   ema.Sql.Sql120DatabaseSchemaProvider无效。你必须确定   加载了服务e,或者您必须提供a的完整类型名称   有效的数据库平台服务。

我在安装了SQL Server的Azure上创建了一个VM。除此之外,我安装了VS Tools的数据工具。我猜这可能是兼容性问题,但是可能有一个解决方法,而不将DT更改为更高版本?任何可以应用的补丁?

1 个答案:

答案 0 :(得分:0)

您可以安装更新的dacfx(sqlpackage),也可以将DAC文件夹从更新版本复制到部署计算机,并使用该DECLARE @DocHandle INT, @Xml NVARCHAR(MAX) SET @XMl = N'<root><Salary>0.00</Salary></root>' EXEC sp_xml_preparedocument @DocHandle OUTPUT, @Xml SELECT CASE WHEN Salary <> 0 THEN Salary ELSE 10000 END AS Salary FROM OPENXML (@DocHandle , '/root') WITH (Salary DECIMAL(18,3), 'Salary') 实例进行部署。

您还可以将项目本身的属性设置为以SQL Server 2012为目标,它将验证T-SQL对于SQL Server 2012是否正确,并允许您部署到它。

Salary -------- 10000 2012和2014之间有很多修复,所以即使您仍然定位到SQL Server 2012框,我也会将它们移到较新版本的sqlpackage.exe上。

这只适用于dacpacs,不确定其他项目。