在未安装SSMS的服务器上使用SqlPackage.exe

在未安装SSMS的服务器上使用SqlPackage.exe

问题描述:

我有一台Windows 2012服务器。服务器可以访问我的SQL数据库。 我无权访问SQL数据库服务器,并且无法在运行我的网站的Windows 2012服务器上安装SSMS。在未安装SSMS的服务器上使用SqlPackage.exe

我想用SqlPackage.exe与.dacpac文件

我碰到下面的错误来更新我的数据库方案:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.SqlServer.Dac.DacPackage' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Microsoft.SqlServer.Dac.DacServices' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SqlSchemaModelStaticState' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.SqlServer.TransactSql.ScriptDom, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

是否有某种方式,我可以给SqlPackage.exe所需Microsoft.SqlServer.TransactSql.ScriptDom无需安装SSMS在服务器上?

如果这是不可能的,那么是否有一个独立的EXE可以完成这项工作?

+1

什么,你应该寻找,如果你有这种问题是“可再发行版”的工具。 [此博客文章](http://sqlblog.com/blogs/jamie_thomson/archive/2012/05/30/redistribution-of-sqlpackage-exe-ssdt.aspx)讨论了SqlPackage的重新分配。可能还有其他方法可以强制它“工作”,而不会降低可重新分配的路线,但它不会被正式授权使用。 –

+0

服务器用于阻止像你这样的人使用后门服务器。没有更多的上下文,这是一个糟糕的问题,因为你应该与你的本地DBA /服务器sysadmin –

通常你会安装SSDT来做到这一点。我不确定是否某个SSDT的便携式版本不需要安装,如果这就是您实际需要的。

+0

我试着在服务器上安装SSDT,但没有改变任何东西:/它仍然抱怨丢失文件 – Squazz

+0

你必须从ssdt安装中引用sqlpackage @Squazz – gmn

+0

类似于:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 130 \ ... – gmn

SqlPackage附带SMSS或SQL数据工具。

我看不出安装这两个二进制文件来部署dacpac的其他选择,它也可以从大多数运行Visual Studio的计算机上运行,​​因为sql数据工具是默认VS安装的一部分。

https://msdn.microsoft.com/en-us/library/mt204009.aspx

+0

我没有试图从装有VS的服务器上运行它。在这种情况下,我会让SSDT来完成这项工作:) – Squazz

您可以下载这些的NuGet包(根据所需版本和平台)。在那里你会发现任何缺少的DLL。
https://www.nuget.org/packages?q=microsoft.sqlserver.dac+microsoft.sqlserver.dacfx

(或者你也可以写自己的C#/ PowerShell的应用程序,直接使用Microsoft.SqlServer.Dac.DacServices从包中。)