私がこのSQLステートメントを持っているとしましょう:
ALTER TABLE dbo.[tbl] ALTER COLUMN col1 varchar(300)
ALTER TABLE dbo.[tbl] ALTER COLUMN col2 varchar(20)
ALTER TABLE dbo.[tbl] ALTER COLUMN col3 varchar(20)
ALTER TABLE dbo.[tbl] ALTER COLUMN col4 varchar(100)
これらのステートメントをファイル内に配置して、次々に実行します。 dbo。[tbl]を見ているVIEWもあります。上記の4つのステートメントを実行した後、VIEWは古い列の長さを保持していることに気付きました。そこで、ファイルの最後に次のコードを追加しました。
ALTER VIEW [dbo].[tbl]
AS
SELECT col1, col2, col3, col4
FROM dbo.[tbl]
私が得るエラーは
'ALTER VIEW' must be the first statement in a query batch
だから私の質問は、私のVIEWが新しい列の長さを保持することを保証するための最良の方法は何ですか?
この特定の目的には、 sp_refreshview
。
exec sp_refreshview N'dbo.tbl'
GO
ステートメントを使用します。
ALTER TABLE dbo.[tbl] ALTER COLUMN col1 varchar(300)
ALTER TABLE dbo.[tbl] ALTER COLUMN col2 varchar(20)
ALTER TABLE dbo.[tbl] ALTER COLUMN col3 varchar(20)
ALTER TABLE dbo.[tbl] ALTER COLUMN col4 varchar(100)
GO
ALTER VIEW [dbo].[tbl]
AS
SELECT col1, col2, col3, col4
FROM dbo.[tbl]
GO