回答
這是我剛纔嘗試的一種可能的解決方案。
只要將地圖System::VersionGUID
改爲@Version
和System::PackageID
改爲@Package
作爲以下查詢。
DECLARE @Package uniqueidentifier = ?
DECLARE @Version uniqueidentifier = ?
DECLARE @ProjectName nvarchar(100) = (
SELECT proj.name
FROM [catalog].[packages] pkg
INNER JOIN catalog.projects proj ON pkg.project_id = proj.project_id
WHERE package_guid= @Package
AND version_guid = @Version
)
SELECT ISNULL(@ProjectName, 'running from ssdt') as ProjectName;
如果該項目被部署在SSIS目錄,這是不從SSDT運行,你會得到的項目名稱,否則將返回null使用ISNULL
功能,你可以把什麼。我希望這可以幫助你。
編輯:version_guid
澄清
如果該項目已在多個文件夾已部署的version_guid
會有所不同。
尋找文檔msdn網站是很短的約version_guid
財產。
獲取第一次創建包時生成的版本GUID。 此字段是隻讀的。
在SSISDB中創建軟件包將在部署時對每個項目部署應該是不同的version_guid。
我沒有深入測試,但我重新創建了這種情況:在兩個不同的文件夾中部署相同的項目。
注package_guid和version_guid列。
如果您將項目部署在多個文件夾下,您是否冒險獲得錯誤的值? – billinkc
檢查我的更新。每個部署中的version_guid更改。 –
這是,雖然是神聖的設置在火災hacktastic,但它通過SSDT運行時工作...您需要一些事情腳本任務工作:
1。一個變量訪問,所以你可以爬到它的父母。
2. Microsoft.SqlServer.DTSRuntimeWrap
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using RuntimeWrapper = Microsoft.SqlServer.Dts.Runtime.Wrapper;
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
RuntimeWrapper.IDTSProject100 p = ((RuntimeWrapper.IDTSProject100)((Package)Dts.Variables["User::myVar"].Parent).Project);
string projectName = GetProjectName(p);
Dts.TaskResult = (int)ScriptResults.Success;
}
private string GetProjectName(RuntimeWrapper.IDTSProject100 proj)
{
System.Reflection.PropertyInfo pInfo = proj.GetType().GetProperty("Project",
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
Project p = (Project)pInfo.GetValue(proj, null);
return p.Name;
}
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
}
- 1. 如何找出OutputCache項目的名稱?
- 2. 從項目名稱查找API中找到項目
- 3. 如何在Django項目中找到我的項目名稱?
- 4. 找出在AS3對象的項目名稱
- 5. Automator在查找查找器項目中查找名稱數組
- 6. Scrapyd無法找到項目名稱
- 7. SSIS設置目標表名稱
- 8. VS2012中的SSIS項目出現「無法啓動項目」錯誤
- 9. 找出保存項目的表名 - opencart
- 10. 項目命名約定:[公司] [項目名稱]與[公司項目名稱]
- 11. SimpleDB項目名稱
- 12. Python名稱項目
- 13. Django項目名稱
- 14. xcode項目名稱
- 15. 獲取WPF項目的項目名稱
- 16. 更改項目名稱和包名稱
- 17. Django的:項目名稱
- 18. 在MyEclipse中重命名項目名稱
- 19. 從SSIS包中恢復SSIS項目
- 20. 如何使用xpath查找三個項目中的名稱?
- 21. 查找目錄中文件的名稱
- 22. Eclipse中Android項目名稱的錯誤
- 23. 在android中的項目名稱
- 24. 項目名稱與Django中的應用程序名稱
- 25. 如果項目名稱相同,如何找出列表中的哪個項目是點擊?
- 26. 輸出名稱/定製分類中項目的描述?
- 27. 列出VS2008項目中所有類的名稱
- 28. 重命名項目的包名稱
- 29. SSIS包中的輸出變量名稱和值
- 30. 「找不到給定選項名稱的EditorOptionDefinition導出:TextViewHost/LineNumberMargin參數名稱:optionId」
參考你可以查詢'SSISDB'數據庫?如果你可以這樣做,我會發佈一個可能的解決方案。 –
這需要在開發人員機器上使用的同時工作。 –
是的,我可以查詢SSIS數據庫。 –