問題タブ [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.
sql-server - CLRを使用してレジストリから値を取得する
SQL ServerのアセンブリとしてMicrosoft.Win32をレジストリ化する必要のないCLRプロシージャを使用して、レジストリから値を取得する方法はありますか?
CLR proc内のレジストリからDigitalProductId(文字列にデコードする必要があります)を取得してSQLに返すことを検討しています。
サポートされている名前空間
これにmscorlibのメソッドを使用できますか?
編集: 私はここで何かが欠けていますか?Microsoft.Win32はCLRで使用できるように見えますか?編集:はい、私は何かが欠けていました。Microsoft.WIn32を使用する前に、UNSAFEアセンブリとして設定してから、署名などを行う必要があります。
c# - SQL Server 2005は、C#を使用してストリームからアセンブリを作成します
MSSMSで生成されたアセンブリスクリプトのように、ストリームからアセンブリを作成できますか?SQLServerがアクセスできないディレクトリに配置されたDLLからアセンブリを作成する必要があります。
ただし、アセンブリインストーラはアセンブリにアクセスできます。
だから私の質問は:アセンブリを読み取り、読み取ったストリームから作成を生成できますか?
ありがとう。
sql-server - SQL Server 2008 CLR と T-SQL の比較: 効率や速度に違いはありますか?
私は、T-SQL でいくつかの基本的なデータベース作業を行った C# 開発者です。ただし、T-SQL の知識をはるかに超えて、非常に複雑なストアド プロシージャを作成する必要があります。
SQL Server 2008 の一部として .net CLR を使用して C# でストアド プロシージャを作成すると、T-SQL で作成した場合よりもストアド プロシージャの効率が低下しますか? 違いは(もしあれば)重要ですか?なんで?
sql-server - SQL Server 2008 で CLR 関数を展開する方法
「RegularExpression」と呼ばれる VS2008 で SQL Server プロジェクトを作成しました。そのプロジェクトでは、「Regex.cs」クラスを作成し、正規表現に関する関数を 1 つ作成しました。
次に、ソリューションをビルドします。
今、私の問題は、このソリューションをスクリプトを介して SQL Server 2008 にデプロイすることです ([Deploy in VS2008] をクリックするだけではありません)。
を使用して、そのプロジェクトのアセンブリをSQL 2008にデプロイすることに成功しましたCREATE ASSEMBLY <AName> FROM '<path of .dll>'
しかし、SQL 2008関数セクションでVS2008に書いた関数を取得していません。
c# - CLRストアドプロシージャを使用して解決するための良い問題は何ですか?
私はしばらくの間SQLServerでCLRストアプロシージャを使用してきましたが、それを使用するのに最適な状況は何であるかまだ疑問に思っています。
MSDNは、重い文字列操作(regex)や、多くのテーブル変数とカーソルを宣言するT-SQLの置き換えなどの使用に関するガイドラインを提供しています。SOユーザーがCLRストアドプロシージャでどのような問題を解決しているのか、また例/ベンチマークについても知りたいです。
たとえば、CLRストアドプロシージャ+ SSRSは、データ操作ロジックをSSRSおよびT-SQLから、読み取りと操作がより簡単なマネージコードに取り込むための優れた方法であることがわかりました。
.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_ACCESS
ANDが記載されています。UNSAFE
SAFE
.dll ファイルはターゲット プラットフォームを「任意の CPU」に設定してビルドされており、varbinary 構文ではなくファイルから dll をロードしようとすると、同じ結果が得られます。http://support.microsoft.com/kb/918040の提案を既に試しました。
32 ビット マシンでまったく同じ手順を試したところ、すべてうまくいきました。x86 と x64 の違いである必要があります。何か案は?
解決策: ついに解決策を見つけました。アセンブリが実際に 32 ビットでコンパイルされたものであることがわかりました。Visual Studio では、ターゲット "Any CPU" を使用しましたが、基になる .csproj を調べたところ、次のスニペットが見つかりました。
したがって、「任意の CPU」ターゲットは、実際には x86 アセンブリを構築していました。ああああ。Subversion でこの行をたどりましたが、2006 年の最初のチェックイン時にはすでに存在していました。これは、データベース プロジェクトの初期のテンプレートのバグだったのでしょうか?
とにかく、助けてくれてありがとう。同じ問題を経験した多くの人が彼の答えによって最も助けられると思うので、私はラスの答えを受け入れます。
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 拡張プロシージャの無効なクラス文字列」
おそらく私はそれを間違って呼んでいますが、私はそれを機能させることができませんでした(常に「無効なクラス文字列」を返します)
よろしくお願いいたします。
sql-server - SQLCLRでのメモリプレッシャー通知
Googleは、メモリ不足の通知を受け取るためにSQLCLR内で利用可能なAPIがあるかどうかを教えてくれません。
AppDomainはメモリ不足でアンロードされるため、明らかに使用されますが、問題は、アンロードの前に通知がAppDomainに送信され、キャッシュメモリを解放できるかどうかです。
(私のdllはすでに安全でないモードで実行されているので、それは問題ではありません)
.net - SQL Server 2008 への SQL CLR アセンブリのデプロイ時に「既定のスキーマが存在しません」
Visual Studio 2008 と menu を使用して、パラメーターとして型を持つサンプルSQL CLR
ストアド プロシージャを展開しています。SQL CLR
Project -> Deploy
しかし、次の奇妙なエラーが発生します:
どうすれば修正できますか?
私のユーザーはこのように作成されました:
sql-server - パラメータをクラスにカプセル化するT-SQLストアドプロシージャをリファクタリングする方法
私のSQL Server 2008
場合stored procedure
、パラメータが多数あります。
それらの最初の部分はすべての呼び出しで使用され、2番目の部分のパラメーターはめったに使用されません。また、ロジックを2つの異なるストアドプロシージャに移動することはできません。
class
このすべてのパラメーターをまたはにカプセル化し、struct
それをストアドプロシージャパラメーターとして渡す方法はありますか?
使用できますかSQL CLR
。他の方法はありますか?