問題タブ [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 投票する
8 に答える
513 参照

c# - 負のSQL結合の問題

結合を使用して 2 つのテーブルからデータを選択する必要があります。これはかなり単純で、ここで問題はありません。この問題は、参加しようとしているフィールドが 2 つの個別の外部キーとして使用されている場合に発生します (これは私が設計したものではありません)。したがって、結合する ID フィールドは正または負の数値です。

正の数値の場合は table_2 テーブルの ID_1 に関連し、負の数値の場合は table_2 テーブルの ID_2 に関連します。ただし、ID_2 は正の数になります (外部キーに負として格納されている場合でも)。明らかに、これらを強制する制約はありません-したがって、本質的には実際の外部キーではありません:/

私が使用しているSQLは次のようになり、正の数には問題ありません。

この負の側面を結合にどのように組み込むか。これは可能ですか?理想的には、自分のニーズに合わせてテーブルを変更したいのですが、どうやらこれは有効なオプションではありません。私は元気で、本当に立ち往生しています。

私が持っていた他の唯一のアイデアは、これらの奇妙なものを処理するための別のSQLステートメントです。これはすべて、C# の clr sql によって実行されています。別の SqlCommand をコードに追加すると、処理が遅くなる可能性が高いため、すべてを 1 つのコマンドにまとめたいと思います。

あなたの入力は大歓迎です、ありがとう:)

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

sqlclr - SQL CLR ストア プロシージャを使用してテーブル レコードを挿入するベスト プラクティスはありますか?

最近、一連の複雑な C# ベースのスケジューリング ロジックを SQL CLR ストアド プロシージャ (SQL Server 2005 で実行) に変えました。次の理由から、コードが SQL CLR の優れた候補であると確信しました。

  • ロジックには、SQL Server からの大量のデータが含まれます。
  • ロジックが複雑で、TSQL を使用して実行するのが難しい
  • スレッド化や同期化、またはサンドボックスの外部からのリソースへのアクセスはありません。

私たちのSPの結果は、これまでのところかなり良いです. ただし、ロジックの出力は複数のデータ テーブルの形式であるため、sp の結果として単一の行セットを返すことはできません。代わりに、このコードでは、C# ジェネリック コレクションの各レコードを SQL テーブルに保存するために、foreach ループに多数の "INSERT INTO ...." ステートメントを使用しています。コード レビュー中に、SQL CLR 内のインライン SQL INSERT アプローチがパフォーマンスの問題を引き起こす可能性があるかどうかについて懸念を表明した人がいて、(C# ジェネリック コレクションから) データをダンプするための他のより良い方法があるかどうか疑問に思いました。

それで、何か提案はありますか?

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

sql-server - select ...fromtableステートメントからスカラー値CLRUDFを呼び出すことはできません

スカラー値のCLRUDF(ユーザー定義関数)を作成しました。タイムゾーンIDと日時を受け取り、そのタイムゾーンに変換された日時を返します。

単純な選択から問題なく呼び出すことができます: "select dbo.udfConvert('Romance Standard Time'、@datetime)"(@datetimeはもちろん有効な日時変数です)

しかし、テーブルから日時を渡すと呼び出すと失敗します:「sometableからdbo.udfConvert('Romance Standard Time'、StartTime)を選択してください」(列StartTimeはもちろんdatetime型の列です)

エラーメッセージは次のとおりです。「列「dbo」またはユーザー定義関数のいずれかが見つからないか、「dbo.udfConvert」を集約するか、名前があいまいです。」

このメッセージは、スペルを間違えた初心者向けですが、一方のケースでは機能し、もう一方のケースでは機能しないため、スペルミスはないと思います。

何か案は?

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

sql-server-2008 - SQL Server 2008 (CLR) トリガーで「挿入」テーブルと「削除」テーブルの xml/text 列を参照できる方法はありますか?

SQL Server 2008 の clr トリガーで "Select * from deleted" を実行すると例外が発生します。トリガーで削除および挿入されたテーブルから xml/text 列にアクセスできる方法はありますか?

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

.net - .Net 3.5 アセンブリ SQL 2005 CLR を使用していますか?

Linq を使用する VS 2008 で作成されたアセンブリを参照する CLR ストアド プロシージャがあります。このアセンブリを「MyLib」と呼びましょう。

