0

ユーザー定義のデータ型を使用するテーブルを偽造しようとすると、次のエラーが発生しました。

COLLATE 句は、ユーザー定義のデータ型では使用できません。{,1}

tSQLt の既知の問題のようです。

https://groups.google.com/forum/?fromgroups#!topic/tsqlt/AS-Eqy6BjlA

テーブル定義を変更する以外に回避策はありますか? ありがとう。

4

1 に答える 1

1

Chris Francisco のおかげで、パッチがあります:

参考までに、私は同じ問題に遭遇し、tSQLt コードを少し掘り下げることで回避できました。Private_GetFullTypeName という名前の関数があります

関数によって返される最後の列は「Collat​​ion」という名前で、変数 @Collat​​ionName が null の場合、空の文字列 '' を返します。空の文字列の条件に「OR is_user_defined = 1」を追加すると、ユーザー定義のデータ型でテーブルを偽造することができました。

この変更による奇妙な副作用に遭遇したことはありませんが、tSQLt の内部動作 (または一般的な tSQLt) の専門家ではないため、他の場所で機能が損なわれる可能性があります。

言い換えると:

          CASE WHEN @CollationName IS NULL OR is_user_defined = 1 THEN ''
               ELSE ' COLLATE ' + @CollationName
于 2014-01-03T14:14:33.757 に答える