問題タブ [clrstoredprocedure]
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-2008 - CLRストアドプロシージャからT-SQLストアドプロシージャを呼び出す
非常に簡単な背景:CLRストアドプロシージャを使用して、Active Directoryを使用してクエリ結果にアクセス制御を適用し、エンドユーザーが表示できる内容を制限しています。簡単に言うと、これは、ユーザーが結果(この場合はドキュメント)にアクセスするための基準を満たさないデータテーブルから行を削除することによって行われます。
このフィルタリングは、結果を表示する前にクライアントで以前に実行されていました。SQL 2008とはるかに強力なサーバーは、このアクセスフィルタリングをクライアントから移動する動機です。
私が疑問に思っているのは、「インライン」T-SQLをコマンドオブジェクト(この場合は)に渡す代わりに、CLRストアドプロシージャから元の通常のT-SQLストアドプロシージャを呼び出すことでパフォーマンスが向上することです。ストアドプロシージャが作成された元のT-SQLだけですか?誰かがこれについて言及している場所はどこにも見つかりません(おそらく、CLR SPの例として非常に混乱するためです:-))。T-SQLストアドプロシージャはすでに最適化およびコンパイルされているので、あなたはそうかもしれませんか?
誰かが私のためにこれを確認することができますか?
私が十分に明確になったことを願っています。どうもありがとう、
コルム。
sql-server-2008 - テーブル値パラメーターを使用して CLR ストアド プロシージャ内からストアド プロシージャを呼び出す
状況:
データ テーブルを作成し、TVP パラメーターを使用して SQL ストアド プロシージャを呼び出そうとする 1 つの Clr ストアド プロシージャ。
コード:
................................................................... ...................................
問題:
動作が不安定です。一度動作すると、x (x はランダム) が呼び出された後、y (y はランダム) に「重大なエラーが発生しました」という詳細が表示され、その後、サイクルが再び開始されます。エラーが発生し始めると、エラーが同じままであるため、SQL SPが変更され、障害が発生する可能性があるため、問題はCLR SP側にあります。CLR SP と TVP の間に愛着がないのかもしれませんが、それに関する言及は見つかりませんでした。
補足として、動作する場合は長時間動作する可能性がありますが、SP プランを削除すると、障害が発生し始めます。(その「トリガー」にもロジックが見つかりません)
何かご意見は ?前もって感謝します。
solrnet - CLR ストアド プロシージャの SolrNet
CLR ストアド プロシージャ内で Solrnet を使用したことのある人はいますか? いくつかの優れたチュートリアルへのポインタをいただければ幸いです。
私が直面している問題の 1 つは、SolrNet ライブラリを VS (2008) データベース (SQL Server) プロジェクトへの参照として含める方法が見つからないことです。
アップデート:
したがって、SQL Server プロジェクトがあり、ライブラリへの参照を追加したい場合は、最初に SQL Server 自体に存在する必要があるようです。これは理にかなっています。これは、次の SQL を使用して DLL 自体から SQL Server でアセンブリを作成することによって行われます。
(UNSAFEはデータベースのセキュリティに影響を与える可能性があることに注意してください。ただし、今のところ問題ありません)
ただし、SolrNet.dll には、Castle.Windsor.dll (それ自体がSystem.Core.dllを必要とする) やNinject.dllなどの他のライブラリ依存関係が必要です。必要なバージョンのCastle.Windsor.dll (2.5.1.0) とSystem.Core.Dll (Windows の .Net フォルダーにありました) を見つけましたが、必要なバージョンのNinject.dll (これは2.1.0.76 である必要があります)。アセンブリ バージョン 2.2 を作成しようとしましたが、期待どおりに機能しませんでした。
さまざまなリポジトリで検索しましたが、見つかりませんでした。このバージョンの DLL がどこにあるか知っている人はいますか?
更新 2:
そのため、ネット上で多くの検索を行った後、まだNinject.dll v2.1.0.76を見つけることができませんでした。私の次の試みは、SolrNet の次のバージョン (v0.4.0.2002) を使用することでした。このバージョンには、既に見つけたNinject.dll v2.2が必要でした。したがって、私の現在のステータスは、 SolrNet.dllの依存関係である SQL Server の他のすべてのライブラリを登録しています。同じ問題を抱えている人がいる場合に備えて、これを開いたままにしてプロセスを文書化します.
更新 3:
必要なすべてのライブラリを登録することができました (一部はGitHubの SolrNet ソースから取得しました)。これで、SolrNet がアセンブリとして SQL Server に登録されたので、(CLR ストアド プロシージャを作成するために) .NET SQL Server プロジェクトから参照できます。そこで、SOLR に接続してデータを取得する非常に単純な CLR SP を作成しました。以下のコード:
次の問題は、CLR SP をデプロイして実行すると、Solr が既にコンテナーに登録されているというエラーが表示されることです。SQL Server Management Studio で表示される正確な出力は次のとおりです。
PrintTodayは CLR StoredProcedure の名前です
CLRStoredProcedures2は、.NET SQL Server プロジェクトの名前であり、VS 2008 の既定の名前空間です。
ActiveProductは、Solr でのドキュメントの名前であり、Solr 注釈を含む cs クラスです。
出力からわかるように、最初Pipe.send("Hellooo")
はその仕事をしているため、SP はそこまで正常に動作します。
上記のエラーを検索したところ、同じアプリケーションで Solr インスタンスを 2 回登録しようとすると表示されることがわかりました。インスタンスを 2 回登録している場所がわかりません。ここで何か不足していますか?
上記の cs 関数は、私のマシンで開発された cs コンソール アプリケーションで実行すると正常に機能したことに注意してください。重要なもう 1 つの詳細は、SQL Server 2005 と同じネットワーク上にある私のマシンで SOLR サーバーがホストされていることです。
更新 4:
まず、上記のエラー (アップデート 3) は、SP が展開直後に初めて実行されたときに発生しません (現在修正に取り組んでいる別のエラーがあるため、最初の時間が機能すると仮定しましょう) )、その後 SP が再度実行されると、エラーが発生します。したがってSolrNet.Startup.Init<ActiveProduct>("http://192.168.2.190:8983/solr");
、SPから呼び出されたときに何をしていても(私が思うにコンテナに関係するある種のセッションを作成しています)、「セッション」を解放していないため、2回目(およびその後の毎回)SPが実行されます、エラーが発生します。セッションを停止したり、コンテナから解放したりする方法はありますか。回避策としてできることはtry - catch
一部SolrNet.Startup.Init
ですが、これはきれいではありません。
ありがとう。
sql-server - テーブルに挿入されたデータを通知する電子メールを送信するSQLServer-オプション?
複数のASP.NET(VB.NET)Webサイト間で共有されるSQL Serverデータベースがあり、データベースには顧客からの問い合わせを格納するテーブルがあります-組織内の関係者(および場合によっては問い合わせデータの一部を電子メールの本文に入れます)。誰かがこれをどのように実装できるかという観点から私のオプションの概要を教えてもらえますか?
私の考えは次のとおりです。
- SQLMail
- データベースメール
- System.Net.Mailライブラリを使用したVB.NETストアドプロシージャ?
- 別のオプション?
オプション3は、VB.NETでこれを行う方法を知っていて、些細なことなので、望ましいようです。
- 私の他のオプションは何ですか?
- 警告は何ですか?
- これをリアルタイムで、つまりトリガー(インサートの量が少ない)で行うことはできますか?
- または、これをバッチ、つまりジョブで実行することが重要ですか?
どんな助けでも大歓迎です!ありがとう。
c# - CLR ストアド プロシージャには SQL Server 実行スレッドが必要です
でストアド プロシージャを呼び出す CLR トリガーがありますBeginInvoke
。ストアド プロシージャで SqlComman を呼び出そうとしましたが、次のメッセージが表示されます。要求された操作には、Sql Server 実行スレッドが必要です。現在のスレッドは、ユーザー コードまたはその他の非 SQL Server エンジン コードによって開始されました。
私は SP でこれを行う必要がBeginInvoke
あり、待機のために で SP を呼び出さなければなりません。
コード:
SP で SQL クエリを呼び出すすべての場合、どうすればよいでしょうか?
c# - CLR ストアド プロシージャを使用する際の問題と解決策は?
現在設計段階にある、スケーラブルでパフォーマンス中心の新しい ASP.Net アプリケーションを組織に導入しています。
マネージャーは、ハイブリッド アプローチを採用することを決定しました。彼らは、CLR ストアド プロシージャを広範に使用し、T-SQL は単純なデータ操作のみに使用することにしました。
コミュニティから次のことを知りたいです。
- 非常に多くの CLR ストアド プロシージャを使用すると、後の段階でパフォーマンスの問題が発生する可能性がありますか?
- パフォーマンスの問題があった場合、MS チームから入手できる修正プログラムはありましたか?
注: Google を実行したところ、次の最も可能性の高い問題が見つかりましたが、最初の 2 つの解決策は見つかりませんでした。
SQL Server がアセンブリを読み込むと、メモリにキャッシュされます。O/S がメモリ不足を SQL Server に通知すると、明示的なガベージ コレクションが実行され、アセンブリがアンロードされる場合があります。これが頻繁に発生すると、パフォーマンスの問題が発生する可能性があります。
SQL CLR コードは、コードが実際に行うことを確認しないため、クエリ オプティマイザーによって正確にコストを計算できません。これは、実行計画に影響を与える可能性があります。
SQL CLR コードは、通常はシングル スレッドであるため、並列処理を妨げる場合があります。これにより、パフォーマンスが低下する場合があります。<< ここで解決策を見つけましたが、CLR Stored Procs のマルチスレッド コードですか? >>
CLR ストアド プロシージャに関する問題と修正について教えてください。
c# - SQL-CLR ストアド プロシージャが値を返さない
Stackoverflow を調べたところ、ほぼ同じ質問が見つかりました here。1年前に質問されましたが、まだ誰も答えていません。たぶん私は user1038334 よりも幸運で、誰かが私を助けてくれるでしょう。
何か奇妙なことが起こるまで、何日も正常に機能する SQL CLR ストアド プロシージャがあります。私のストアド プロシージャはテーブルを更新し、結果コードとして値を返します。したがって、この値を見ることで、何か問題があったかどうかを判断できます。問題は、この結果値を受け取ることです。C# コードは、戻り値を受け取った時点で例外をスローします。
そして面白いことに、SQL プロファイラーに接続してクエリをキャッチし、SQL Server Management Studio 内でこのクエリを実行すると、問題なく結果値を取得できます。
CLR アセンブリを再発行するか、SQL Server を再起動すると、すべてが修正されます。
このような奇妙な動作には理由があるはずですが、見つかりません。
SQL Server のバージョン: Microsoft SQL Server Developer Edition (64 ビット) - v.10.50.1765.0
ホスト OS バージョン: Microsoft Windows NT 6.1 (7601)
.Net バージョン: v4.0.30319
どんな助けでも大歓迎です。
.net - CLR ストアド プロシージャ スレッドの例外
exeで動作し、CLRの小さなxmlファイルでも動作する次のコードがありますが、10MBを超えるとスレッド中止エラーが発生します。SQL Server で構成する必要があるものはありますか?
エラーメッセージ:
c++ - アンマネージ コードを使用した CLR SP
私は、SQL Server 2008R2 CLR SP で使用したい C++ (www.NR.com 関数) のコードをいくつか持っています。C# でラッパーを作成しようとしましたが、うまくいきませんでした。おそらく、誰かがそのようなラッパーを作成し、必要なすべてのコンパイラ/リンカーオプションを設定する方法のサンプルまたはマニュアルを持っていますか?
ありがとう
sql-server - Analysis Services ストアド プロシージャのパフォーマンス
純粋な MDX では簡単に記述できない複雑な計算を実行するために、.NET でストアド プロシージャを記述しています。私が抱えている最初の問題は、一連のデータを表形式で取得して計算に渡す方法です。
これまでの私のコードは以下に書かれています。位置 ** 1 の値を取得した後、すべてのデータがメモリ内にあり、やり取りできると思っていたでしょう。ただし、* *2 の位置では、クエリ サブキューブがストレージ エンジンに対して、範囲内の毎日のように発行されているようです。これはパフォーマンスに壊滅的です。
私が間違っていることはありますか?セットを一度に評価するために呼び出すことができる別のメソッドはありますか?