「MyLib」を SQL 2005 データベースに取得できないようです。私は次のことを行います:

しかし、私はエラーが発生します:

すべての .Net 3.5 アセンブリを SQL 2005 CLR に入れる簡単な方法はありますか? これを行うための「ベストプラクティス」の方法はありますか?

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

powershell - SQLCLR の Powershell?

過去に、スクリプトを関数のパラメーターとして渡して特定の計算を実行できるように、SQLCLR 内にスリッピング言語 (JScript など) を埋め込むことができました。以下は単純な例です (関数 ssScriptExecute は、スクリプト内のすべての出力の連結を返します)。

同じ方法で Powershell ランタイムを埋め込むことができれば幸いです。しかし、ランタイムはパスでアセンブリを見つけようとし、SQlCLR 内にはパスがないため、さまざまな問題が発生しました。発生したエラーについてさらに情報を提供できることをうれしく思いますが、誰かがこれを試したかどうか疑問に思っていました!

ありがとう!

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

c# - SQL Server SQLCLR の静的変数へのアクセスを同期する

C# で記述されたいくつかのストアド プロシージャを提供する、SQL Server に統合されたアセンブリを作成しました。アセンブリには、一部の構成データを保持する読み取り専用の静的変数があります。このデータは、アセンブリによって提供されるストアド プロシージャを介して操作されます。明らかに、この静的変数へのアクセスを同期する必要があります。使ってみた

私の構成クラス内。しかしその後、HostProtectionException が発生し、それを行うにはアセンブリを完全に信頼して実行する必要があることがわかりました。それを行うより良い方法はありますか?

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

sql-server-2005 - HttpWebRequest は、SQLCLR 内で初めてゆっくりと実行されます

CLR ストアド プロシージャ内で HttpWebRequest を作成する場合 (以下のコードに従って)、SQL Server が (再) 起動された後、または特定の (ただし不確定な) 期間が経過した後の最初の呼び出しは、サーバー上でかなりの時間待機します。 GetResponse() メソッド呼び出し。

Sql Server Agent ジョブを数分ごとに実行して、最初の「遅い」呼び出しが「実際の」本番ではなくエージェントによって行われることを確認するなど、「ハック」を伴わないこれを解決する方法はありますか?コード?

(簡潔にするために、エラー処理とその他の重要でないコードは削除されています)


この Sql Server フォーラム スレッドも参照してください。

0 投票する
4 に答える
6277 参照

sql-server - CLRストアドプロシージャを含む.NETアセンブリを再デプロイする

アセンブリ内にあるCLRストアドプロシージャを作成しました。

ソース管理リポジトリから.netアプリケーションを自動ビルドしてデプロイできるビルドシステムがあります。

2つのものを連携させて、CLRストアドプロシージャをホストするアセンブリを再デプロイできるようにします。

ただし、IISとは異なり、バイナリを置き換えるだけでは機能しないようです。データベースにDROPASSEMBLYを作成する必要があるようです。これを行うにはそのアセンブリを参照するすべてのオブジェクトを削除する必要があります。

これは、ある意味では合理的であるように見えます。つまり、データベースの整合性の観点からは合理的であり、別の意味では不合理です。一般に.NETの依存関係の実行時評価に適用されるJITアプローチです。

それで、バイナリを置き換えてからSQLサーバーにキックを与え、新しいアセンブリがすべての要件を満たしている(つまり、sprocを満たすための適切なパブリック名前空間、タイプ、メソッドなどを持っている)ことを理解できるようにするために何かを行うことは可能ですか?それにバインドされています)。

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

c# - CLRストアドプロシージャ内からSQLFILESTREAMにアクセスする

CLRストアドプロシージャからSQLファイルストリームにアクセスしようとしています。ファイルストリーム列を含む単一のテーブルを使用して、非常に単純なデータベースをセットアップしました。シンプルなコンソールアプリを使用して、ファイルストリームから正常に読み取ることができます。失敗するprocのサンプルコードは次のとおりです。

SqlFileStreamインスタンスを作成しようとすると、例外がスローされます。

System.ComponentModel.Win32Exceptionが発生しましたMessage="リクエストはサポートされていません"Source= "System.Data" ErrorCode = -2147467259 NativeErrorCode = 50

誰かが私が間違っていることを知っていますか?