Quiero agregar un archivo/grupo de archivos a una base de datos existente, pero necesito obtener la ruta de una variable porque será diferente cuando se finalice este script. Cuando verifico el script en SQL Management Studio 2008 R2, devuelve un error al FILENAME = @Path
.ALTER DATABASE/ADD FILE/VARIABLE FILENAME?
¿Cómo puedo usar esa variable?
script no se ejecutará la línea de comandos!
ALTER DATABASE [MyDB]
ADD FILEGROUP [MyDB_FileStream] CONTAINS FILESTREAM
GO
DECLARE @Path VARCHAR(MAX)
SET @Path = 'C:\whatEverIWantItToBe\ThisCouldChangeWithLogic\YouGetThePoint\'
ALTER DATABASE [MyDB]
ADD FILE
(NAME = 'MyDB_FileStream'
, FILENAME = @Path
)
TO FILEGROUP [MyDB_FileStream]
GRACIAS MUCHO !!! Siempre he odiado el SQL dinámico porque me pareció "escapado" al analizar el análisis sintáctico para detectar errores ... pero tal vez tiene sus aplicaciones –
Solo asegúrese de que @Path provenga de una fuente confiable, y no de Little Bobby Tables http: // xkcd .com/327/ – SqlACID
@SqlACID - ¿Qué podría pasar a la variable @Path que causaría la ejecución de una declaración que no deseaba? El problema vendrá cuando intente ejecutar el proceso almacenado (presumiblemente debido a que estamos usando una variable) desde el lado del cliente, no desde el propio proceso. Suponiendo que la llamada a la llamada de proceso almacenada está parametrizada, ¿qué podría pasarse a @Path que no se escaparía o error? – Thomas