SQL 2008 FILESTREAM - Comment faire pour Vérifier si la DB A Filestream Activé Avant de le Modifier

Dans ma situation, il y a une possibilité de l'exécution du script de nombreuses fois (ne me demandez pas pourquoi).

Donc je veux faire mon script de preuve de balle avant qu'il tourne en prod.

J'ai un assez gros changement, où j'ai ajouter FILESTREAM capacités. J'ai déjà eu à travailler dans mon environnement de dev avec les scripts nécessaires en permettant FILESTREAM, en modifiant la base de données pour ajouter un groupe de fichiers filestream, puis en ajoutant un emplacement de fichier pour le fichier de groupe, et enfin la création d'une table avec filestream sur la colonne de données (de type varbinary(MAX)).

C'est tout bon. Mais l'exécution de MODIFIER le script de BASE de données à plusieurs reprises la possibilité de produire des erreurs si un fichier de groupe est déjà là. J'ai donc fait cela...

IF NOT EXISTS (SELECT * FROM sys.filegroups WHERE [name]='NewFileGroup')
    BEGIN
        ALTER DATABASE [MyDb]
        ADD FILEGROUP [NewFileGroup] CONTAINS FILESTREAM
    END 
GO

Mais la prochaine partie du code est la partie que je ne veux pas exécuter de nombreuses fois...

DECLARE @Path NVARCHAR(MAX)
SET @Path = (SELECT REPLACE(filename, 'MyDb.mdf', 'NewFileGroup') FROM sysfiles WHERE Name = 'PrimaryFileName')

DECLARE @SQL NVARCHAR(max)

SET @SQL = 
'ALTER DATABASE [MyDb]
ADD FILE
  (NAME = ''NewFileGroup''
   , FILENAME = ' + QuoteName( @Path, '''' ) 
            + ')
TO FILEGROUP [NewFileGroup]'

EXEC(@SQL)

Que le code fonctionne très bien, mais comment puis-je vérifier si le nom de fichier /chemin de fichier existe déjà dans le fichier de groupe? Veuillez someobody de l'aide. Je veux juste faire un autre si l'instruction autour d'elle.

InformationsquelleAutor Issa Fram | 2011-04-18