私はSQL Serverの特定のsys
カタログビューを使用して、私は何をしたいことはただ単にそれは、これらのデータ型を変更するのにかかる T-SQLステートメントを作成している - このような何か:
SELECT
t.name, s.name, c.name,
'ALTER TABLE ' + s.name + '.' + t.Name + ' ALTER COLUMN ' + c.name + ' NVARCHAR(' +
CASE
WHEN c.max_length = -1 THEN 'MAX'
WHEN c.max_length > 4000 THEN 'MAX'
ELSE CAST(c.max_length AS VARCHAR(10)) + ');'
FROM
sys.tables t
INNER JOIN
sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN
sys.columns c ON c.object_id = t.object_id
INNER JOIN
sys.types ty ON c.system_type_id = ty.system_type_id
WHERE
ty.name = 'VARCHAR'
AND c.is_computed = 0
をあなたは、新しいクエリウィンドウに出力グリッドからコピーして実行することができ
ALTER TABLE Sales.SalesOrderHeader ALTER COLUMN CreditCardApprovalCode NVARCHAR(15);
ALTER TABLE Person.Password ALTER COLUMN PasswordHash NVARCHAR(128);
ALTER TABLE Person.Password ALTER COLUMN PasswordSalt NVARCHAR(10);
:AdventureWorks
データベース、のようなこの意志の出力何かに
実行します。
注:はAdventureWorks
に対するあなたのオリジナルのスクリプトを実行している場合には、いずれかの列がに計算され、したがって、単にALTER TABLE ... ALTER COLUMN ....
ステートメントを使用して変更することができないということを見せてくれた - 私は計算列を除くてる理由です私のスクリプトでここに示されています。
あなたが本当に主張する場合、あなたはまた、カーソルの「心」に私のこのSQL文をオンにしてから、テーブルを変更するためにT-SQLステートメントを反復、およびEXEC(...)
またはEXEC sp_executesql
を使用して、それらを実行することができます
していない場合は、新しいテーブルを作成し、データを移行して元のデータを削除する必要があります。 – Hogan