2017-06-20 2 views
1

保護レベルがDontSaveSensitiveであり、今日までに数回ローカルサーバーに展開されているSSISプロジェクトがあります。私は今、しかし、展開に次のエラーを取得しています:SSISプロジェクトを展開できません - "encrypt_binarydata"の実行中にエラーが発生しました

A .NET Framework error occurred during execution of user-defined routine or aggregate "encrypt_binarydata": System.IO.FileLoadException: Could not load file or assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. Not enough storage is available to process this command. (Exception from HRESULT: 0x80070008) System.IO.FileLoadException: at Microsoft.SqlServer.IntegrationServices.Server.Security.CryptoGraphy.CreateSymmetricKey(String algorithm) at Microsoft.SqlServer.IntegrationServices.Server.Security.CryptoGraphy.EncryptBinaryData(SqlString algorithmName, SqlBytes key, SqlBytes IV, SqlBytes binaryData) . (Microsoft SQL Server, Error: 6522)


私はグーグルがあったが、特にencrypt_binarydataを参照して何に出会います。 deploy_project_internalまたはuntrusted assembliesへの参照がいくつかありますが、この問題は何もありません。

重要な部分

Not enough storage is available to process this command

するようだが、そのリソースのshouldnを使用するために、スペアドライブの多くのスペースを行くRAMの多くギガバイトがあるように私はこれの頭や尾をすることはできません問題ではない。

このエラーが何を参照しているか、理想的にはどのように解決できるかについては、誰にも分かりますか?

答えて

1

これは、SQLとdllファイルの間でSSISDBの内部動作が深く深く掘り下げられているアクセス許可の問題です。元の質問のエラーメッセージは実際には赤いニシンのビットで、実際の問題はthis excellent resolutionで解決されたものと同じでした。これまで答える場合は後世の便宜上


は(だけでなく、別のリンクをクリックしたくない怠惰な人のために)消える、ここRemus Rusanu

への完全

クレジットで参照答えがあります


EXTERNAL_ACCESSを持つアセンブリは、EXECUTE ASパスの下にある畳み込みパスを使用しています。この問題は、 'dbo'を有効なログインにマップできない場合に表示されます。 dboのログインは、SIDがowner_sidsys.databasesという値のログインです。 AUTHORIZATION句がCREATE DATABASEで使用されていない限り、owner_sidはCREATE DATABASE文を発行するプリンシパルのログインIDです。これは、ログインしてCREATE DATABASEを発行したユーザーのWindows SIDです。

  • コピーデータベース:データベースが(。すなわちMachineA\userまたはDomainA\user)にローカルユーザーがマシンA上で発行されたCREATE、データベースがコピーされた手に、この知識を用いて1が発生する可能性のある問題を簡単に想像することができますマシンB(バックアップ/リストアまたはファイルコピー経由)。 owner_sidは、ファイルコピーとバックアップ/リストアによって保持されます。これは、マシンBではowner_sidが無効です。 EXECUTE Asを必要とするすべては、データベースからアセンブリをロードすることを含め、失敗します。
  • tombstonedアカウント。 CREATE DATABASEは、退社したユーザーによって発行されました。 ADアカウントが削除され、突然EXECUTE ASのすべてがアセンブリの読み込みを含む不思議なことに失敗します。
  • 切断されたラップトップ。 CREATE DATABASEは、ラップトップが作業ネットワークに接続されているときに問題となりました。自宅では、Windowsのキャッシュされた資格情報を使用してログインできますが、EXECUTE ASは使用できないADに接続して失敗します。アセンブリの読み込みも失敗します。あなたが再びADに達すると、翌日の仕事で不思議な問題が解決されます。
  • ADの接続性に問題があります。 EXECUTE ASはシステムキャッシュされた資格情報を使用せず、毎回ADに接続します。 ADの接続は問題(タイムアウト、エラー)ASをEXECUTEで同様のタイムアウトやエラーなどマニフェストそれらの問題を持っている場合は、ロード・アセンブリ

を含むすべてのこれらの問題は、単純に実行することによって診断することができます。問題のデシベルの文脈でEXECUTE AS USER = 'dbo'; 。エラーが発生して失敗すると、アセンブリーのロード問題の原因はEXECUTE ASコンテキストdboです。

解決策はほんのわずかですが、owner_sidに有効なログインを強制するだけです。 saは、通常、最良の候補である:

ALTER AUTHORIZATION ON DATABASE::[<dbanme>] TO sa; 

面白いことは、データベースが完全に健康であるように見えるかもしれないということです。テーブルは特定のコンポーネントのみがEXECUTE ASを要求利用可能であり、あなたが選択を実行することができ、更新、削除、テーブルを作成し、ドロップなど:

  • コード署名は、句
  • アセンブリの検証
  • EXECUTE ASを持つようにコードが必要ですT-SQLコードでEXECUTE AS明示

後者は、最も頻繁に見られる原因である(クエリ通知を含む)

  • サービスブローカメッセージ配信突然、すべてのアプリケーションがSqlDependencyに依存して動作を停止するか、またはランダムな問題を抱えているように見えます。この記事では、SqlDependencyが最終的にEXECUTE ASにどのように依存するのかを説明します:The Mysterious Notification

  • 関連する問題