Инструменты данных SQL Server (SSDT) ​​— определить тип данных во время развертывания?

кто-нибудь знает способ определения типа данных столбца во время развертывания с развертыванием SSDT/dacpac, в зависимости от того, какие функции доступны на целевом экземпляре SQL Server? Конкретный пример:

CREATE TABLE [HasBlob] (
    [Id] INT PRIMARY KEY,
    [Guid] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
    [Data] VARBINARY(MAX) FILESTREAM NULL
)

В этом случае я хотел бы иметь возможность автоматически возвращаться к обычному большому двоичному объекту VARBINARY(MAX) вместо FILESTREAM, если FILESTREAM не включен для экземпляра SQL Server.


person chris    schedule 06.03.2013    source источник


Ответы (1)


Один из способов — запросить файловые группы текущей базы данных через sys.data_spaces, например:

IF EXISTS(SELECT * FROM sys.data_spaces WHERE type = 'FD')
BEGIN
-- use create statement with FILESTREAM
END; 
person udog    schedule 20.03.2013
comment
Спасибо за подсказку - к сожалению, в данный момент у меня нет времени попробовать это, так как я все равно решил отказаться от FILESTREAM для своего проекта, потому что это вызывает у меня головную боль при развертывании. Поэтому я не могу сказать, работает ли этот подход с добавочным развертыванием DACPAC. Так что я просто даю вам согласие, так как у меня нет времени пытаться доказать, что вы ошибаетесь ;-). - person chris; 20.03.2013