2013-03-06 9 views
1

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

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

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

ответ

1

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

IF EXISTS(SELECT * FROM sys.data_spaces WHERE type = 'FD') 
BEGIN 
-- use create statement with FILESTREAM 
END; 
+0

Спасибо за подсказку - к сожалению, у меня нет времени, чтобы попробовать его на данный момент, так как я решил канаву FILESTREAM для моего проекта так или иначе, потому что это дает мне головные боли относительно развертывания. Поэтому я не могу сказать, работает ли этот подход с инкрементным развертыванием DACPAC. Поэтому я просто даю вам согласие, так как у меня нет времени, чтобы попытаться доказать, что вы ошибаетесь ;-). – chris