問題タブ [row-level-security]
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# - SQL Server 2016 の NHibernate にレベル セキュリティを実装する
Nhibernate を使用して SQL Server に行レベルのセキュリティを実装しようとしています。このアプローチを使用したかった: https://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-entity-framework-row-level-security/。
nhibernate でインターセプターを作成しました。
この方法でセッションにアタッチしました:
また、SQL Server に次のコードがあります。
だから私はすべてを正しくやったと思った。しかし、アプリケーションからクエリを実行すると、行がまったく表示されません。まったく同じ SQL コードをコピーして SQL Server Management Studio から実行すると、すべてが機能し、期待どおりの行が得られます。
誰でも私を助けることができますか?何を間違えたのかわかりません。
sql-server - 'SESSION_CONTEXT' は認識される組み込み関数名ではありません - SQL Server
Azure SQL データベースがあります。SQL Server Management Studio 2016 で次のクエリを実行しようとしています。
次のエラーが表示されます。
この行レベル セキュリティ チュートリアルに従っています: https://github.com/Azure/azure-content/blob/master/articles/app-service-web/web-sites-dotnet-entity-framework-row-level-security .md
python - モデル フォームの Django 行レベル ロック
Python 3.5、Django 1.8、および PostgreSql 9.4 を使用しています。
したがって、get リクエストでフォームをレンダリングし、ユーザーがフォームを送信すると更新される編集メソッドが 1 つあります。Hers のコード
あるユーザーが同時に何かを更新している場合、前のトランザクションが成功しない限り、他のユーザーが何かを更新できない場合、または悲観的ロックを使用するよりも他のより良い提案がある場合など、行レベルのロックを追加したいと考えています。
私は知ってselect_for_update
いますが、次の場合にどのように実装されるかわかりませんform.save()
どんな助けでも本当に感謝します
triggers - メモリ最適化テーブル SqlServer の After Update エラー
EF 6.1.3、SqlServer 2016 を使用しています。最近、DB 内の特定のテーブルをメモリ最適化テーブルに変更しました。すべてが正しく機能しますが、メモリ最適化されていないテーブルに after update トリガーを追加すると、次のエラーが発生します。
SQL Server アサーション: ファイル: <"d:\b\s1\sources\sql\ntdbms\hekaton\engine\core\tx.cpp">, line=7434 失敗したアサーション = '!(tx->ErrorObject != nullptr) || (err == nullptr || tx->TempTableTx)'. このエラーは、タイミングに関連している可能性があります。ステートメントを再実行してもエラーが続く場合は、DBCC CHECKDB を使用してデータベースの構造的な整合性を確認するか、サーバーを再起動してメモリ内のデータ構造が破損していないことを確認します。
注: テーブルには、メモリ最適化テーブルを使用する行レベル セキュリティの述語があります。
他の誰かがこれに遭遇した/解決策を見つけましたか?
ありがとう!
c# - Entity Framework - IDbConnectionInterceptor を使用した session_context の設定
Entity Framework 6 CodeFirst を介して SQL Server で行レベル セキュリティを使用するために、このチュートリアルに従っています。チュートリアル コード サンプルは、IDbConnectionInterceptor を使用して現在のユーザー ID を に設定する方法を示していますsession_context
。HttpContext.Current.User.Identity.GetUserId()
ユーザー ID を取得するには、Asp.Net ID および System.Web 名前空間と結合された静的アクセサー メソッドを使用します。
私のマルチテナント Web アプリでは、 tenantIdを Unity を使用して ( とのハードカップリングを作成せずに)に注入し、tenantIdを に設定したいと考えていました。をグローバルに登録する必要があることがわかりました(たとえば、アプリケーションの起動時)。したがって、リクエストごとに Unity にインスタンスを作成させることはできません。DbConnectionInterceptor
HttpContext
session_context
DbConnectionInterceptor
DbConnectionInterceptor
また、ソリューションには 2 つの異なるデータベース (テナント データベースとシステム データベース) を表す 2 つの DbContext があり、テナント データベースのみに適用したいと考えていますsession_context
。
DbContext
私に残っている唯一のオプションは、 tenantId を Unity を介してインスタンスに注入し、のメソッドDbContext
内のインスタンスにアクセスすることです。この目的のために、メソッドでパラメーターを使用することを考えました。(複数の)プロパティを持っています。これに関するドキュメントがないため、次のようなものが機能すると想定しました。Opened()
DbConnectionInterceptor
interceptionContext
Opened()
interceptionContext
DbContexts
私のコードは、DbContexts コレクションにTenantDataContext
最初の要素として が含まれているかどうかを確認し、sp_set_session_context
. しかし、私が心配しているのは、両方の DbContext が同時に存在する可能性があるかどうかです。その場合、他のデータベースへの接続もsession_context
必要のない を設定します。Microsoft がこれを単一のプロパティではなくコレクション プロパティとして提供した理由を知りたいですDbContext
。このプロパティは、同じ接続を複数の DbContext で使用できるかどうか疑問に思います。
私が望むことを達成した人はいますか?このinterceptionContextに関する説明も役に立ちます。
postgresql - インデックスを使用しない Postgresql マルチテナント モード
ポリシーなしで計画出力を説明する
マルチテナント ポリシーあり
マルチテナント ポリシーを有効にしないと、Postgresql はインデックスを使用しますが、ポリシーを有効にした後は、PKey または私が作成したその他のインデックスのいずれかを使用しません。
行レベル セキュリティが有効になっているときに作成したインデックスを使用するために Postgresql で必要な設定は何ですか。