在我的环境中,大多数SSIS软件包都是独立的,只有自己需要将软件包部署到生产环境中。
但是现在我们有一组相当复杂的软件包,需要创建自己的表,如果可能的话,我希望能够在安装时检查权限。
我们已考虑使用分步向导创建MSI以执行生产安装。
我的问题:SSIS部署方案是否有最佳实践?我们可以劫持SSIS默认生成的部署向导来添加我们自己的步骤吗?有没有关于此的Microsoft文档/指导?
答案 0 :(得分:0)
通过在大型组织中部署多个带有大量繁文缛节的项目,msi已被证明是最佳解决方案。在导入项目本身而不是部署工具方面,可以选择通过msi中调用的命令行进行导入:
[RunInstaller(true)]
public partial class CustomInstaller : System.Configuration.Install.Installer
{
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
string InstallPath = System.IO.Path.GetDirectoryName(this.Context.Parameters["assemblyPath"]) + @"\";
string SqlServer = Context.Parameters["SqlServer"];
SsisInstaller.ImportPackage(InstallPath + "MyProject.dtsx", "MyProject", SqlServer);
}
}
public class SsisInstaller
{
public static void ImportPackage(string packagePath, string packageName, string sqlServer)
{
ProcessStartInfo ProcessStartInfo = new ProcessStartInfo(@"""c:\program files\Microsoft SQL Server\100\DTS\Binn\dtutil.exe""");
ProcessStartInfo.Arguments = @" /File """ + packagePath + @""" /Copy SQL;" + packageName + " /Q /DestS " + sqlServer;
Process.Start(ProcessStartInfo);
}
}
如您所见,用户界面步骤已添加到安装程序项目并通过上下文传递,以允许用户指定SSIS的实例名称。将Sql代理作业部署为其他sql依赖项的.sql脚本也很有帮助,但是sql脚本的批量部署是一个更普遍的问题。
答案 1 :(得分:0)
如果您使用的是sql server 2012,您可能需要查看项目部署模型:
http://msdn.microsoft.com/en-us/library/hh213290
这消除了处理安装包的一些麻烦......就部署中的其他操作挂钩我发现powershell或msbuild运行良好。