2016-06-02 9 views
1

私は8000文字以上のキャラクタを持つSQLスクリプトを持っており、それをいくつかのVARCHAR(MAX)に格納しました。そして、それを実行するとき:8000文字以上の動的キャラクタスクリプト

EXEC (@script1 + @script2 + @script3 + ...) 

リターン0の行が影響を受けます。

私は複製を使用して同じ問題を抱えています。私はSQL Server 2008を使用しています。

+3

たぶん、あなたのスクリプトは、任意の行には影響を与えません。 – mxix

+1

あなたの質問 – StackUser

+0

@StackNewUserにプリントキャスト((@ script1 + @ script2 + @ script3)の出力を投稿してください:[documentation on](https://msdn.microsoft.com/library/ms176047)、PRINTは長いメッセージ文字列を切り捨てます(入力タイプに関係なく)。実際のステートメントをチェックするには、どこかの 'VARCHAR(MAX)'カラムに格納する必要があります。 –

答えて

2

お試しsp_executesql

64ビットサーバーでは、文字列のサイズは最大サイズnvarchar(最大)の2 GBに制限されています。

ので@SQLString変数にすべてのデータを入れて、以下のように実行します。

DECLARE @SQLString nvarchar(max); 

SET @SQLString = @script1 + @script2 + @script3 + ... 

EXECUTE sp_executesql @SQLString 
+0

私は32ビットサーバーを使用しています – Slocky

+0

そして?試しましたか? :)すべての '@scriptN'をnvarchar(max)にして、それらを '@ SQLStrin'gに連結し、以下のように実行してみてください。良い質問/回答についてnvarchat/varchar http://stackoverflow.com/questions/12639948/sql-nvarchar-and-varchar-limits – gofr1

+0

明示的にこれがnvarcharであることをシステムに伝えるには、Nを一重引用符で囲んだ式の前に置きます。 '@string = N'SELECT * FROM Table'のように – gofr1