SSIS部署最佳实践 - 包和其他工件

时间:2011-02-17 15:58:49

标签: sql-server sql-server-2008 deployment ssis

在我的环境中,大多数SSIS软件包都是独立的,只有自己需要将软件包部署到生产环境中。

但是现在我们有一组相当复杂的软件包,需要创建自己的表,如果可能的话,我希望能够在安装时检查权限。

我们已考虑使用分步向导创建MSI以执行生产安装。

我的问题:SSIS部署方案是否有最佳实践?我们可以劫持SSIS默认生成的部署向导来添加我们自己的步骤吗?有没有关于此的Microsoft文档/指导?

2 个答案:

答案 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运行良好。