問題タブ [sqlfilestream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - SqlFileStream -- Win32Exception: "アクセスが拒否されました" -- なりすまし
ここでの私の目標は、(1)設計どおりにSQL FILESTREAMを効果的に使用し、(2) SQL FileTable とその基になる FILESTREAM Windows ディレクトリへのアクセスを 2 つの Active Directory アカウント (Web によって提供される資格情報) のいずれかに制限する、添付ファイル マネージャーを用意することです。 /app.config ファイル)、および (3) このライブラリが含まれるサイトまたはアプリの現在の Windows 認証ユーザーを効果的に無視します。
私はすでにこの問題に関する多くの投稿を見てきましたが、私が見つけたほとんどすべての提案を試してみましたが、まだほとんどまたはまったく成功していません.
私は持っている:
- 接続文字列で統合セキュリティを有効にしました:
"Server={server};Database=AttachmentsGlobal;User ID={domain}\\{user};Password={password};Trusted_Connection=False;Integrated Security=true;"
- フォルダーのアクセス許可を変更することにより、SQL Server 2012 が実行されている Windows Server 2012 上の FileTable ディレクトリへの同じユーザー RW アクセスが与えられます。
filestream
ファイル テーブルと列に対する選択、変更、更新、挿入、および削除の権限をユーザーに付与します。- オブジェクトを呼び出すときに同じユーザーを偽装するために、オンラインで見つけたカスタムの偽装クラスを実装しました
SqlFileStream
(以下を参照)。 - SQL Server側でエラーを見つけようとしました。イベント ビューアーで確認できるのは、以下で試みたなりすましがユーザーのログオンに成功したことだけです。
- SQL Server の FILESTREAM 設定で「リモート接続を許可する」が有効になっていることを確認しました。
using(Impersonator){}
以下のブロックを無効にするたびに機能しSaveFile
ますが、それ以外の場合は失敗します。また、ローカルでデバッグするときに接続文字列を無視するようです: 私は管理者であるため、ユーザー アカウントは添付ファイル フォルダーにアクセスできますが、明示的にアクセス権を持たないユーザーに接続文字列を変更しても、正常にアップロードされます。 . これは、現在のアプリケーションユーザーの資格情報をサーバーに渡し、提供されたユーザーを無視する「統合セキュリティ」設定であると想定しています。Visual Studioを別のユーザーとして実行する以外に、これをうまくテストする方法がわかりません(試してみましたが失敗しました)。
私がばかげたことをしていて、解決策にかなり近づいていることを教えてください。この信じられないほどあいまいな「アクセスが拒否されました」というエラーは、私を夢中にさせています! ありがとう。
C#:
SQL:
例外:
sql-server - .mdf ファイルから SQL Server データベースをアタッチするときのエラー (ファイルストリームが構成されている場合)
ファイルチームがオンになっている SQL Server 2014 のインスタンスがありました。最近、マシンがウイルスに感染し、変更可能なすべてのファイルが基本的に解読されたため、SQL Server が壊れました。マシンの管理者は、データベースの .mdf ファイルと .ldf ファイルの形式でバックアップを提供してくれました。とにかく、そのマシンに SQL Server 2014 の新しいインスタンスをインストールし (ファイルストリームをオンにして)、復元した .mdf ファイルを添付しようとしています。このスクリプトを使用する場合:
次のエラー メッセージが表示されます。
したがって、基本的には壊れたファイルストリームの場所を参照しようとします (ウイルスによって解読されたデータ)。ただし、ABC.FS フォルダが存在するため、このようなメッセージが表示される理由がわかりません。このフォルダに含まれるいくつかのファイルストリームファイルを参照している可能性がありますか? すべてを削除してこのフォルダーを空のままにすると、同じエラーがスローされます。
新しい Filestream ディレクトリを作成しようとする別のスクリプトも試しました (スクリプトの残りの部分は上記と同じです)。
これにより、次のエラーが表示されます。
このフォルダーを完全に制御できるように、SQL Server を実行しているユーザーを含め、考えられるすべてのユーザーを追加したと思いますが、役に立ちません。
また、ファイルストリームに含まれるデータを復元したくないことも指摘します。これはほとんどなくなりました。このデータベースを .mdf ファイルからアタッチできるようにしたいだけです。
c# - SQL Server 2008 ファイル ストリームが Web ページに読み込まれる
ファイルストリームが有効になっている SQL Server テーブルがあります。ここにファイルをアップロードして更新することもできます。これらのファイルを .aspx Web ページに読み込むにはどうすればよいですか? ファイルは.pdf
ファイルです。
各行に関連付けられている 2 つのファイルがあります。
行を .aspx ページに読み込んでいますが、一番下でファイルを上下に開くようにします。これは、ユーザーがファイルを含む行を印刷するためのものです。
@dinglemeyer によって提案されたコードをチェックアウトしました。PDFを画像に変換したいです。簡単な方法があると思います:
vb.net - 別のスレッドでの SqlFileStream の書き込みが機能しない
Web アプリ用の Sql FILESTREAM を使用した学習とテスト。クライアントが Web ページから大きなファイルをアップロードすると、「X」時間がかかり、完全にアップロードされると 100% 完了と表示されます。ただし、非常に大きなファイルも SqlFileStream がファイル システムに書き込むのに時間がかかるため、その部分を完了するためにスレッドをスピンオフしたいと考えています。私が持っているコードは正常に動作しているようですが、ファイルストリームファイルにはデータがありません。
最初のレコード作成を独自のトランザクション スコープでラップし、スレッドで別のトランザクション スコープを使用しています。スレッド化されたルーチンには、適切な PathName() と TransactionContext がありますが、スレッドの使用中に何かが足りないと思います。
正常に動作する通常の SqlFileStream 呼び出しをコメントアウトしました。私がここでしていることに何か問題があることがわかりますか?
sql - FILESTREAM 列を null 以外に変更すると、ファイル システム データが重複するのはなぜですか?
varbinary(max) 列にファイル データを保持するテーブルがあり、ファイル システムにデータを保存するために FILESTREAM 列を使用するようにこれを変換中です。
この一環として、新しい FILESTREAM 列を追加する SQL 更新スクリプトがあります。
次に、古いファイル データを新しいデータ列に移行します。これにより、ファイル データが、たとえば 20GB のサイズでディスクに保存されます。
次に、列がnullにならないように列を変更します
しかし、これにより、ディスク上 (ファイル グループの場所内の新しいフォルダー内) にファイル ストリーム データの新しいコピーが作成され、別の 20 GB のコピーが残ります。
列を null 以外に変更する行為がデータを複製する理由について興味がありますか? それが新しい列であり、したがってデータが複製された場合は理にかなっていますが、他のすべてが同じままであるため、既存のデータを複製するだけではほとんど意味がありません-20GB 相当のファイルの複製に必要な時間は言うまでもありません。
列の追加をデフォルトに変更するだけで、重複は発生しません。
それから
しかし、なぜこれが起こるのか興味があります。
sql-server - SQL Server FILESTREAM の .NET Core サポート
データベースへの大きな BLOB の読み取り/書き込みに SQL Server の FILESTREAM 機能を使用する .NET Core (DNX SDK 1.0.0-rc1-update2) に既存のアプリケーションをアップグレード中です。SqlFileStream クラスを使用してこれを実現しますが、.NET Core では利用できないようです。project.json での参照は次のとおりです。
SOとGoogleを検索してみましたが、どちらもこの件についてはまったく何もありません。
実際に入手できないのか、それとも私が知らない別のパッケージに入っているのか、誰か確認してもらえますか?