問題タブ [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.
linq - SQL CLR に Linq サポートを追加する方法
System.Core.dll と System.Xml.Linq.dll が SQL Server 2008 でサポートされている (またはサポートされる予定である) ことは、私の理解です。
SQL 2008 CLR プロジェクトで Linq to Objects を使用しようとしています。
これらのdllを「追加」/登録するにはどうすればよいですか? (参照として追加することはできません)
前もってありがとう、オリー
sql - SQL Server で CLR コードを使用して新しい T-SQL 演算子を作成することは可能ですか?
正規表現マッチングを行うための非常に単純な CLR 関数があります
SQL ステートメントのようなものを書くことができます。
そのクエリを次のように再構築するのがいいと思っているだけです。
CLR コードを使用して新しい比較演算子を作成することは可能ですか。(ウェブをざっと見たところ、答えはNOであると推測していますが、尋ねても害はありません)
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 で (完全に) サポートされていませんか?
sql-server-2008 - T-SQLクエリを使用して、sprocがCLRベースか通常のT-SQLベースかを判断することはできますか?
やあみんな。本番データベース内にある既存のsprocのCLR/アセンブリベースのsproc置換を統合しています。古いT-SQLベースのスクリプトのみを削除し、新しいスクリプトは削除しない更新スクリプトを作成したいと思います。すでにそこにある場合。それは可能ですか?
c# - SQL Server:varbinary(max)フィールドに格納されているファイル(pdf、doc、txt ...)をCLRストアドプロシージャのファイルにコピーするにはどうすればよいですか?
この質問のフォローアップとしてこの質問をします。
bcpとxp_cmdshellを使用するソリューションは、私の望ましいソリューションではありませんが、ここに投稿されています。
とにかく、私はc#を初めて使用します(Delphi開発者であるため)。チュートリアルに従うことで、簡単なCLRストアドプロシージャを作成できました。
私の仕事は、ファイルをクライアントファイルシステムからサーバーファイルシステムに移動することです(サーバーにはリモートIPを使用してアクセスできるため、共有フォルダーを宛先として使用できません。そのため、CLRストアドプロシージャが必要です)。
だから私はするつもりです:
- Delphiから一時テーブルのvarbinary(max)列にファイルを保存します
- CLRストアドプロシージャを呼び出して、varbinary(max)フィールドに含まれるデータを使用して目的のパスにファイルを作成します
C:\ MyFile.pdfをZ:\ MyFile.pdfに移動する必要があるとします。ここで、C:はローカルシステムのハードドライブであり、Z:はサーバーのハードドライブです。Cはニューヨークにあり、Zはロンドンにあり、それらの間にVPNはなく、https接続だけです。
誰かがそれを機能させるために変更できる(機能していない)以下のコードを提供しますか?ここでは、ID(int)とDATA(varbinary(max))の2つのフィールドを持つMyTableというテーブルがあると仮定します。テーブルが実際の一時テーブルであるか、データを一時的に保存するテーブルであるかは、違いがないことに注意してください。いくつかの例外処理コードがあれば幸いです(「ファイルを保存できません」という例外を管理できるようにするため)。
新しいファイルを書き込んだり、既存のファイルを上書きしたりできるようにしたいと思います。
(1つのサブ質問は次のとおりです。このアプローチは正しいですか、それともデータをCLRストアドプロシージャに直接渡す方法があるので、一時テーブルを使用する必要はありませんか?)
サブ質問の答えが「いいえ」の場合、一時テーブルを回避する方法を説明してください。それで、私が上で説明したもの(=一時テーブル+ストアドプロシージャ)よりも良い方法はありますか?クライアントアプリケーションからCLRストアドプロシージャにデータストリームを直接渡す方法はありますか?(私のファイルは任意のサイズにすることができますが、非常に大きくすることもできます)
.net - CLRストアドプロシージャの実行中に.NETフレームワークの実行が中止されましたか?
SQL Server 2008と同等の処理を行うストアド プロシージャを作成しFOR XML AUTO
ました。テストを行ったところ、役に立たないエラー メッセージが表示されました。このエラーはどういう意味ですか?
sql - 削除後トリガーは削除後にのみ起動しますか?
「削除後」とは、削除が行われるまでトリガーが起動されないことを意味すると思いましたが、これが私の状況です...
C# でトリガーを削除した後、3 つのほぼ同一の SQL CLR を作成しました。これは約 1 か月間、美しく機能しました。自動削除ツールの実行中に、3 つのうちの 1 つが突然動作を停止しました。
動作を停止したということは、クライアント ソフトウェアを介してテーブルからレコードを削除できなかったことを意味します。トリガーを無効にすると削除が許可されましたが、再度有効にすると削除できなくなりました。
だから私の質問は、「これはどうしてですか?」ということです。それに使用されたツールがメモリを混乱させた可能性はありますか?トリガーが例外をスローしたとしても、それが AFTER delete の場合、レコードは削除されるべきではありませんか?
すべてのトリガーは次のようになります。
CLR トリガーは、別のデータベースに対して 1 つの選択と 1 つの挿入を行います。SQL Server Mgmt Studio からのエラーがあるかどうかはまだわかりませんが、見つけ次第質問を更新します。
アップデート:
上記の同じトリガー コードを再実行すると、すべてが再び機能するようになるため、SSMS でエラーが発生した場合はどうなるかわかりません。
また、トリガーのコードのどこにもロールバックの呼び出しはありません。
.net - 間違ったバージョンの .NET Framework を使用する SQLCLR
開発サーバーの最近の再起動中に、SQLCLR のSQL Server
使用が開始されました。.NET 4.0
これは、SQL で CLR を使用しても何も機能しないことを意味します。少なくとも、これらのソースを読んで理解したとおりです。
http://software.intel.com/en-us/blogs/2009/10/16/sql-server-2008-sqlclr-net-framework-version/
www.sqlskills.com/BLOGS/BOBB/post/On-SQL-Server-and-NET-40.aspx
表示されるのは、次のタイプのエラー メッセージだけです。
メッセージ 6517、レベル 16、状態 1、行 1 AppDomain "xxx.dbo[ddl].3" の作成に失敗しました。メソッドの型シグネチャは Interop 互換ではありません。
ステートメントの実行 (@john-christensen の提案による)
次の情報が得られます。
これを解決する方法、または SQL Server CLR に以前のバージョンのフレームワークを使用させる方法を知っている人はいますか?
sql-server - SQL Serverのclrストアドプロシージャの16進(0x123AB ...)パラメータとして大量のデータを渡す
スレッドがそれ以上の回答を受け取っていないため、この質問のフォローアップとしてこの質問を投稿します。
CLRストアドプロシージャのパラメータとして大量のデータを「0x5352532F...」として渡すことができるかどうかを理解しようとしています。
これは、tiを一時DBフィールドに送信し、そこからvarbinary(max)パラメーターとしてCLRストアード・プロシージャーに渡すのではなく、データをCLRストアード・プロシージャーに直接送信することを回避するためです。
私は三重の質問があります:
1)可能ですか、はいの場合、どのようにですか?PDFファイルをCLRストアドプロシージャに渡したいとしましょう(パスではなく、ファイルを構成する完全なビット)。何かのようなもの:
ここで、insertfileは、サーバーパス(file_remote_path)に(file_contents)として渡すバイナリデータを書き込むストアドプロシージャです。
2)このアプローチを採用することによる破損のリスクはありますか(またはSQLサーバーが舞台裏で使用するのと同じアプローチです)?
3)ファイルの内容を「0x23423...」16進表現に変換する方法
.net - CLR ストアド プロシージャで Entity Framework を使用するにはどうすればよいですか?
すべてのロジック (Entity Framework 4 オブジェクトの操作として実装されている) をサーバー側に移動することを楽しみにしています。シンプル (アプリケーション構造のおかげ) で、有益 (私が持っているのは、クライアントとしての古いラップトップ 1 台と、SQL Server 2008 を実行する 1 台の頑丈なサーバーだけであり、ロジック用に別のサービスを構築すると、より多くの遅延が発生する可能性があるため) になりそうです。データベース内で行う場合と比較した場合)。
では、CLR ストアド プロシージャ内で Entities Framework を正しく使用し、ホスト サーバーが提供する SqlContext を使用してそれを作成するにはどうすればよいでしょうか。
突然、Web で例を見つけることができなくなりました。誰もまだこれを食べていないのは奇妙に見えます。その仕事はばかげていて、絶対にやるべきではないということですか?T-SQL を使用して EF クラスの代わりにテーブルに直接アクセスするのはあまり便利ではありません。私のモデルは継承を多用し、多くの非常に単純なテーブルの非常に複雑な型ごとのテーブル構造を持っているからです。