0
ローカルテーブルの条件付きカラムを宣言するための適切な解決法が見つからないようです。DECLARE @Localテーブルの条件付きカラム
2番目の表には、追加の列SnapshotURL
があります。
DECLARE @product_major_version int;
SELECT @product_major_version = CAST(SERVERPROPERTY('ProductMajorVersion') AS int);
IF (@product_major_version <= 12)
DECLARE @FileList TABLE
(
LogicalName NVARCHAR(128) NOT NULL
, PhysicalName NVARCHAR(260) NOT NULL
, Type CHAR(1) NOT NULL
, FileGroupName NVARCHAR(120) NULL
, Size NUMERIC(20, 0) NOT NULL
, MaxSize NUMERIC(20, 0) NOT NULL
, FileId BIGINT NULL
, CreateLSN NUMERIC(25, 0) NULL
, DropLSN NUMERIC(25, 0) NULL
, UniqueID UNIQUEIDENTIFIER NULL
, ReadOnlyLSN NUMERIC(25, 0) NULL
, ReadWriteLSN NUMERIC(25, 0) NULL
, BackupSizeInBytes BIGINT NULL
, SourceBlockSize INT NULL
, FileGroupId INT NULL
, LogGroupGUID UNIQUEIDENTIFIER NULL
, DifferentialBaseLSN NUMERIC(25, 0) NULL
, DifferentialBaseGUID UNIQUEIDENTIFIER NULL
, IsReadOnly BIT NULL
, IsPresent BIT NULL
, TDEThumbprint VARBINARY(32) NULL
);
ELSE
DECLARE @FileList TABLE
(
LogicalName NVARCHAR(128) NOT NULL
, PhysicalName NVARCHAR(260) NOT NULL
, Type CHAR(1) NOT NULL
, FileGroupName NVARCHAR(120) NULL
, Size NUMERIC(20, 0) NOT NULL
, MaxSize NUMERIC(20, 0) NOT NULL
, FileId BIGINT NULL
, CreateLSN NUMERIC(25, 0) NULL
, DropLSN NUMERIC(25, 0) NULL
, UniqueID UNIQUEIDENTIFIER NULL
, ReadOnlyLSN NUMERIC(25, 0) NULL
, ReadWriteLSN NUMERIC(25, 0) NULL
, BackupSizeInBytes BIGINT NULL
, SourceBlockSize INT NULL
, FileGroupId INT NULL
, LogGroupGUID UNIQUEIDENTIFIER NULL
, DifferentialBaseLSN NUMERIC(25, 0) NULL
, DifferentialBaseGUID UNIQUEIDENTIFIER NULL
, IsReadOnly BIT NULL
, IsPresent BIT NULL
, TDEThumbprint VARBINARY(32) NULL
, SnapshotURL NVARCHAR(360)
);
このアプローチの問題は、@FileList
が2回宣言されていることです。
ALTER TABLE
はサポートされていないため使用できません。
どうすれば解決できますか?
'if'条件を削除し、常に' SnapshotURL'列を追加してください。それはあなたが探しているものよりはるかに良いでしょう –
これは正しい道に私を導きます。明らかに、私がする必要があったのは、 'SnapshotURL'をヌル可能にすることでした。 –