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

sql-server - ビジネス ロジックを組み込み、SQL Server エージェントで実行をスケジュールする SQL Server CLR

C# クラス ライブラリにワークフローのようなアプリケーションのビジネス ロジックがありますが、月末にライブラリ内の特定のプロセスを呼び出す必要があります。このスケジュールされた実行を呼び出す理想的なメカニズムは、Sql サーバー エージェントを使用することだと思いました。 (SQLジョブが望ましいですが、絶対に必要な場合はSSIS地獄に行くことさえできますが)、問題はSQLジョブからアプリケーションライブラリのプロセスを呼び出す方法ですか?

アプリケーション ライブラリは asp.net ページからも使用されるため、通常、入力データベースと出力データベースが構成された Web アプリケーション コンテキスト (web.config) があります。

ステップが多かれ少なかれあることを理解しています

1) クラス ライブラリを SQL Server CLR アセンブリに埋め込み、強力なキー署名をしてデプロイする 2) ライブラリを呼び出す

私がはっきりしていないのは、そのような CLR アセンブリを展開すると、Web アプリケーションのコンテキストがどうなるかということです。適切な app.config を使用して CLR をデプロイするにはどうすればよいですか? 接続文字列を変更する必要がある場合、CLR を再デプロイする必要がありますか?

また、CLRはそれを呼び出しているデータベースに接続する必要があるため(テーブルの読み取りと書き込みの目的で)、確信が持てませんが、自己呼び出しやそのようなことを避けるために、特に注意する必要があると思います。

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

sql-server - SQL Server: アセンブリ用のすべての CLR 関数/プロシージャ/オブジェクトを一覧表示する方法

質問: SQL Server 2005 で、アセンブリ xy (MyFirstUdp など) を使用するすべての SQL CLR 関数/プロシージャを一覧表示するにはどうすればよいですか?

たとえば、クエリ パラメーター MyFirstUdp の HelloWorld を一覧表示する関数

走った後

すべてのアセンブリとすべての機能/手順を一覧表示できますが、アセンブリを機能/手順に関連付けることができないようです...

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

sql - SQL構文エラーCREATEPROCEDUREAS EXTERNAL

質問:IFが存在しない場合を外部名ステートメントとして作成プロシージャに追加すると、構文エラーが発生します...なぜですか?別々に実行すると、両方のステートメントが正常に機能します...

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

c# - SQL 2005 でアセンブリに WITH PERMISSION_SET = UNSAFE を使用するのは悪いことですか?

.NET 3.5 のものを使用するストアド プロシージャを作成するには、SQLCLR を使用する必要があります。使用しないPERMISSION_SET = UNSAFEとできません。ただ死んで、次のエラーが表示されます。

展開エラー SQL01268: .Net SqlClient
データ プロバイダー: メッセージ 6503、レベル 16、状態 12、行 1
アセンブリ 'system.core、バージョン = 3.5.0.0、カルチャ = ニュートラル、publickeytoken = b77a5c561934e089。' が SQL カタログに見つかりませんでした。
バッチの実行中にエラーが発生しました。

だから私はこの記事を見つけました:

http://weblogs.asp.net/paulomorgado/archive/2009/06/13/playing-with-sql-server-clr-integration-part-iv-deploying-to-sql-server-2005.aspx

そして、最後の行は次のように述べています。

「今では、DBA がこれを使用させてくれるとは限りませんが、構築するのは楽しかったです。」

彼がアクセス許可が「安全でない」に設定されていることに言及していたかどうかはわかりません。

では、これを行うと、巨大なぽっかり穴が発生する可能性がありますか?

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

c# - このCLRを2005で機能させる方法は?

.net3.5アセンブリを使用するSQL2005データベースのclrストアドプロシージャを作成しようとしています

そのため、最初にsql 2005を変更して、system.coreを安全ではないと認識し、あまり満足していないことを認識しなければなりませんでした(むしろ、SAFEと言ってもらいました)。

今、私はこのエラーを受け取ります

これが私のコードです

日時を渡す方法がわからなかったので、文字列を使用して変換しました。

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

sql-server - 本当に変更された列を知りたい

SQLCLR アセンブリにアフター トリガーを実装しています。その中で、どの列が実際に更新された (そしてそれらの値が変更された) かを知りたいです。

残念ながら、列の値が同じであっても、SqlContext.TriggerContext.IsUpdatedColumn は true を返します。おそらく、あまりスマートではないサーバー アプリケーションによって作成された SQL クエリが、ユーザーによって変更されていない列の一部であっても、すべての列を書き換えるからだと思います。

