4

.NET 3.5 のものを使用するストアド プロシージャを作成するには、SQLCLR を使用する必要があります。使用しないPERMISSION_SET = UNSAFEとできません。ただ死んで、次のエラーが表示されます。

展開エラー SQL01268: .Net SqlClient
データ プロバイダー: メッセージ 6503、レベル 16、状態 12、行 1
アセンブリ 'system.core、バージョン = 3.5.0.0、カルチャ = ニュートラル、publickeytoken = b77a5c561934e089。' が SQL カタログに見つかりませんでした。
バッチの実行中にエラーが発生しました。

だから私はこの記事を見つけました:

http://weblogs.asp.net/paulomorgado/archive/2009/06/13/playing-with-sql-server-clr-integration-part-iv-deploying-to-sql-server-2005.aspx

そして、最後の行は次のように述べています。

「今では、DBA がこれを使用させてくれるとは限りませんが、構築するのは楽しかったです。」

彼がアクセス許可が「安全でない」に設定されていることに言及していたかどうかはわかりません。

では、これを行うと、巨大なぽっかり穴が発生する可能性がありますか?

4

3 に答える 3

6

アセンブリが実行できることを制限する3つの異なるpermission_setオプションがあります

SAFE-アセンブリをマネージコードに制限します

EXTERNAL_ACCESS-ファイル、ネットワークリソースなどへのアクセスを許可します。

UNSAFE-無制限のアクセス-非マネージコードの実行を含む

MSDNドキュメントは次のガイダンスを提供します

UNSAFEを指定すると、アセンブリ内のコードがSQL Serverプロセススペースで操作を完全に自由に実行できるようになり、SQLServerの堅牢性が損なわれる可能性があります。UNSAFEアセンブリは、SQLServerまたは共通言語ランタイムのセキュリティシステムを破壊する可能性もあります。UNSAFE権限は、信頼性の高いアセンブリにのみ付与する必要があります。

アセンブリが.NET3.5の機能のみを使用している場合、UNSAFEアクセスが必要な理由がわかりません。

System.Coreライブラリで許可されていないタイプまたはメンバーの1つを使用している可能性があります。Microsoftにはこれらのリストがあります。System.Core.dllで許可されていないタイプとメンバー

ここにいくつかの詳細があります。ホスト保護属性とCLR統合プログラミング

于 2010-07-09T00:46:12.593 に答える
-3

当たり前のことを言って申し訳ありませんが、「UNSAFE」のどの部分がわかりにくいですか?

あなたはできる:

  • SQLServerとOSのインストールを破棄します
  • メモリリークを導入する
  • 不安定性を追加する

「このCLRを2005で動作させる方法」という質問に関連していると思います。後者の2つの副作用を引き起こす可能性のあるメソッドを使用したい場合...

于 2010-07-09T06:30:28.217 に答える