タグ付けされた質問 「ssis」

SQL Server IntegrationServices。Microsoftから販売され、SQL Server 2005以降のバージョンのSQL ServerにバンドルされているETLツールです。

2
SSMSをIntegration Servicesに接続する際の「アクセスが拒否されました」
特定のSQL Serverクラスターのネットワーク名を使用してSSMSをIntegration Servicesに接続しようとすると、次のエラーが表示されます。 コンピューター 'FooDB'上のIntegration Servicesサービスへの接続は、次のエラーで失敗しました: "アクセスが拒否されました。" このエラーは、DCOMを介したリモート接続を許可するようにコンピューターが構成されていない場合、またはユーザーがDCOMを介してSQL Server Integration Servicesサービスにアクセスする権限を持っている場合に発生します。 これは、十分に文書化されたソリューションの日常的な問題です。たとえば、こちらとこちらのソリューションをご覧ください。 しかし、私は知っているすべての解決策を試しましたが、問題は残っています。 より詳細には、次のことを行いました。 接続しているユーザーが、MsDtsServer100で上記にリンクされている記事にリストされているDCOM権限を持っていることを確認しました。 起動とアクティベーションの許可:ローカル起動を許可、リモート起動、ローカルアクティベーション、リモートアクティベーションを許可 アクセス許可:ローカルアクセスを許可、リモートアクセスを許可 構成許可:読み取りを許可 接続に関連するすべてのトラフィックがファイアウォールを正常に通過していることをパケットスニッファーで確認しました。TCP接続が切断される前に表示される最後のパケットは、MSRPCヘッダー内の「アクセス拒否」のWindowsステータスコードを含むサーバーからの応答です。 「Distributed COM Users」グループおよび/またはローカル管理者グループにユーザーを追加し、サーバーを再起動することをテストしました。これにより、ユーザーはローカルノード名(FooDBN1、FooDBN2)を使用してSSMSからSSISに接続できましたが、クラスターネットワーク名(FooDB)に接続するときに「アクセス拒否」エラーが発生します。使用方法、および他のクラスターで機能するもの。 また、これらのグループのメンバーシップを変更することは、他のクラスターで必要だとは思いません。 チェックした他のクラスターでは、デフォルト以外の構成なしでクラスター名を使用してSSMSをSSISに接続できます。 これはServerFaultの方が適切であり、必要に応じて移行される質問で問題ないことを認識していますが、SQL Serverの問題でもあり、ここのユーザーは以前に対処した可能性が高いと思います。 プラットフォームの詳細: Windows Server 2008 R2 SP1 SQL Server 2008 R2 SP2 単一のSQL Serverインスタンスを持つ2ノードのアクティブ/パッシブクラスター 誰も私がここで次に見るべきことを提案できますか? 更新:これは今日、神秘的に作業を開始しましたが、ローカル管理者グループのメンバーのみが対象です。私が知る限り、何も変わっていません。

