問題タブ [filetable]
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.
sql-server-2012 - SQL Server FileTable の欠点
単純にファイルをバイナリ データとしてデータベースに格納したり、ファイル共有への URL を含む列をデータベースに格納したりする代わりに、ファイル テーブルを使用することを考えています。私たちのアプリは Entity Framework を使用しているため、これは私が目にする小さな障害の 1 つですが、かなり簡単に回避できます。もう 1 つは、ファイルをデータベースと同じサーバーの "MachineName\InstanceName\FileShare" などのフォルダー パスに格納する必要があることです (フォルダーが別のサーバーに存在できるように構成できますか? )。
FileTable を使用することのその他の欠点はありますか?
sql-server - SQL Server FileTable 共有へのクロスサーバー アクセス
SQL Server FileTable 共有へのクロスサーバー アクセスに関する情報を教えてください。これを使用して、(負荷分散された構成で実行されている) Web アプリケーションの可変コンテンツを管理したいと考えました。共有は、SQL Server VM でローカルの場合はうまく機能しますが、Web サーバー VM から接続しようとすると、実行しているドメイン アカウントに関係なく (SQL Server SysAdmin のドメイン アカウントであっても) 機能しません。 .
FileTable ファイル共有ではなく、SQL Server に接続していることに注意してください。その接続は、プライベート サブネットを介して行われます。プライベート AD には、プライベート ドメイン内のマシンのプライベート ネットワークのみの DNS レコードがあります。
SQL Server をホストしている VM でコマンド プロンプトを実行し、データベース権限を持たないドメイン アカウントを使用するとaccess denied
、FileTable 共有にアクセスしようとすると、予期した結果 ( ) が得られます。<image>
access
SQL Server をホストしている VM でコマンド プロンプトを実行し、データベース権限を持っているドメイン アカウントを使用すると、FileTable 共有にアクセスしようとすると、期待される結果 ( ) も得られます。<image>
Web サーバー VM の 1 つでコマンド プロンプトを実行し、データベース権限を持っているドメイン アカウントを使用しているdevice is not ready
場合、FileTable 共有にアクセスしようとすると、予期しない結果 ( ) が返されます。<image>
Web サーバーから、SQL Server VM に接続されている任意のディスクの既定の共有に接続できます。<image>
SQL Server FileTable のセットアップと使用について説明している多くの記事を広範囲に検索して調べました。これらの記事のどれも、私が見ている問題を説明していません。
私の次のステップは、FileTable
Azure 以外の環境で を構成して、結果が同様かどうかを確認することです。しかし、それは私がする時間がない多くの仕事です。回避策として、SSIS を使用して、SQL Server VM 上の別の共有に SQL Server FileTable 共有をミラーリングし、Web サーバーで実行されているアプリケーションが FileTable 共有に間接的にアクセスできるようにします。
私が考えていないかもしれないことは何か分かりますか?別のマシンから SQL Server FileTable 共有に接続するにはどうすればよいでしょうか? この問題の解決に役立つリソースを教えてください。
sql-server-2012 - SQL Server 2012 FileTable フォルダー共有でアクセス許可を有効にする方法は?
FileTable を正常に作成した後、ファイル共有を表示しようとしましたが、アクセス許可が拒否されました。Management Studio で FileTable を右クリックし、[FilteTable ディレクトリを探索] をクリックすると、次のエラー メッセージが表示されます。
ファイルの場所を開けません。アクセスが有効になっていないか、アクセス許可がありません。
\mycomputer\sqlexpress... を使用して手動で共有にアクセスしようとしても、まだアクセスが拒否されます。
これは、ローカル マシンで実行されている SQL Express です。同じマシンからこの共有にアクセスしています。私は何が欠けていますか?
c# - ファイルの作成時に SQL Server 2012 FileTable のパフォーマンスが低下する (Lucene.NET の統合)
私は、SQL Server FileTable を使用して Lucene.NET を SQL Server と統合するアプローチのプロトタイプを作成しています。使用法は非常に便利で、コードは単純です。Lucene.NET のカスタマイズで特別なことをする必要はありません。私が求める利点は、主に操作性とエンタープライズ性です。私の会社は SQL Server を 24 時間年中無休で運用しており、検索インデックスを同じ制御スペースに保持することは、私たちにとって多くの利点があります (...そして、正確なトランザクションが得られないことはわかっています)。一貫性、それで問題ありません)。
問題: 私が何をしても、(System.IO.FileStream 経由で) WinAPI を使用して SQL FileTable UNC 共有内のファイルに書き込むときに、約 200 ミリ秒 (+- 20 ~ 30 ミリ秒) のオーバーヘッドがあるようです。これは Lucene.NET では重要です。なぜなら、ローカル ファイル システムへの直接のインデックス書き込み操作には約 50 ミリ秒かかるのに対し、FileTable への同じ操作には約 2 ~ 3 秒かかるからです。
これを確認するために、10KB、1MB、10MB の 3 つの新しい (作成) ファイルを書き込む別の実験を作成しました。これらの 3 つのファイルを次の場所に書き込みました。
- ローカル ディレクトリ (
c:\Search\\
) - UNC パス経由の非 FileTable 共有 (
\\\127.0.0.1\\Search\\
) - FileTable UNC パス (
\\\127.0.0.1\[instance-share]\\search_index\\
)
を使用System.Diagnostics.Stopwatch
すると、ローカル ディレクトリへの書き込みは予想どおり最速でした。FileTable 以外の共有への書き込みは低速でしたが同等であり、FileTable は桁違いに低速でした。興味深いのは、ケース 2 と 3 で 2 つの大きなファイル サイズが同様に実行されたことです。これにより、ファイル作成のオーバーヘッドがタイミングのレベルにあると考えられます。
質問: FileTable を使用したファイル作成が非常に「遅い」理由について、より深い洞察を持っている人はいますか?
これは、同時アクティビティがほとんどない開発用 VM です (4 GB の RAM、2 つの vCPU、おそらく IO の競合がありますが、これらのテストは相対的な比較を目的としています)。このボックスの簡単な行の SQL Server への挿入は、かろうじて 1 ミリ秒に達します。
コードは手元にありませんが、すぐに編集して投稿します(正確なタイミングで)-非常に単純で、静的に初期化されたバイト配列の4Kチャンクをループで目的のサイズに書き込むだけです。
次の推奨事項を実装し、SMB スタックも調整しましたが、パフォーマンスに違いはありませんでした 。 implementations.aspx#.UkbEYtKshcZ
編集:出力テスト コンソールからのタイミング:
ソース コード (非常に単純、完全を期すために掲載): ASCII アートを省略したコンソール メイン:
実装クラス:
permissions - SQL Server 2012 SP 1 - ファイル テーブルへのアクセス許可の挿入
私はSQLサーバーのファイルテーブルを初めて使用するので、テーブルのアクセス許可がファイル共有にどのように影響するかを把握しようとしています。私がやろうとしているのは、ユーザーがファイル共有にファイルを読み取って作成/追加できるようにすることですが、既に存在するファイルを更新または削除することはできません。
私が読んだことから、この機能を取得するには、ユーザーに SELECT および INSERT 権限を付与するだけでよいはずですが、そうではないようです。
ユーザーがファイル共有にファイルを作成/追加できるようにする唯一の方法は、UPDATE 権限を付与することです。これにより、既存のファイルを更新することもできます。
これは他の人が経験したことと一致していますか? 探している機能を取得することは可能ですか?
ありがとう。
sql-server - SQL Server FileTable の他の Windows ユーザーにアクセス許可を付与する方法
SQL Server 2012 では、FILESTREAM を正常に構成し、FileTable テーブルを作成しました。UNC パス ( ) 経由で FileTable にアクセスできます\\server\share\tabledirectory...
。ただし、他の Windows ユーザーがリモートでアクセスできるようにアクセス許可を付与する方法については、困惑しています。Windows ユーザー アカウントに選択/挿入/更新/削除のアクセス許可を FileTable テーブルに付与しようとしました。
...しかし、それは効果がありませんでした。