問題タブ [table-valued-parameters]
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.
excel - VBAからSQLServer2008 R2に移行するときにデータベースのパフォーマンスを向上させるにはどうすればよいですか?
ExcelからSQLServer2008R2へのCRUD操作を実行する金融アプリケーションに取り組んでいます。アプリケーションはVBAとADOを使用します。何千もの行をループしてデータベースに更新を送信する操作のパフォーマンスを最適化しようとしています。現在、ストアドプロシージャは、行ごとに1回呼び出されます。
ユーザーがアプリケーションへの接続が遅い場合、パフォーマンスも遅くなり、不満を言うようになります。パフォーマンスを最適化するために、私は次のことを試しました。
- すべての操作をXMLファイルにバッチ処理し、一度に送信します。残念ながら、パフォーマンスは悪化しました。
- 次に、すべての更新をテーブル値パラメーターにバッチ処理することを考えました。ただし、VBAとADOはテーブル値のパラメーターを使用できません。
試すことが不足しています。VBAからSQLServer2008 R2に移行するときにデータベースのパフォーマンスを向上させるにはどうすればよいですか?
c# - sql_variant 列のテーブル値パラメーターに 'object' 型のパラメーターを渡す
次のように定義された SQL Server 2012 のテーブル値パラメーターがあります。
おおよそ次のようなコードを使用して C# で呼び出します。
ExecuteNonQuery
次に、呼び出し時に SQL Server から次のエラーが表示されます。
列「値」のタイプはサポートされていません。タイプは「オブジェクト」
マイクロソフトの既知のバグとして特定された 3 年前に、同じ問題に遭遇した人を見つけました。ただし、バグへのリンクは壊れています。バグのステータスまたは潜在的な回避策に関する最新情報があるかどうかを知っている人はいますか? 現状では、このバグは実際にsql_variant
フィールドの価値を殺しています。
sql-server-2008 - テーブル値パラメータを使用してテキスト列をクエリする方法は?
1つまたは2つのデータベース(nvarchar)列(REMARKSおよびSUPPLEMENTAL_REMARKS)に対してクエリを実行するキーワードの行が0から多数の1つの列を持つテーブル値パラメーター(@KEYWORD)があります。超シンプルなコンセプト。
私が問題を抱えているのは、SQLを記述して、その1つ(または2つ)のデータベース列に対して提供された個々のキーワードのそれぞれをチェックする方法です。
これがWHERE句の未完成部分です...
sql-server-2008 - テーブル値パラメーターを含む複数のパラメーターを使用して MS SQL Server ストアド プロシージャを呼び出す
こことオンラインでいくつかの調査を行った後、これが可能かどうかについて途方に暮れています。私がやりたいことは、テーブル値パラメーターの 1 つを含む複数のパラメーターを持つストアド プロシージャを呼び出すことです。
これは私のストアド プロシージャのスニペットです。
次の行を持つ別のプロシージャ (proc2) があります。
varX と var3 は同じ型 MyType であることに注意してください。proc2 を実行すると、dbo.procName に指定した引数が多すぎるというエラーが表示されます。
テーブル値パラメーターを含む複数のパラメーターをストアド プロシージャに指定することはできないと考えています。私は現在、procName の定義を 1 つのパラメーター (オンラインのすべての例にあるように) だけを持つように変更し、テーブル値パラメーターをパラメーター値の配列として機能させて、私が持っていた情報を含むようにすることを考えています。前の select ステートメント (proc2 内)。ただし、この呼び出しを実行できる場合は、その方法を説明してください。
ありがとう
sql-server - テーブル値パラメーターのSQLServerクエリでの短絡EXISTSステートメント
ストアドプロシージャを使用します。
WHERE句では、ほとんどの入力がデフォルトでNullになっていることをクエリオプティマイザーが認識しているため、短絡(OR)を使用して実行を高速化します。これにより、クエリを柔軟かつ高速にすることができます。
WHERE句にテーブル値パラメーターを追加しました。レポートの実行時間は150ミリ秒から450ミリ秒に増加し、読み取りは70,000から200,000になりました。
NOT EXISTSを短絡したり、このクエリを高速化するにはどうすればよいですか?クエリを実行する前に、BIT値を追加し、行がテーブル値パラメーターに含まれているかどうかを確認してみました。私が見つけた唯一の方法は、2つのクエリを実行し、一方を他方に対して実行することです。大量のクエリを変更したり、複数のテーブル値パラメーターをミックスに追加したりする必要がある場合は、あまり良くありません。
前もって感謝します。
編集:
テーブル値パラメーターの比較:
および整数パラメータ:
TVPを0行、整数パラメーターをnullでコンパイルした後、同様の実行速度を示しました。クエリオプティマイザーが正しいマナーで短絡していて、以前の比較が正しくなかったと思います。実行計画では、上記のコストを55%と45%に分割しますが、これは許容範囲です。TVPの行数が増えても分割は変わりませんが、ディスクから読み取る必要のあるページが増えるため、レポートの生成にかかる時間が長くなります。面白い。
mysql - mysql ストアド プロシージャのテーブル値パラメーターの代替ソリューション
MYSQL でテーブル値パラメーターを使用する代わりの解決策を見つけた人はいますか? 私の状況では、ビジュアル ベーシック フロント エンド アプリケーションから複数の行を渡したいのですが、トランザクションでラップできるように、1 つの要求でレコードのテーブルを送信できるようにしたいと考えています。私は多くの研究を行ってきましたが、まだ答えがありません。多分誰かが私を助けることができます。
sql-server-2008 - UDFのパラメーターとしてデータを含むSQLServer2008テーブル
私の質問: SQL Server 2008で、ストアドプロシージャで一時テーブルを定義し、それを変数としてユーザー定義関数に渡すことは可能ですか?
私は次のことをする必要があります:
手順があります
dbo.GetMsgCntData
。この手順はいくつかの計算を行っており、この手順の結果として、この手順で定義された一時テーブルにデータがあります(
/li>GetMsgCntData
):したがって、
/li>@tmpTable
いくつかのデータが含まれています。ユーザー定義関数を実行する必要がありますが、データにアクセスするための関数GetCnt(@status, @MsgTempTable)
が必要です。基本的に私はこのようなものが必要です:getCnt
@tmpTable
ユーザー定義型として定義しようとし
/li>@table
ました。GetCnt
しかし、これは私にエラーメッセージを与えます:
私の考えは単に間違っていると思います。
sql - CASE 使用時の SQL パフォーマンスの問題
毎秒非常に多くのデータを返し、グリッドに表示される SP があります。現在、帯域幅を削減しようとしており、グリッドに現在表示されている列のみを返すことを考えています。
これはもちろん単純化され最小化されていますが、基本的に私が持っていたのは次の SP でした。
私が現在試みているのは、現在グリッドに表示されているフィールド (@fields) の名前の TVP を渡し、必要なフィールドのみを返すことです。
私が直面している問題は、(予想どおり)SPが〜200ミリ秒から〜1秒かかることです
これを書き直して、私たちを殺さないようにする方法はありますか?
foreach のための私の王国!!!
tsql - TVP からの複数の値を持つ T-SQL UPSERT テーブル
SQL Server 2012 と T-SQL をクエリ言語として使用しています。
パラメータ (@userGroupID) として渡された 1 つの ID 値と多数の関数 ID を使用して、[cross_function_user] の複数の列を更新/挿入するのに助けが必要です。これらは C# のリストであり、テーブル値パラメーターとして sproc に渡されます - Item という名前の int の列が 1 つだけあります。
まず、もちろん「サブクエリが複数の結果を返しました」というエラーが発生しますが、これを書き直すスキルがなく、アップサートが正しい方法で記述されているかどうかはよくわかりません。どんな助けでも大歓迎です。
c# - Webmatrix.Data.Database.Queryを介してテーブル値パラメーターをストアドプロシージャに渡す方法
以下のc#コードは自明です。DataTableをテーブル値パラメーターとしてWebMatrix.Data.Database.Queryを介してSQLServer2008のストアドプロシージャに渡したいのですが、以下のc#コード(つまりappDatabase.Query)の最後の行で例外がスローされます
「テーブルタイプパラメータ「0」には有効なタイプ名が必要です。」
データベースで、TSQLのこのビットを使用してユーザー定義のテーブルタイプを作成しました
正常に実行され、SQL ServerManagementStudioの[タイプ/ユーザー定義テーブルタイプ]の下に表示されます
これはストアドプロシージャです(@roleIdsListパラメーターに正しいタイプを割り当て、テーブル値パラメーターに必要なREADONLYとしてマークしたことを示すために、関連する部分のみを追加します)
かなりの検索を行いましたが、WebMatrix.Data.Databaseを処理するソリューションを見つけることができませんでした...私が見つけたすべてのソリューションには、SqlCommandとSqlParameterが含まれていました。アプリ全体でWebMatrix.Data.Databaseを使用しており、一貫性を保つ必要があります。
注意:私はWebMatrixIDEを使用していません。私は、MVC4アプリでのDBインタラクションのために、コントローラーでこの名前空間を使用しています。
これに関する専門知識を持っている誰かからのいくつかのガイダンスを熱心に待っています。よろしくお願いします。