2 番目の問題は、一部の列に ntext 型があるため、INSERTED 疑似テーブルからそれらを SELECT することさえできません (MS SQL Server では、INSERTED から ntext 型を持つ SELECT フィールドを許可していません)。そのため、次のクエリで変更された行を SELECT します。

どの列が更新されただけでなく、変更されたのかを知るにはどうすればよいですか?

これで簡単なアイデアが浮かびました。BEFORE という別のトリガーを作成し、更新された行を内部から保存します。次に、AFTER トリガーが実行されているときに、列の値を比較します。このアイデアは私ができる最善のことですか?その場合、BEFORE トリガーと AFTER トリガーの間で変更された行を保持するのに最適な場所はどこですか? AFTER トリガーが実行される前に一時テーブルが削除されます。これは、コンテキスト接続を閉じるためです (おそらく、閉じないでください)。

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

c# - プロジェクトをSQLServerに変換し、設計上の考えはありますか?

現在、私はAccessで記述された醜いビジネスアプリケーションに座っています。このアプリケーションは、隔日でスプレッドシートを取得し、それをMDBにインポートします。私は現在、これを含む主要なプロジェクトをSQL Serverと.net、特にc#に変換しています。

この情報を格納するために、Master_Prodテーブルの親であるIDキーProdIDで結合されたMaster_ProdとMaster_Sheetを呼び出す2つのテーブル(ここではエイリアス名)があります。履歴を保存するためのテーブルがさらに2つあります。History_ProdとHistory_Sheetです。Master_Prodから拡張されたテーブルは他にもありますが、説明のためにこれを2つのテーブルに制限しています。

これはAccessで記述されているため、このファイルを処理するためのサブルーチンには、手動でコーディングされたトリガーが散らばっていて、これまでも常に苦労してきた履歴を処理します。これがデータベースサーバーに移行したことをうれしく思う理由の1つです。 RADツールではなく。履歴追跡を処理するためのトリガーを作成しています。

私の計画は、スプレッドシートをモデル化するオブジェクトを作成し、データを解析して、サーバーにデータを送信する前にクライアント側でLINQを使用してチェックを行うことです...基本的に、シート内のデータを一致するものと比較する必要がありますレコード(存在しない場合は、新しい)。いずれかのフィールドが変更されている場合は、更新を送信します。

もともと、この形式のスプレッドシートがすでにあるので、このプロシージャをIEnumerableリストを受け入れるある種のCLRアセンブリに入れたいと思っていましたが、最近、これがかなり重要なデータベースサーバーとペアになることを知りました。行き詰まりを非常に心配しています。

これは、CLRストアドプロシージャを使用する価値がありますか?データが入力される他のエントリポイントがあり、渡されたオブジェクトを指定してそれらを処理するプロシージャを構築できれば、潜在的なデータベースパフォーマンスを犠牲にして、アプリケーションから多くのビジネスルールを取り除くことができます。

基本的に、更新チェックをクライアントから取り除き、データベースに配置して、履歴トリガーを起動できるようにテーブルを更新する必要があるかどうかをデータシステムが管理できるようにします。

同じ方向に沿ってこれを実装するためのより良い方法についての考えはありますか?

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

c# - SQL CLR セーフ モードで実行されているユーザー名、ホスト名、および app_name にアクセスする方法

SQL clr (sql 2005、.net 3.5) で記述されたトリガーがあり、ユーザー名、ホスト名、および app_name を取得する必要があります。TSQLでは、単に使用します

私の.Netコードで試しました

しかし、セーフ モードで実行すると、これらのプロパティのいずれにもアクセスできません。これを達成する方法についてのアイデアはありますか?

ありがとう

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

sql-server - SQL Server 2008:接続を介してデータベースにアクセスしようとするCLR関数を実行するときの例外

内部からデータベースにアクセスするSQLServer2008でCLRテーブル値関数を使用したいと思います。許可の例外があります。作成時と同じユーザーで機能を実行しようとしています。したがって、問題の原因は明確ではありません。

関数は次のとおりです。

これが例外です

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

sql-server - SQLCLR ストアド プロシージャと SQLCLR トリガーを呼び出す T-SQL トリガー

SQLCLR トリガーをすぐに展開するのではなく、通常の T-SQL トリガーから SQLCLR ストアド プロシージャを呼び出すことに利点はありますか?

StatusID非常に大きなテーブルで特定の列の変更 ( ) について通知を受ける必要があります。

現在、多くの Windows サービスが使用されています。それぞれが独自の StatusID を監視します。つまり、特定のStatusID:を db に照会しますSELECT a,b,c FROM t WHERE StatusID = @status

ロジックをサービスから SQLCLR アセンブリに移動し、SQLCLR トリガーを使用してそれらを呼び出したいと考えています。それは良い考えですか?より良いアイデアはありますか?