.dtsx SSISパッケージをデプロイした後、ドライブにバスを取得するために実行できるクエリまたはC#コードがありますか、またはデプロイされた.dtsxファイルを取得できます。
3 に答える
MSDB
パッケージは SQL Server に配置された SSIS パッケージのように格納されているのでRight Click
、[ ] をクリックしますRun Package
。ダイアログボックスが表示されます
タブをクリックし、Connection Managers
個々の接続の接続文字列を変更します。
そうしないと
SSISパッケージが次を使用して作成されている場合はxml config file
、をクリックしてconfiguration tab
構成ファイルを開き、パッケージの詳細を確認します
更新 1:-
- SSIS パッケージ変数への値の割り当て
この名前空間を追加 Microsoft.SqlServer.Dts.Runtime;
Application app = new Application();
Package package = null;
package = app.LoadPackage(deployed ssis package path,null) //Load DTSX path
//Access the SSIS variables
pkg.Connections["sConn"].ConnectionString = strSourceConn;
pkg.Connection["dConn"].ConnectionString = strDestConn;
2.XMLを読む
すべての dtsx パッケージの基礎となるコードは ですxml
。したがって、C# を使用して XML をロードし、各ノードを反復処理して情報を見つけることができます。
3.dtsx.config ファイルから情報を取得します。
上で述べたように、ssis パッケージには、すべての情報を格納する xml 構成ファイルが含まれる場合があります。point 2
4.パッケージ構成がSQLサーバーに保存されている場合は、以下のコードを使用します。コードは、SSISパッケージの情報の収集から取得されます
SELECT Props.Prop.query('.') as PropXml,
Props.Prop.value('declare namespace p1="www.microsoft.com/SqlServer/Dts";
string(./@p1:Name)','nvarchar(max)') as PropName,
Props.Prop.value('.', 'nvarchar(max)') as PropValue
FROM (
SELECT CAST(pkgblob.BulkColumn AS XML) pkgXML
FROM OPENROWSET(bulk 'C:\tmp\MyPkg.dtsx',single_blob) AS pkgblob
) t
CROSS APPLY pkgXML.nodes('declare namespace DTS="www.microsoft.com/SqlServer/Dts";
/DTS:Executable/DTS:Property') Props(Prop)
結論 :-
config file を使用して SSIS パッケージが作成されている場合。保管場所を特定します。格納されている場合は、XML configuration type
その XML ファイルを C# にロードし、ノードを検索します。ssis データが格納されている場合はsql server
、上記の sql を実行してすべての情報を取得します。SQLクエリは、パッケージの詳細をxmlタイプで返します。これをC#で読み取って、必要な情報を取得できます
更新 2:-
SSIS パッケージが SQL Server にデプロイされている場合、以下のコードは C# を使用してパッケージの詳細を取得するのに役立ちます
public class SSISDetails
{
public string PackageData { get; set; }
public string PackageName { get; set; }
}
string storedProc = string.Empty;
List<SSISDetails> _pkgcol = new List<SSISDetails>();
string connectionString = "server=localhost;Integrated Security=SSPI";
using (var conn = new SqlConnection(connectionString))
using (var command = new SqlCommand("SSISDetails", conn)
{
CommandType = CommandType.StoredProcedure
})
{
conn.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read ())
{
_pkgcol.Add(new SSISDetails()
{
//Please don't write the code like the one below accessing
//columns using index .
PackageName =reader[2].ToString (),
PackageData =reader[10].ToString ()
});
}
conn.Close();
}
foreach (var item in _pkgcol.Where (a=>a.PackageName =="YourPackageName") )
{
//read the item.PackageData and using Linq to xml retrieve the nodes which
//you want
}
情報を取得するストアド プロシージャは次package name
のとおりです。path
description
package data
xml
Create Procedure SSISDetails
as
begin
with ChildFolders
as
(
select PARENT.parentfolderid, PARENT.folderid, PARENT.foldername,
cast('' as sysname) as RootFolder,
cast(PARENT.foldername as varchar(max)) as FullPath,
0 as Lvl
from msdb.dbo.sysssispackagefolders PARENT
where PARENT.parentfolderid is null
UNION ALL
select CHILD.parentfolderid, CHILD.folderid, CHILD.foldername,
case ChildFolders.Lvl
when 0 then CHILD.foldername
else ChildFolders.RootFolder
end as RootFolder,
cast(ChildFolders.FullPath + '/' + CHILD.foldername as varchar(max))
as FullPath,
ChildFolders.Lvl + 1 as Lvl
from msdb.dbo.sysssispackagefolders CHILD
inner join ChildFolders on ChildFolders.folderid = CHILD.parentfolderid
)
select F.RootFolder, F.FullPath, P.name as PackageName,
P.description as PackageDescription, P.packageformat, P.packagetype,
P.vermajor, P.verminor, P.verbuild, P.vercomments,
cast(cast(P.packagedata as varbinary(max)) as xml) as PackageData
from ChildFolders F
inner join msdb.dbo.sysssispackages P on P.folderid = F.folderid
order by F.FullPath asc, P.name asc;
end
ファイル システムに配置する場合のデフォルトのパッケージの場所は、C:\Program Files\Microsoft SQL Server\100\DTS\Packages (SQL 2008) または C:\Program Files\Microsoft SQL Server\90\DTS\Packages (SQL 2005) です。 )。
SQL サーバーにデプロイすると、msdb データベースに格納されるため、SQL Server Management Studio からアクセスできます。
- 接続オプションで「データベース エンジン」ではなく「統合サービス」を選択します。
- 保存されたパッケージを展開する - MSDB を展開し、パッケージを検索します (パッケージの保存時に使用したのと同じ名前で)。
Visual Studio (または Business Intelligence Development Studio) からインポートできます。新しい SSIS プロジェクトを作成し、パッケージを右クリックして [インポート] を選択し、パッケージが保存されている SQL Server に接続します。