問題タブ [sp-executesql]

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 投票する
10 に答える
9779 参照

sql-server - exec sp_executesqlを通常のクエリに変換する簡単な方法は?

プロファイラーとSSMSを使用してクエリのデバッグを処理する場合、プロファイラーからクエリをコピーしてSSMSでテストすることは非常に一般的です。パラメータ化されたSQLを使用しているため、クエリはすべてexecsp_executesqlクエリとして送信されます。

これを取得して、編集を容易にするために通常のクエリに変換します(インテリセンス、エラーチェック、行番号など)。

もちろん、クエリが大きく複雑になるほど、これを行うのは難しくなります。そして、あなたが何度も行ったり来たりしているとき、それはお尻の痛みであり、多くの時間を吸収する可能性があります。

muh executesqlをより便利なものに変換する簡単な(たとえば、マクロコマンド)方法はありますか?

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

sql - リモートサーバーにアクセスするためのSP_ExecuteSqlを使用した完全修飾テーブル名

リンクサーバー(SQL 2000/2005)でテーブルを更新しようとしていますが、サーバー名が事前にわかりません。私はこれを試しています:

これはこれを返します:

何か案は?とにかく、パラメーターがバインドされた後に実行されているSQLステートメントを表示しますか?

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

sql - 'IN' ステートメントを使用した sp_executesql

SQL 2005 での SQL インジェクションを防ぐために sp_executesql を使用しようとしています。次のような単純なクエリがあります。

ただし、sp_executesql を使用して以下を実行すると、何も返されません。

これは私がテストしたものです:

助けてください....私は何を間違えましたか?

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

sql-server - sp_executesqlでLIKEを使用する

SET @whereCond = @whereCond +'AND name LIKE''%''+ @name +''%'''

ここに何か問題がありますか?where条件を生成した後、で実行しますがsp_executesql、何も得られませんでした。spなしで同じものを選択すると大丈夫です。

sp_executesqlでLIKEを使用する方法は?いくつか例を挙げていただけますか?

ありがとうございました。

アップデート

最初のクエリは値を返し、2番目のクエリは何も返しません。

違いは何ですか?

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

sql-server - sp_executesqlから返された複数または値のリストを保存するにはどうすればよいですか?

UPDATE : This is what I did-

But this is not returning records although if I see the query is right and returns records..


こんにちはすべて、私はsp_executesqlを使用して動的SQLステートメントを実行しています、そしてこれは私が現在行っていることです-

しかし、動的SQLクエリを個別に実行した場合、レコードのリストを取得しているときに上記の値を取得するのは1つだけです。動的SQLの実行によって返された値のリストを保存するにはどうすればよいですか?そしてレコードを返します..そしてレコードを返します..しかしこれは

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

sql - 「sp_Executesql の実行」を使用する場合のアクセス許可

すべてのアクセスがストアド プロシージャによって制御されるデータベースがあります。DBA は、基礎となるテーブルへの直接の読み取り/書き込みアクセス権をユーザーに付与することを避けたいと考えていますが、これは理解できます。したがって、データのすべての更新と選択は、ストアド プロシージャを介して行われます。基本的に、彼はデータベース内のすべてのストアド プロシージャに対する EXECUTE 権限を持つ 1 つのロールを作成し、ユーザーにそのロールを与えました。

問題は、ストアド プロシージャの 1 つが動的に SQl クエリを作成し、それを "Execute sp_Executesql" を介して実行することです。多くのユーザー入力パラメーターに応じて大幅に変化するため、クエリは動的に構築されます。問題のストアド プロシージャは SELECT sql ステートメントにすぎませんが、ストアド プロシージャに EXECUTE 権限を与えるだけでは不十分であることがわかりました。"Execute sp_Executesql" を使用するストアド プロシージャ内で参照される基になるテーブルには、"datareader" アクセス権が付与されている必要があります。付与されていない場合、ストアド プロシージャは失敗します。

これを修正する方法について何か考えはありますか?テーブルへのアクセスをストアド プロシージャのみに制限したかったのですが、"Execute sp_Executesq"l を使用するストアド プロシージャを回避する方法を見つける必要があります。ありがとうございました。

0 投票する
5 に答える
45435 参照

sql - TABLE 変数を sp_executesql に渡す

TABLE 変数を sp_executesql プロシージャに渡そうとしています。

エラーが発生します:

「TABLE」以降のカラム指定を省略してみました。また、テーブルを動的 SQL 内の変数として宣言しようとしました。しかし、運が悪い...

このプロシージャでは、TABLE 変数をパラメータとして渡すことは許可されていないようです。ところで: MSSQL2008 R2 を実行しています。

別のプロシージャから作業データをロードするため、#workingData のようなローカル一時テーブルの使用には興味がありません。

私は一時変数に直接行うことはできません(そうですか?)...

どんな助けでも大歓迎です!

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

sql-server-2005 - 「動的」OpenQueryを実行するためのSQLSP_EXECSQL@VAR

OpenQueryがあります(SQL2005でレガシーデータベースに対してクエリを実行するために使用されます)。過去6か月のデータを返すように、実行する文字列を作成しています。

私が抱えている問題は「||」にあります 連結する。

これはレガシーシステムで機能します。

これは、リンクされたSQLServerを介してSQL2005で機能します。

これは動作しません:

これもしません:

単純なものが欠けていることはわかっています...しかし|| 文字列を連結することは、レガシーシステム自体では機能しますが、混乱を招きます。

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

c# - ユーザーが作成した動的 SQL クエリをサニタイズします。SELECT のみ許可 (INSERT、UPDATE、DELETE、DROP、EXEC などは禁止)

Microsoft SQL Server 2005 データベースを使用して ASP2.0 Web サイトを開発しています。Web サイトがクエリの結果セットを含むページを表示するように、ユーザーが選択クエリを作成できるようにする機能を実装する必要があります (それほど複雑ではありません)。私の質問は、クエリをサニタイズして、挿入/更新/削除/ドロップまたはその他の悪質な注入がないことを確認するにはどうすればよいかということです。

また、結果セットに ID 列を追加できるように、"with" 句でクエリをカプセル化する必要があります。(ページに結果を正しく表示するために必要です)

クエリをフォーマットするための私の CSharp コードは次のようになります (少し単純化されています)。

クエリを実行するストアド プロシージャを作成したいと考えています。私は次のようなことを考えていました:

RestrictedUser は次のようになります。

私の質問は次のとおりです: ストアド プロシージャ内の RestrictedUser の役割をチェックして、改ざんされていないことを確認する方法はありますか? そしてもしあればraiserror。このすべてが正しい方法だと思いますか?なにか提案を?

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

sql-server - sp_executeSQLプロシージャを介して実行すると、まったく同じSQLクエリの結果が異なる実行プランになるのはなぜですか?

タイトルにあるように、sp_executeSQLがSqlManagementStudioからクエリを実行するのとはまったく異なる実行プランを生成する理由がわかりません。

問題のクエリは、SQL Management Studioから実行する場合は3秒かかりますが、管理スタジオでsp_executeSQLを介して実行する場合は5分かかります。

統計を更新し、インデックスを確認しましたが、sp_executeSQLからの実行プランは、管理スタジオから直接SQLを実行するよりもはるかに悪いという事実が頭に残っていました。

だからここに私の質問があります:なぜこれらの2つの異なる方法でクエリを実行することの間で実行プランがそれほど異なるのでしょうか?

ありがとう