En mi situación, hay una posibilidad de una secuencia de comandos se ejecuta muchas veces (no me pregunten por qué).
Así que me quiero hacer de mi script de prueba de la bala antes de que se ejecuta en prod.
Tengo un gran cambio donde puedo agregar FILESTREAM capacidades. Ya he conseguido que funcione en mi entorno dev con las secuencias de comandos necesarios mediante la habilitación de FILESTREAM, la alteración de la base de datos para agregar un grupo de archivos filestream, y, a continuación, agregar una ubicación de archivo para el archivo de grupo, y por último la creación de una tabla con filestream en la columna de datos (varbinary(MAX)).
Que está todo bien. Pero la ejecución de la instrucción ALTER DATABASE script muchas veces se pueden producir errores si un grupo de archivos que ya está allí. Así que hice esto…
IF NOT EXISTS (SELECT * FROM sys.filegroups WHERE [name]='NewFileGroup')
BEGIN
ALTER DATABASE [MyDb]
ADD FILEGROUP [NewFileGroup] CONTAINS FILESTREAM
END
GO
Pero la siguiente parte del código es la parte que no quiero correr muchas veces…
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 el código funciona bien, pero ¿cómo puedo comprobar si el nombre de archivo /ruta de archivo ya existe en el archivo de grupo? Por favor someobody ayuda. Sólo quiero hacer otra declaración de si a su alrededor.
Para ver si usted tiene ya un grupo de archivos FILESTREAM para buscar en
sys.data_spaces
:Para ver si el grupo de archivos tiene cualquier archivo de FILESTREAM ya look es
sys.database_files
:Lo que haces, no no se basan en el objeto nombres.
O de SQL Server 2012 y por encima de esta consulta se mostrará una lista de todas las bases de datos que tienen los no-transaccional habilitado el acceso a ellos, yo.e, FileStream.
Se refieren a http://msdn.microsoft.com/en-us/library/gg492071.aspx para obtener más información