4

維持するデータベースが多数あり、環境ごとにスクリプトを作成したくないため、リンク サーバーと組み合わせてシノニムを作成し、更新ステートメントのテーブルを抽象化しました。

私の問題は、24 ~ 32 文字を超える varchar(max) フィールドを更新できないように見えることです (それはさまざまです!)。

私はウェブを調査してきましたが、これに直接関係するものは何も見つかりません。(更新: ネットワーク経由のサーバーではなく、ワークステーションにリンクすると、ローカルのリンクされた SQL サーバーが正常に更新されます。これは、ホストの一部の環境の問題だと思いますか?おそらく、定義された制限がありますか?)

以下は、私がどのように設定したかの例です。

--I create some dynamic sql to create the sysnonyms for me.
declare @Synonym varchar(30) = 'sym_Employee'
declare @DBTable = 'Employee'
Select @Stmt = 'create synonym ' + @Synonym + ' for TargetSQLServer.' + @DBName + '.dbo.' + @DBTable + ';'
exec @Stmt

--this statment stops at 24 chars, but the column def is varchar(max)
update sym_employee
set Notes = '012345678901234567890123456789'
where employee_ID = 1
4

2 に答える 2

0

lazy schema validationtrue/に設定して遊んだことはありますfalseか?

詳細については、次のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/ms178532.aspx

于 2012-12-03T20:42:05.783 に答える
0

varchar で長さを定義しない場合、問題を引き起こしている可能性のあるデフォルトの長さ (20 文字だと思います) を取るため、varchar データ型で長さを定義したことを確認してください。

于 2012-12-10T17:01:05.840 に答える