我们使用VS 2010(BIDS),SQL 2012和TFS。我们有两个项目的解决方案。一个用于ETL,另一个用于报告。 ETL项目最近促使我在.dtproj项目文件的服务器上保存/合并不同的版本。我假设版本号比我想要的文件大。它促使我对目前解决方案中的其他项目做同样的事情。见附件。我没有这样做,因为它最后一次搞砸了我的环境!我确信这是100%我对TFS缺乏了解。话虽如此,我不知道该读什么/研究什么来教育自己不再搞砸它。
当我点击“获取服务器版本”链接时,它会提示我一个对话框,其中包含以下内容:
“文件project.dtproj已在源编辑器外修改...”
你想:
Save AS
Save
Cancel
Ignore
我点击了“另存为”。然后,当我意识到我最终会得到两个DTproj文件时,一个与解决方案绑定而另一个没有,我点击取消。
这是一切都出错了。
在我点击取消并在VS2010中重新加载项目后,我的软件包在VS 2012的SSIS包文件夹中看不到。它们在TFS中(我在源代码浏览器中看到它们)。它们在FS上(我在Windows资源管理器中看到它们)。
然而,我所做的一切似乎都没有让他们回到项目中。
如果我尝试添加现有软件包并在文件系统上浏览它,我会在项目中获取该文件,但它显示为该文件的副本。我在文件系统上看到新文件和原始文件,项目中出现的新文件名为“Project(1).dtsx”
如何让我的项目恢复正常?
感谢您的帮助!
肖恩
答案 0 :(得分:17)
.dtproj文件只是XML,用于指定构成项目的文件。每个版本的格式与另一个版本略有不同,但并不是特别复杂。
通常,我发现在开发人员之间“打破”项目文件是在混合中添加一个新包。看起来很简单,但无论出于何种原因,diff实用程序无法在添加包时协调差异。如果我知道会有多个开发人员在开发SSIS解决方案,我发现最好先尝试创建一个占位符包,这样我们就没有Dev A将MyFabulousPackage添加到项目文件中,而Dev B已经同时添加了OutrageouslyGoodPackage时间。相反,每个人都有相同的项目文件,然后他们的工作是修复他们的焦点区域的内容。
示例.dtproj
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DeploymentModel>Project</DeploymentModel>
<ProductVersion>11.0.2100.60</ProductVersion>
<SchemaVersion>9.0.1.0</SchemaVersion>
<State>$base64$P...g==</State>
<Database>
<Name>SSISFoo.database</Name>
<FullPath>SSISFoo.database</FullPath>
</Database>
<DataSources />
<DataSourceViews />
<DeploymentModelSpecificContent>
<Manifest>
<SSIS:Project SSIS:ProtectionLevel="DontSaveSensitive" xmlns:SSIS="www.microsoft.com/SqlServer/SSIS">
<SSIS:Properties>
<SSIS:Property SSIS:Name="ID">{83ded95e-49f0-4781-ab8f-7f8954d6423a}</SSIS:Property>
<SSIS:Property SSIS:Name="Name">SSISFoo</SSIS:Property>
<SSIS:Property SSIS:Name="VersionMajor">0</SSIS:Property>
<SSIS:Property SSIS:Name="VersionMinor">0</SSIS:Property>
<SSIS:Property SSIS:Name="VersionBuild">0</SSIS:Property>
<SSIS:Property SSIS:Name="VersionComments">
</SSIS:Property>
<SSIS:Property SSIS:Name="CreationDate">2013-03-19T10:24:18.8594643-05:00</SSIS:Property>
<SSIS:Property SSIS:Name="CreatorName">home\bfellows</SSIS:Property>
<SSIS:Property SSIS:Name="CreatorComputerName">Thangorodrim</SSIS:Property>
<SSIS:Property SSIS:Name="Description">
</SSIS:Property>
<SSIS:Property SSIS:Name="FormatVersion">1</SSIS:Property>
</SSIS:Properties>
<SSIS:Packages>
<SSIS:Package SSIS:Name="Package.dtsx" SSIS:EntryPoint="1" />
</SSIS:Packages>
<SSIS:ConnectionManagers />
<SSIS:DeploymentInfo>
<SSIS:ProjectConnectionParameters />
<SSIS:PackageInfo>
<SSIS:PackageMetaData SSIS:Name="Package.dtsx">
<SSIS:Properties>
<SSIS:Property SSIS:Name="ID">{3BEEFDD8-FB86-4804-9049-EB28C4BD69DD}</SSIS:Property>
<SSIS:Property SSIS:Name="Name">Package</SSIS:Property>
<SSIS:Property SSIS:Name="VersionMajor">1</SSIS:Property>
<SSIS:Property SSIS:Name="VersionMinor">0</SSIS:Property>
<SSIS:Property SSIS:Name="VersionBuild">1</SSIS:Property>
<SSIS:Property SSIS:Name="VersionComments">
</SSIS:Property>
<SSIS:Property SSIS:Name="VersionGUID">{3087F645-C4C4-4773-8040-E2DAFFE8B922}</SSIS:Property>
<SSIS:Property SSIS:Name="PackageFormatVersion">6</SSIS:Property>
<SSIS:Property SSIS:Name="Description">
</SSIS:Property>
<SSIS:Property SSIS:Name="ProtectionLevel">0</SSIS:Property>
</SSIS:Properties>
<SSIS:Parameters />
</SSIS:PackageMetaData>
</SSIS:PackageInfo>
</SSIS:DeploymentInfo>
</SSIS:Project>
</Manifest>
</DeploymentModelSpecificContent>
<Miscellaneous />
<Configurations>
<Configuration>
<Name>Development</Name>
<Options>
<OutputPath>bin</OutputPath>
<ConnectionMappings />
<ConnectionProviderMappings />
<ConnectionSecurityMappings />
<DatabaseStorageLocations />
<ParameterConfigurationValues />
</Options>
</Configuration>
</Configurations>
</Project>
您在使用“Package(1).dtsx”时遇到的问题是将现有软件包添加到项目中。单击“添加现有包”并在项目文件夹
中选择“Package.dtsx”时
(number)
的情况下保存它这是有道理的,因为允许您选择包的窗口允许包在Package Store或SQL Server中。如果您注意到“添加复制现有包裹”的标题栏(事实上,请注意,我从未注意到复制词直到今天和使用该产品8年后)
不要“添加现有包”。而是右键单击项目和“添加,现有项目”,这将恰好是您现有的SSIS包。