SQL Azure DB でテスト DB 環境を構築する際に、元のプロトタイプ DB から生成された CREATE TABLE スクリプトを使用して新しい DB を動的に生成します。
これらのテーブルの一部はプロトタイプ DB からのデータを必要とするため、これらのそれぞれに対して外部テーブルを作成し (プロトタイプ DB のテーブルを参照)、外部テーブルからデータを取得して正確なコピーに挿入する INSERT INTO クエリを実行します。テストDBで。
ここで重要な点は、プロトタイプ DB に組み込まれているスクリプトを使用して、新しいテーブルと外部テーブルの両方が動的に生成されることです。したがって、新しいテーブルと外部テーブルは、プロトタイプ DB の正確なコピーである必要があります。
ただし、これらのテーブルの 1 つで、例外が発生しました。
ラージ オブジェクト列のサポートは、nvarchar(max) データ型のみに制限されています。
問題のテーブルには NVARCHAR (MAX) を超えるもの (TEXT など) はありませんでしたが、10 個の NVARCHAR (MAX) 列がありました。したがって、これらの列を NVARCHAR (4000) に変更し、プロセスを再度実行しました。
次の例外が発生しました。
外部テーブルの列 'my_column_name' のデータ型は、外部ソースに存在する基になるスタンドアロン テーブルまたはシャード テーブルの列のデータ型とは異なります。
プロトタイプDB、外部テーブル、および新しいテーブルの列タイプを更新して確認したところ、これらすべてがデータタイプがNVARCHAR(4000)であることを示しています。
では、なぜデータ型が異なると教えてくれるのでしょうか?
以前は列が NVARCHAR (MAX) だったのは偶然ですか?