1
sysadmin以外のドメインユーザーが所有するSQL AgentジョブからSSISパッケージを実行する
大規模なSSIS展開の一部として、問題なく(SQL Serverエージェント経由で)夜間に実行される2つのSSISパッケージがあります。すべてがWindows認証を使用しており、スケジュールされたジョブはsysadmin(私も)によって所有され、SQL Serverエージェントサービスアカウントとして実行されます。 そのため、データは基本的にsource system ~> transit db ~> staging ~> NDS一晩で処理されます。 私はハンドル、気に2つのSSISパッケージtransit db ~> stagingとstaging ~> NDSデータの特定のセットのために、それぞれの部品。 ドメインユーザー(sysadmin以外)が何かを実行し、source system興味深いデータをにプッシュするtransit dbため、勤務時間中にこの更新されたデータをフェッチして更新する方法が必要NDSです。この人にとって最も簡単な方法は、そのETLは、マクロ対応のExcelブックのボタンをクリックすることで、ODBCを介してSQL Serverに接続し(Windows認証を使用)、ストアドプロシージャを実行します。 ストアドプロシージャは次のようになります。 create procedure dbo.UpdateMaterialInventory as begin execute msdb.dbo.UpdateMaterialInventory; end [msdb]の「姉妹」ストアドプロシージャは次のようになります。 create procedure dbo.UpdateMaterialInventory with execute as 'SqlAgentProxy' as begin execute msdb.dbo.sp_start_job N'NDS-ManualMaterialInventory'; end この[SqlAgentProxy]ユーザーは、ドメインユーザーのログインから[msdb]で作成したWindowsユーザーでexecute、このUpdateMaterialInventoryプロシージャへのアクセス許可を付与しました。これにより、ドメインユーザーににexecute許可を与える必要がなくなりますmsdb.dbo.sp_start_job。 SQL AgentジョブNDS-ManualMaterialInventoryはドメインユーザーが所有し、2つのステップがあり、それぞれ[SQL Server Integration …

4
パッケージ内のエラーを見つけるためにSSISDBを照会する方法は?
私はこの質問を見てきました SSIS 2012-T-SQLで現在実行中のパッケージをクエリする方法? 次のスクリプトを提供します。 SELECT E.execution_id , E.folder_name , E.project_name , E.package_name , E.reference_id , E.reference_type , E.environment_folder_name , E.environment_name , E.project_lsn , E.executed_as_sid , E.executed_as_name , E.use32bitruntime , E.operation_type , E.created_time , E.object_type , E.object_id , E.status , E.start_time , E.end_time , E.caller_sid , E.caller_name , E.process_id , E.stopped_by_sid …

1
異なるユーザー特権でストアドプロシージャからSSISパッケージを実行する
さまざまなレベルの特権が必要なため、ユーザーが合理的な方法でSSISパッケージを実行できるようにすることに問題があります。 シナリオ:データのロードを担当する2つの異なるSSISパッケージを使用してデータウェアハウスを作成しました。1つは自動的に実行され(SQLエージェントジョブを介して正常に動作しています)、もう1つはアップストリームデータが完成してクレンジングされた後のユーザーの要求など このパッケージは、実行の開始時にデータベースをバックアップする(確実に確認する)、計算されたテーブルを削除して再作成するなど、非常に特権的な操作を実行します。 [SSISDB]。[catalog]。[create_execution]および[SSISDB]。[catalog]。[start_execution]ストアドプロシージャを介してこのジョブを実行するストアドプロシージャを記述しました。これはアカウントで実行すると正常に機能します。 (私はシステム管理者です)。 ストアドプロシージャは、SSISDBおよびMSDBで実行をキューに入れるために必要な高いレベルのアクセス許可のために通常のユーザーが実行すると失敗し、パッケージ自体は(低)セキュリティコンテキストで実行されているため失敗しました。 私が試したもの: ストアドプロシージャで「名前を付けて実行」を使用して問題を解決しようとしましたが、データベース間のチェーンの問題、信頼できるフラグなどが原因で失敗しました。 また、パッケージを実行するエージェントジョブを作成し、ストアドプロシージャからエージェントジョブを実行するだけで問題を解決しようとしましたが、次のような苦痛の世界に入りました。 ジョブごとに実行許可を設定できない 中央のサーバーロールを介してこのアクセスを構成して、スタッフの経時的な変化に対応し、ジョブが所有者として1人のユーザーしか持つことができないようにしたい プロキシアカウントの暗い世界、sql-authログインなどと組み合わせた資格情報 プランCおよびD 残っていると思う唯一のオプションは、昇格されたアクセス許可を持つ専用のSQL Serverログインを作成し、ユーザーを信用して資格情報を渡さない/インポートをスケジュールした人の監査可能性を失うことを信頼することです(この問題は組織)、または純粋にユーザーが「サーバーロール」アカウントとして認証できるようにWebフロントエンドをカスタムビルドし、Webアプリに2番目の(特権)接続でストアドプロシージャを実行させます。 そう.... 以下の方法に関するアドバイスはありますか? SSISパッケージに特権操作を実行させる 低い特権のユーザーによって実行されます(AD Windowsアカウントを使用) ジョブを実行するためのアクセスが中央のサーバーロールを介して管理されている場合(できれば、新しいWindowsグループを簡単に作成することはできません) そして、新しい中間/プロキシアカウントがSQL Server Authアカウントである場合(再び、ADに変更を加える非常に限られた機能) ここには多くの可動部品があることを理解しています(そして、一部は回転するブレードのように感じます)。 乾杯、ティム 編集... そのため、今日はssis_admin権限を持つ専用のSQL Serverログインを作成し、そのユーザーが所有する3つのSQL Serverエージェントジョブを作成し、エンドユーザーがexecute asそのユーザーに呼び出すストアドプロシージャを更新しました。これはcreate execution、SQL Serverログインとして呼び出すことができないため失敗しました。Windows アカウントが必要です。 ユーザーストアドプロシージャをexecute as、SQL Serverが(ADサービスアカウント)として実行されているWindowsアカウントに更新し、それssis_adminを許可するとエラーで失敗する 現在のセキュリティコンテキストを元に戻すことはできません。「実行方法」が呼び出された元のデータベースに切り替えて、もう一度試してください。 これはどこにも速く行きません:(

2
一括挿入時間の大きなばらつき
そのため、ステージングテーブルからデータを取得してデータマートに移動するための単純な一括挿入プロセスがあります。 このプロセスは、「バッチあたりの行数」のデフォルト設定を持つ単純なデータフロータスクであり、オプションは「tablock」および「チェック制約なし」です。 テーブルはかなり大きいです。データサイズが201GBでインデックススペースが49GBの587,162,986。テーブルのクラスター化インデックスは次のとおりです。 CREATE CLUSTERED INDEX ImageData ON dbo.ImageData ( DOC_ID ASC, ACCT_NUM ASC, MasterID ASC ) 主キーは次のとおりです。 ALTER TABLE dbo.ImageData ADD CONSTRAINT ImageData PRIMARY KEY NONCLUSTERED ( ImageID ASC, DT_CRTE_DOC ASC ) 現在、BULK INSERTSSIS経由の実行速度が非常に遅いという問題が発生しています。100万行を挿入するのに1時間。テーブルに入力するクエリは既にソートされており、入力するクエリの実行には1分もかかりません。 プロセスの実行中に、5〜20秒かかり、次の待機タイプを示すBULK挿入を待機しているクエリを確認できます。 PAGEIOLATCH_EX。プロセスは、一度にINSERT約1000行までしか実行できません。 昨日、このプロセスをUAT環境に対してテストしているときに、同じ問題に直面していました。私はプロセスを数回実行し、この遅い挿入の根本原因を特定しようとしました。その後、突然5分未満で実行が開始されました。それで、私はそれをさらに数回実行しましたが、すべて同じ結果になりました。また、5秒以上待機していた一括挿入の数は、数百から約4に減少しました。 今、これは私たちが活動を大幅に落としてしまったというわけではないので困惑しています。 期間中のCPUが低い。 遅いときは、ディスクでの待機が少ないように見えます。 プロセスが5分未満で実行されていた時間枠の間に、実際にはディスク遅延が増加します。 また、このプロセスの実行が不十分な間、IOはずっと低くなりました。 すでに確認しましたが、ファイルが70%しかいっぱいになっていないため、ファイルの増加はありませんでした。ログファイルの残りは50%です。DBはシンプルリカバリモードです。DBには1つのファイルグループしかありませんが、4つのファイルに分散しています。 私が疑問に思っていることA:なぜ、これらの一括挿入でこんなに長い待ち時間が見られたのか。B:実行速度を上げるためにどのような魔法が発生しましたか? サイドノート。今日もがらくたのように走ります。 現在パーティション化されているUPDATE。しかし、それはせいぜい愚かな方法で行われます。 CREATE PARTITION SCHEME …

2
Setベースのアルゴリズム/ UDFを実装する方法
800K行38列のテーブルのすべての行に対して実行する必要があるアルゴリズムがあります。このアルゴリズムはVBAに実装されており、一部の列の値を使用して他の列を操作する一連の計算を実行します。 現在、Excel(ADO)を使用してSQLをクエリし、クライアント側カーソルでVBAを使用して、すべての行をループでアルゴリズムを適用しています。動作しますが、実行に7時間かかります。 VBAコードは非常に複雑であるため、T-SQLに再コーディングするのは非常に手間がかかります。 可能なルートとしてのCLR統合とUDFについて読みました。また、データベースに近づけるためにSSISスクリプトタスクにVBAコードを配置することも考えましたが、このタイプのパフォーマンスの問題に対する専門的な方法論が存在することは確かです。 理想的には、並列セットベースの方法で、できるだけ多くの行(すべて?)に対してアルゴリズムを実行できるようになります。 この種の問題で最高のパフォーマンスを得る方法に大きく依存するヘルプ。 -編集 コメントをありがとう、私はMS SQL 2014 Enterpriseを使用しています。詳細は次のとおりです。 このアルゴリズムは、時系列データの特性パターンを見つけます。アルゴリズム内の関数は、多項式の平滑化、ウィンドウ処理を実行し、入力基準に基づいて関心領域を見つけ、多数の値といくつかのブール結果を返します。 私の質問は、実際のアルゴリズムよりも方法論に関するものです。一度に多くの行で並列計算を実現したい場合、私のオプションは何ですか。 多くの作業が可能ですが、T-SQLへの再コード化が推奨されますが、アルゴリズム開発者はVBAで作業し、頻繁に変更されるため、T-SQLバージョンとの同期を保ち、すべてを再検証する必要があります変化する。 T-SQLはセットベースの関数を実装する唯一の方法ですか?

2
ExecutionInstanceGUIDをSSISDBに関連付ける
SQL Server Integration Servicesの2012リリースであるSSISは、(特に)パッケージの操作を追跡するSSISDBカタログを提供しています。プロジェクト展開モデルを使用するソリューションの既定のパッケージ実行では、SSISDBへのログ記録が有効になります。 パッケージが実行されると、にSystem::ExecutionInstanceGUID明示的なロギング(sys.sysdtslog90/ sys.sysssislog)を使用している場合、特定のパッケージ実行のすべてのイベントを記録する値が設定されます。 私が知りたいのですが、どのように私はExecutionInstanceGUIDを結ぶんですもの SSISDBカタログに。または、SSISDBで実行されるSSISパッケージは、その値のcatalog.executions.execution_id 最終的に、既存のカスタム監査テーブルを使用して、SSISDBカタログの詳細な履歴にリンクしようとしていますが、リンクが見つからないようです。

4
SSISDBカタログを作成できません
SQL Server 2014統合サービスでカタログを作成しようとすると、以下のエラーが発生します。インストールや他の場所で私が見逃したものはありますか? カタログバックアップファイル 'C:\ Program Files \ Microsoft SQL Server \ 120 \ DTS \ Binn \ SSISDBBackup.bak'にアクセスできませんでした。データベースファイルが存在し、SQL Serverサービスアカウントがそれにアクセスできることを確認してください(Microsoft.SqlServer.IntegrationServices.Common.ObjectModel)

1
SSISパッケージでトランザクションを作成する際の問題
トランザクションを使用する必要があるパッケージで作業していますが、現在次のエラーが発生しています: SSIS package "CATS-Package.dtsx" starting. Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning. Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container. Error: 0xC001401A at CATS-Package: The SSIS Runtime has failed to start the distributed transaction due to error 0x8004D01B "The Transaction Manager is not available.". …

1
SSISトランスフォームが非ブロック、部分ブロック、または完全ブロックのいずれであるかを判断するにはどうすればよいですか?
SSIS変換をブロッキング(非同期)、非ブロッキング(同期)、および部分ブロッキング(非同期)に分類すると主張するブログがいくつかあります。 特定の質問を見るとき:マルチキャストは同期(非ブロッキング)ですか、非同期(部分的にブロッキング)ですか? 1つのリソースが非同期を主張している:「マルチキャストは非同期(部分ブロックとも呼ばれる)変換」ソース:http : //social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx および別の同期:https ://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/ 他のリソースは、DQS Cleansingトランスフォームが非ブロッキングトランスフォームであると主張していますが、部分的にブロックしているように思えます。 タイプ別に分類された変換のリストへのリンクで答えないでください。この質問に対する答えにより、より厳密な方法で正しい答えを証明できるようになることが期待されます。 部分的にブロックする変換とブロックする変換は、所定のバッファーで動作する非ブロックではなく、新しいバッファーにデータを移動するため、変換の実行中にバッファーの作成を監視するのが解決策になると思いますが、 )これが決定的な答えを生成する場合、および(b)これを行う方法。 非ブロッキング変換では新しい実行ツリーが開始されないため、PipelineExectionTreesとPipelineExecutionPlanのログに答えが存在する可能性があります。これにより、同期と非同期が区別される場合がありますが、部分ブロックと完全ブロックは区別されない場合があります。

2
SSIS 2012環境変数の作成が失敗する
環境をあるサーバーから別のサーバーに移植するスクリプトを作成しています。私はcatalog.create_environment_variable「入力値のデータ型が「文字列」のデータ型と互換性がありません」というエラーを受け取る問題の呼び出しに直面しています。proc "check_data_type_value。"から出てきます。 奇妙なのは、GUIスクリプトに変数を渡せば、そのクエリが機能するということです。 DECLARE @var sql_variant = N'\\myserver\ssisdata' EXEC [catalog].[create_environment_variable] @variable_name = N'FolderBase' , @sensitive = False , @description = N'' , @environment_name = N'Development' , @folder_name = N'POC' , @value = @var , @data_type = N'String' GO ただし、このスクリプトアプローチを使用しても機能しません。私が行ったレッグワークでは、このエラーメッセージは通常、varcharではなくnvarcharデータ型を使用して解決されることを示しています。しかし、それは私のものには当てはまりません。 次のスクリプトの108行目。私の仮定は、それの何かとグラグラということですsql_variant型が、私は考えていない何その事があるの。 USE SSISDB; GO DECLARE @folder_id bigint , @folder_name nvarchar(128) = …

2
ETL:200のテーブルから抽出-SSISデータフローまたはカスタムT-SQL?
私の分析に基づいて、データウェアハウスの完全な次元モデルでは、200を超えるソーステーブルから抽出する必要があります。これらのテーブルの一部は増分ロードの一部として抽出され、他のテーブルは全ロードになります。 注目に値するのは、すべて同じスキーマを持つ約225のソースデータベースです。 私が見てきたことから、OLE DBソースとOLE DB宛先を使用してSSISで単純なデータフローを構築するには、設計時に列とデータ型を決定する必要があります。つまり、最終的には抽出だけのために200以上のデータフローが発生することになります。 保守性の観点から、これは大きな問題として私を襲います。抽出コードに何らかの抜本的な変更を加える必要がある場合、200の異なるデータフローを変更する必要があります。 代替オプションとして、メタデータテーブルのセットから抽出するソースデータベース、テーブル名、および列を読み取る小さなスクリプトを作成しました。コードは複数のループで実行され、動的SQLを使用して、リンクサーバーとOPENQUERYを介してソーステーブルから抽出します。 私のテストに基づいて、これはまだOLEDBのソースと宛先でSSISデータフローを使用するほど高速ではありません。だから私は私がどんな種類の選択肢を持っているのかと思っています。これまでの考えは次のとおりです。 EZAPIを使用して、シンプルなデータフローでSSISパッケージをプログラムで生成します。抽出するテーブルと列は、前述の同じメタデータテーブルから取得されます。 サードパーティソフトウェア(動的データフローコンポーネント)を購入する これにアプローチする最良の方法は何ですか?.NETプログラミングに関しては、私は初心者なので、基本だけで立ち上がるのに必要な時間も心配です。

4
ソースLOB列を処理するときの「行ごとの」フェッチメソッドの回避
SSISを使用して新しいSQL Serverスキーマに移行しようとしているレガシーPostgreSQLデータベースソース(ODBC)があります。次のような警告が表示されます。 テーブルにLOB列があるため、「Row by Row」フェッチメソッドが適用されます。列の内容はLOBです 実は、どの列も実際にLOBである必要はありません。TEXT型はいくつかありますが、varchar(max)内に簡単に収まります。でも見知らぬ人は、しかし、最もすでにある VARCHARが、それはLOBであるかのように扱われているvarchar型以上のもの(128)らしい(事前のプロパティでは、データ型はDT_NTEXTです)。 selectステートメントですべての文字列型を適切な長さのvarcharに明示的にキャストし、ODBCソースでDT_NTEXTとして設定されているSQLコマンドを手動で実行しようとしました。 私はDBAではないので、本当に愚かなことをしている可能性は十分にあります。バッチフェッチできるように、型が最終的にvarcharになるようにするための最良の方法を知りたいのですが。何か案は? 必要に応じて、Visual Studio 2013内でSSIS-BI 2014を使用しています。

2
データが失われる可能性があるため、値を変換できませんでした[終了]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にしてください。 5年前に閉鎖されました。 まず、これが重複した質問ではなく、その問題の潜在的な重複でもないことを明確にすることから始めましょう。StackOverflowとDBA Stack Exchangeでこの問題の既存のすべてのバリアントに対するすべての答えを、運がなくても実装しようとしました。 私は過去2日間この問題に取り組んでおり(1日約7時間問題に取り組んでいます)、問題をグーグルで解決した後でも、他の誰も私の問題とまったく同じ変種を持っているようには見えません。 私は何をしようとしていますか? SSISで、CSVファイルから読み取り、そこから行をOLE DBデータベースに挿入しようとしています。そのため、以下に示すように、私はこれまでで最も簡単なセットアップを行いました。 Flat File Source -CSV行を読み取ります。 Derived Column -現在は何もしません(実験のためだけにあります)。 Data Conversion -現在は何もしません(実験のためだけにあります)。 OLE DB Destination -データベースに行を格納します。 実行しようとすると、OLE DB宛先で実行が停止し、次のエラーメッセージが表示されます。 入力「OLE DB宛先入力」(51)の入力列「金額」(187)でエラーが発生しました。返された列のステータスは、「データが失われた可能性があるため、値を変換できませんでした。」でした。 失敗した列(Amount)は現在タイプDT_STRです。それが今一番信頼しているタイプのようです。 私は何を試しましたか? Flat File Connection失敗している列で「推奨タイプ」関数を使用してみました。これにより、Single byte signed intデータ型が推奨されました。 で停止し、私のフラットファイルソース。 エラーは、データ変換が失敗したことです。列「金額」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。 を使用しDerived Columnて列をにキャストしようとしましたDT_I4。 で停止し、私の派生列。 エラーは、データ変換が失敗したことです。列「金額」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。 を使用しData Conversionて列の値をにキャストしようとしましたDT_I4。 私で停止しますData Conversion。 エラーは、データ変換が失敗したことです。列「金額」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。 DT_STRソースと宛先の値の長さを変更してみました。 設定に応じて、ソースまたは宛先で停止します。 私の代わりに使用してExcelソース・コネクターを使用して接続しようとしたとすることなく、IMEX=1接続文字列に追加します。運がありません。 …

4
SQL Server評価版でSSISを開発することは可能ですか
をSQL Standard Server実装するためのの購入を検討していETL via SSISます。私たちにとっては非常に費用がかかるため、無料バージョンでSSISパッケージの開発をテストしたいと思います。エクスプレスバージョンにはSSISが統合されていないため、SQL Server 2014 の評価180 Expiresバージョンで試してみたいが、何も見つからない - Is it possible - Are there limitations. 誰か私をここで助けてもらえますか?
11 sql-server  ssis 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.