I can’t change the database file size with a C# query. For some reason I get an exception: “Incorrect syntax near ‘@databaseName’.
This is the code that executed the query:
command = connection.CreateCommand();
command.CommandText = @"
ALTER DATABASE @databaseName
MODIFY FILE
(NAME = @databaseFile, SIZE = @newSize)
";
dbParam = command.CreateParameter();
dbParam.ParameterName = "databaseFile";
dbParam.Value = dbFileName;
command.Parameters.Add(dbParam);
dbParam = command.CreateParameter();
dbParam.ParameterName = "newSize";
dbParam.Value = newSize;
command.Parameters.Add(dbParam);
dbParam = command.CreateParameter();
dbParam.ParameterName = "databaseName";
dbParam.Value = databaseName;
command.Parameters.Add(dbParam);
command.ExecuteNonQuery();
Now there might be several problems. Firstly the database is on a different machine so wouldn’t the db file path be different?
Some things cannot be parameterized. That includes things like table and column names in DML, but includes most of DDL. It is not expecting, and cannot process, parameters in this scenario.
To check this; just run it in SSMS, declaring the variables ahead of time and giving them values. You will find the error message is the same. If it doesn’t work in SSMS it is very unlikely to work from ADO.NET.