2017-05-25 28 views
1

私は、変数はそうストアドプロシージャ内のクエリのようなものを読み込むこと@Mdop整数でストアドプロシージャを呼び出すしたいと思いますこれを行う方法?私が見つけた唯一の些細な方法は、巨大なIF THEN ELSEを持っていて、それぞれMaxdop値のために、私はストアドプロシージャに渡す予定で、別のmaxdop値を持つ同じクエリを繰り返します。私はこのアプローチがオリジナルではあるが、かなり恐ろしいと感じている。SQL Server内の変数でMAXDOPヒントをパラメータ化する方法

他のアイデア?

+1

?マシン上のコアの数は、あるクエリから別のクエリに変化することはありません。コード内で修正する必要はありませんが、絶対に必要でない限り、変更する必要はありません。通常、開発者ではなく、それを知っているのはDBAです。 –

答えて

0

クエリを動的に作成して実行します。

+0

あなたの素早い答えはありがとうございます。はい、間違いなく動作しますが、ストアドプロシージャの利点を失うことはありませんか?私は両方を持つことはできないと思いますが、私は奇妙な構文や、同じ結果を得ることができる何かを望んでいました。 –

1

あなたはこのように、動的SQLを使用することができます:あなたはこのようなMAXDOPを指定したいん*なぜ*

DECLARE @MDOP1 INT = 1; 
DECLARE @MDOP2 INT = 4; 

DECLARE @SQLSTM1 NVARCHAR(4000) = 'SELECT someField FROM SomeTable OPTION (MAXDOP ' + CAST(@Mdop1 AS NVARCHAR) + ')'; 
DECLARE @SQLSTM2 NVARCHAR(4000) = 'SELECT someField FROM SomeTable OPTION (MAXDOP ' + CAST(@Mdop2 AS NVARCHAR) + ')'; 

EXEC sp_executesql @SQLSTM1; 
EXEC sp_executesql @SQLSTM2; 
関連する問題