我有一个Windows 2012服务器。服务器可以访问我的SQL数据库。我无权访问SQL数据库服务器,并且我无权在运行我的网站的Windows 2012服务器上安装SSMS。
我想使用SqlPackage.exe
用.dacpac文件更新我的数据库方案
我收到以下错误:
未处理的异常:System.TypeInitializationException:'Microsoft.SqlServer.Dac.DacPackage'的类型初始值设定项引发异常。 ---> System.TypeInitializationException:'Microsoft.SqlServer.Dac.DacServices'的类型初始值设定项引发了异常。 ---> System.TypeInitializationException:'SqlSchemaModelStaticState'的类型初始值设定项引发了异常。 ---> System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.SqlServer.TransactSql.ScriptDom,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。该系统找不到指定的文件。
有没有什么方法可以给SqlPackage.exe
所需的Microsoft.SqlServer.TransactSql.ScriptDom
而无需在服务器上安装SSMS?
如果不可能,那么现有的独立执行程序是否可以完成这项工作?
SqlPackage附带SSMS for SQL Data Tools。
除了安装这两个二进制文件中的一个以部署dacpac之外别无其他选择,大多数计算机都可以运行visual studio,因为sql数据工具是默认VS安装的一部分。
您可以下载任何这些nuget包(取决于所需的版本和平台)。在那里你会发现任何丢失的DLL。 https://www.nuget.org/packages?q=microsoft.sqlserver.dac+microsoft.sqlserver.dacfx
(或者您可以直接从包中使用Microsoft.SqlServer.Dac.DacServices
编写自己的C#/ Powershell应用程序。)
通常你安装SSDT来做到这一点。我不确定是否有一个可移植版本的SSDT,如果那就是你真正需要的东西,不需要安装。
这似乎是我可以安装的“最小”包,仍然可以使用工具(sqlpackage.exe)。
Microsoft®SQLServer®数据层应用程序框架(2016年6月30日)
https://www.microsoft.com/en-us/download/confirmation.aspx?id=53013
以上安装时将其安装到以下目录(今天)
C:\ Program Files \ Microsoft SQL Server \ 130 \ DAC \ bin \ SqlPackage.exe