3

安全でない SQL CLR アセンブリから FILESTREAM データをストリーミングしようとしています。

接続文字列は

Data Source=LAPTOP2\SQLEXPRESS;Initial Catalog=test;Integrated Security=True;Enlist=False

新しいものを作成するとき(もちろんSqlFileStreama 内)、次のようになります:SqlTransaction

リクエストはサポートされていません

OpenSqlFilestream

だから私は native を試すことにしましOpenSqlFilestreamたが、無効なハンドル (-1) を取得していGetLastWin32Errorますが、同じものを返します:

リクエストはサポートされていません ( ERROR_NOT_SUPPORTED)

私も試しSqlContext.WindowsIdentity.Impersonate()てみましたが、明らかな効果はありませんでした。

この制限を参照しているドキュメントは見つかりませんでした。本当にサポート対象外ですか?サポートされていない場合、正当な理由はありますか? 誰かが回避策を知っていますか?

4

1 に答える 1

-1

外部リソースにアクセスするには、アセンブリにexternal_accessまたは安全でないアクセス許可を使用している場合は、データベースにtrustworthyを設定する必要があります。そうしないと、SQL Serverが文字通りコードを信頼せず、インスタンスの外部に移動させないためです。ファイルアクセス(読み取り)には、

            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
            using (StreamReader reader = new StreamReader(FilePath, Encoding.Default))
            {

                string line;
                string allLine = "";

                while ((line = reader.ReadLine()) != null)
                {

                    allLine += line;

                }

            }

そしてファイル書き込み用

FileStream aFile = new FileStream(path, FileMode.Append, FileAccess.Write);
        StreamWriter sw = new StreamWriter(aFile, Encoding.Default);

        sw.Write(FilecontentsTOWrite);
        sw.Close();
        aFile.Close();
于 2013-03-13T07:03:14.033 に答える