問題タブ [sqlclr]

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.

0 投票する
6 に答える
1393 参照

c# - CLRストアドプロシージャを使用して解決するための良い問題は何ですか?

私はしばらくの間SQLServerでCLRストアプロシージャを使用してきましたが、それを使用するのに最適な状況は何であるかまだ疑問に思っています。

MSDNは、重い文字列操作(regex)や、多くのテーブル変数とカーソルを宣言するT-SQLの置き換えなどの使用に関するガイドラインを提供しています。SOユーザーがCLRストアドプロシージャでどのような問題を解決しているのか、また例/ベンチマークについても知りたいです。

たとえば、CLRストアドプロシージャ+ SSRSは、データ操作ロジックをSSRSおよびT-SQLから、読み取りと操作がより簡単なマネージコードに取り込むための優れた方法であることがわかりました。

0 投票する
2 に答える
4949 参照

.net - CLR アセンブリが 64 ビット SQL Server 2005 に読み込まれない

SQL Server 2005 (32 ビット) のインストールでは、いくつかのユーザー定義関数を含むアセンブリを使用します。次のようなスクリプトを使用して、これを本番環境にデプロイします。

これらの機能で問題が発生したことはありません。ここで、サーバーの 1 つを x64 にアップグレードしようとしたときに、いずれかの関数を呼び出すときにエラーが発生しました。スタック トレースの例:

System.Data.SqlClient.SqlException: アセンブリ ID 65549 を読み込もうとしているときに、Microsoft .NET Framework でエラーが発生しました。サーバーのリソースが不足しているか、アセンブリが PERMISSION_SET = EXTERNAL_ACCESS または UNSAFE で信頼されていない可能性があります。クエリを再度実行するか、ドキュメントを確認して、アセンブリの信頼の問題を解決する方法を確認してください。このエラーの詳細については、System.IO.FileLoadException: ファイルまたはアセンブリ 'ourfunctions、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係のいずれかを読み込めませんでした。指定されたアセンブリ名またはコードベースが無効でした。(HRESULT からの例外: 0x80131047) System.IO.FileLoadException: System.Reflection.Assembly.nLoad (AssemblyName fileName、String codeBase、証拠 assemblySecurity、Assembly locationHint、StackCrawlMark&) で

level を使用しているのに対し、エラーには権限セットEXTERNAL_ACCESSANDが記載されています。UNSAFESAFE

.dll ファイルはターゲット プラットフォームを「任意の CPU」に設定してビルドされており、varbinary 構文ではなくファイルから dll をロードしようとすると、同じ結果が得られます。http://support.microsoft.com/kb/918040の提案を既に試しました。

32 ビット マシンでまったく同じ手順を試したところ、すべてうまくいきました。x86 と x64 の違いである必要があります。何か案は?

解決策: ついに解決策を見つけました。アセンブリが実際に 32 ビットでコンパイルされたものであることがわかりました。Visual Studio では、ターゲット "Any CPU" を使用しましたが、基になる .csproj を調べたところ、次のスニペットが見つかりました。

したがって、「任意の CPU」ターゲットは、実際には x86 アセンブリを構築していました。ああああ。Subversion でこの行をたどりましたが、2006 年の最初のチェックイン時にはすでに存在していました。これは、データベース プロジェクトの初期のテンプレートのバグだったのでしょうか?

とにかく、助けてくれてありがとう。同じ問題を経験した多くの人が彼の答えによって最も助けられると思うので、私はラスの答えを受け入れます。

0 投票する
3 に答える
9176 参照

sql - SQL Server から VB.NET DLL を実行する

目的:

HTTPリクエストを実行する.Net 3.5を使用してVB.NET 2008を使用してDLLを作成したい

次に、(トリガーで) SQL Server 2005 から DLL を呼び出し、DLL にいくつかの変数を渡し、戻り値を取得します。

プロセスのどこにいるのですか。

DLL 'HTTPDLL.dll' を作成しました

ソース:

DLL を SQL Server の c:/Windows/System フォルダーに配置しました。

これらのアセンブリをロードしました

HelloWorld System.Core System.XML.Linq

これらのコマンドを使用して

次に、拡張プロシージャを追加しました

(この時点では、アセンブリを追加する必要があるかどうか、またはアセンブリを追加する必要があるかどうかはわかりません。これは Dll を直接参照するためです。)

私が解決する必要があるもの。DLL の (拡張プロシージャ) HTTPPost 関数を呼び出したい

私が試したこと exec HTTPPost "Msg 17750, Level 16, State 0, Procedure HTTPPost, Line 1 Could not load the DLL HelloWorld, or one of the DLLs it references. Reason: 126(The specified module could not be found.). "

「メッセージ 2812、レベル 16、状態 62、行 1 ストアド プロシージャ 'HelloWorld.HTTPPost' が見つかりませんでした。」

