保护级别在项目中期改变 - 现在项目将无法建立

时间:2013-09-09 19:06:01

标签: sql-server ssis sql-server-2012

启动了一个新的SSIS项目,忘了将默认保护级别设置为“不保存敏感”(我们的标准)现在项目中途进行了更改(在项目级别和每个包中。)检查时所有包都不保存敏感,项目是不保存敏感,但是在尝试构建时,我得到了

  

项目一致性检查失败。以下不一致之处   检测到:PACKAGE1.dtsx有一个不同的ProtectionLevel   项目。 PACKAGE2.dtsx有一个不同的ProtectionLevel   项目。 ... PACKAGE(N).dtsx有一个不同的ProtectionLevel   该项目。

(它列出了项目中的每个包,即使它们都与项目级保护相匹配。)

3 个答案:

答案 0 :(得分:10)

我怀疑你遇到了同样的问题。我通过API更正了所有我的包,以便他们都表明它们是DTS:ProtectionLevel="0",这是不受保护的。

项目(.dtproj)文件的保护级别也设置为DontSaveSensitive。 <SSIS:Project SSIS:ProtectionLevel="DontSaveSensitive" xmlns:SSIS="www.microsoft.com/SqlServer/SSIS">

对我来说不匹配的是,在项目文件中,它跟踪了关于每个包的太多信息,因此如果向下滚动,您将看到每个包的条目,如 <SSIS:Property SSIS:Name="ProtectionLevel">3</SSIS:Property>或任何默认号码。在文件中设置0(搜索和替换)。保存项目文件,它现在将构建。

您可能需要执行Build All才能构建它。我怀疑VS / SSDT正在尝试使用它存储在.dtproj文件中的额外数据来确定它是否需要验证项目中的所有包。由于我们手动编辑了文件,因此无需通知任何传感器通常被翻转以表示需要完全重新编译。

答案 1 :(得分:2)

billinkc的回答对我不起作用,因为使用文本编辑器更改值不会正确更改它。以下MSDN页面解释了有一个cmd行工具来管理它:

http://technet.microsoft.com/en-us/library/cc879310.aspx

像这样:

for %f in (*.dtsx) do dtutil.exe /file %f /encrypt file;%f;2;strongpassword

它会将项目中的每个模块更改为倒数第二个值中指定的保护级别。如果它是0,不存储值,那么你不需要密码,可以删除最后一个分号和之后的所有内容。

以下MSDN文章中有一个表格,其中包含与dtutil一起使用的每个保护级别的编号:

http://technet.microsoft.com/en-us/library/ms141747.aspx

答案 2 :(得分:-2)

Microsoft已对此进行了破解,因此即使使用DTUTIL实用程序更改程序包保护也无法修复项目文件元数据。

我必须申请对项目文件进行手动修复,以将存储软件包的软件包保护级别副本的元数据更改为与项目和软件包相同的元数据。

经过深思?可能不是。

获取软件包列表(已经部署并创建DTUTIL语句。将它们放在批处理文件中并从命令行执行。

这仅适用于已部署的软件包,因为我们正在查看SSISDB,而不适用于Project文件夹

USE SSISDB
DECLARE @projName VARCHAR(250) = 'Sales'

DECLARE @FolderPath VARCHAR(1000) = 'E:\ssis_' + @projName

DECLARE @DtutilString VARCHAR(1000) =
    '"C:\Program Files\Microsoft SQL Server\130\DTS\Binn\dtutil.exe"/file "'+ @FolderPath +'\XXX" /encrypt file;"'+ @FolderPath +'\XXX";0 /quiet'

SELECT DISTINCT
       REPLACE(@DtutilString, 'XXX', pack.[name])
--     SELECT *
FROM internal.packages AS pack
    INNER JOIN
        [internal].[projects] AS proj
        ON pack.project_id = proj.project_id

WHERE proj.name = 'ssis_' + @projName
相关问题