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.
Vous devez vous connecter pour publier un commentaire.
Pour voir si vous avez déjà un groupe de fichiers FILESTREAM regarder dans
sys.data_spaces
:Pour voir si le groupe de fichiers a n'importe quel fichier FILESTREAM déjà l'air est
sys.database_files
:Quoi que vous fassiez, ne pas compter sur l'objet noms.
Ou à partir de SQL Server 2012 et au-dessus de cette requête affichera la liste de toutes les bases de données qui ont accès non transactionnel activé sur eux, j'.e, FileStream.
Reportez-vous à http://msdn.microsoft.com/en-us/library/gg492071.aspx pour plus d'info