我创建了一个SSIS自定义任务并将其安装在我的开发计算机上,其中包括使用gacutil并将dll文件复制到适当的文件夹中。现在,使用此自定义任务的程序包需要在多个不同的MS SQL Server(2014)上运行。虽然我可以找到许多在本地安装和运行的文档,但是我对如何在服务器上安装最终产品一无所知。
我遇到的问题之一是在服务器上仅安装了SQL Server。服务器上没有Visual Studio,因此gacutil不存在。
有人可以告诉我我需要在哪里放置dll文件以及需要做什么,以便在运行这些软件包时该任务不会因为不存在而出错?
谢谢
答案 0 :(得分:1)
经过大量研究,我发现该dll文件需要放入[SQLSERVERINSTALLDIRECTORY],通常是C:\ Program Files(x86)\ Microsoft SQL Server [version] \ DTS \ Tasks \ x86和C:\ Program Files \ Microsoft SQL Server [version] \ DTS \ Tasks \
的文件夹
注意Tasks文件夹用于执行任务;连接,PibelineComponents进入各自的目录。
有关创建目录的信息在创建安装程序的教程中找到。可以在以下网址找到它:https://blog.tallan.com/2017/02/02/creating-an-effortless-custom-ssis-object-installer-using-wix/
需要用适当的版本替换[版本]。对我而言,使用SSIS 2014时为120。版本为:2017 = 140; 2016 = 130; 2014 = 120; 2012 = 110; 2008 =100。请注意,2008 R2及以下版本有一些不同的要求。 有关版本的信息位于https://support.microsoft.com/en-us/help/321185/how-to-determine-the-version-edition-and-update-level-of-sql-server-an
还需要将dll文件安装到GAC(全局程序集缓存)中。为此,通常需要在服务器上安装诸如gacutil之类的工具。也可以通过powershell或使用安装程序来完成此操作。
通过复制到适当的目录并使用powershell将其放入GAC,我能够在服务器上进行安装。要使用powershell安装到GAC中,命令是: [System.Reflection.Assembly] :: Load(“ System.EnterpriseServices,版本= 4.0.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a”) $ publish =新对象System.EnterpriseServices.Internal.Publish $ publish.GACInstall(“ C:\ path \ to \ dll.dll”)
此信息位于https://www.andrewcbancroft.com/2015/12/16/using-powershell-to-install-a-dll-into-the-gac/
虽然我使用手动方法在需要该组件的第一台服务器上进行安装,但我正在为它制作一个可以运行的安装程序。我相信这可能是更好的方法,因为可以对其进行跟踪和卸载。另外,如果您必须处理多个服务器,它将使事情变得更容易。