私が必要とするもの: 私の実装を見て、すべてが適切に設定されているかどうかを確認し、その DLL を適切に呼び出して変数を送信し、その戻り値をキャッチする方法を (例とともに) 教えてください。とても感謝しています。

私は多くの投稿/記事に目を通し、ここまで私を連れてきた小片を手に入れましたが、すべてを網羅したものはありません.

私もこれを試しました

(および他のそのようなバリアント) を取得し、sp_OAGetErrorInfo の戻り値でこれを取得します。

「エラー ソースの説明 ODSOLE 拡張プロシージャの無効なクラス文字列」

おそらく私はそれを間違って呼んでいますが、私はそれを機能させることができませんでした(常に「無効なクラス文字列」を返します)

よろしくお願いいたします。

0 投票する
1 に答える
931 参照

sql-server - SQLCLRでのメモリプレッシャー通知

Googleは、メモリ不足の通知を受け取るためにSQLCLR内で利用可能なAPIがあるかどうかを教えてくれません。

AppDomainはメモリ不足でアンロードされるため、明らかに使用されますが、問題は、アンロードの前に通知がAppDomainに送信され、キャッシュメモリを解放できるかどうかです。

(私のdllはすでに安全でないモードで実行されているので、それは問題ではありません)

0 投票する
1 に答える
2195 参照

.net - SQL Server 2008 への SQL CLR アセンブリのデプロイ時に「既定のスキーマが存在しません」

Visual Studio 2008 と menu を使用して、パラメーターとして型を持つサンプルSQL CLRストアド プロシージャを展開しています。SQL CLRProject -> Deploy

しかし、次の奇妙なエラーが発生します:

どうすれば修正できますか?

私のユーザーはこのように作成されました:

0 投票する
3 に答える
1207 参照

sql-server - パラメータをクラスにカプセル化するT-SQLストアドプロシージャをリファクタリングする方法

私のSQL Server 2008場合stored procedure、パラメータが多数あります。

それらの最初の部分はすべての呼び出しで使用され、2番目の部分のパラメーターはめったに使用されません。また、ロジックを2つの異なるストアドプロシージャに移動することはできません。

classこのすべてのパラメーターをまたはにカプセル化し、structそれをストアドプロシージャパラメーターとして渡す方法はありますか?

使用できますかSQL CLR。他の方法はありますか?

0 投票する
2 に答える
2909 参照

linq - SQL CLR に Linq サポートを追加する方法

System.Core.dll と System.Xml.Linq.dll が SQL Server 2008 でサポートされている (またはサポートされる予定である) ことは、私の理解です。

SQL 2008 CLR プロジェクトで Linq to Objects を使用しようとしています。

これらのdllを「追加」/登録するにはどうすればよいですか? (参照として追加することはできません)

前もってありがとう、オリー

0 投票する
2 に答える
275 参照

sql - SQL Server で CLR コードを使用して新しい T-SQL 演算子を作成することは可能ですか?

正規表現マッチングを行うための非常に単純な CLR 関数があります

SQL ステートメントのようなものを書くことができます。

そのクエリを次のように再構築するのがいいと思っているだけです。

CLR コードを使用して新しい比較演算子を作成することは可能ですか。(ウェブをざっと見たところ、答えはNOであると推測していますが、尋ねても害はありません)

0 投票する
2 に答える
3111 参照

c# - SQLCLR と DateTime2

SQL Server 2008、Visual Studio 2005、.net 2.0 SP2 を使用 (新しい SQL Server 2008 データ型をサポート)。

入力として DateTime2 を受け取り、別の DateTime2 を返す SQLCLR 関数を作成しようとしています。例:

これで、上記は正常にコンパイルされます。これらの SqlDateTimes を SQL Server の DateTime2 にマップしたいので、この T-SQL を実行してみます。

これにより、次のエラーが発生します。

メッセージ 6551、レベル 16、状態 2、プロシージャ f_UTCToLocalDT、行 1 "f_UTCToLocalDT" の CREATE FUNCTION は、戻り値の T-SQL と CLR の型が一致しないため失敗しました。

(DATETIME2 の代わりに) DATETIME を使用すると問題なく動作します。しかし、精度の向上をサポートするには、むしろ DATETIME2 を使用したいと思います。私は何か間違ったことをしていますか、それとも DateTime2 は SQLCLR で (完全に) サポートされていませんか?

0 投票する
1 に答える
32 参照

sql-server-2008 - T-SQLクエリを使用して、sprocがCLRベースか通常のT-SQLベースかを判断することはできますか?

やあみんな。本番データベース内にある既存のsprocのCLR/アセンブリベースのsproc置換を統合しています。古いT-SQLベースのスクリプトのみを削除し、新しいスクリプトは削除しない更新スクリプトを作成したいと思います。すでにそこにある場合。それは可能ですか?