I'm running into this odd issue with this snippet of code:
DECLARE @dbname nvarchar(128)
SET @dbname = $(databaseName)
IF (EXISTS (SELECT name
FROM master.dbo.sysdatabases
WHERE ('[' + name + ']' = @dbname
OR name = @dbname)))
-- code mine :)
PRINT 'true'
I'm passing it through the command line as such:
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" -U user -P password -i C:\checkDB.sql -v databaseName=newdatabasetest1
I get this error when I try and run the command here:
Msg 207, Level 16, State 1, Server SERVERNAME, Line 2
Invalid column name 'newdatabasetest1'.
If I change the query to replace $(databaseName) with 'newdatabasetest1' it works and returns 'true' as expected...
I'm not sure what I'm doing wrong here or if maybe it's a SQL thing but it seems to only have issue with the command line. I use the same passing variable technique for creating and droping a database which works fine.
Any guidance would be helpful!
You need to add single quotes to the value assigned to @dbname, like this:
DECLARE @dbname nvarchar(128)
SET @dbname = '$(databaseName)'
IF (EXISTS (SELECT name
FROM master.dbo.sysdatabases
WHERE ('[' + name + ']' = @dbname
OR name = @dbname)))
PRINT 'true'
The Solution to this was to do
SET @dbname = '$(databaseName)'
instead of
SET @dbname = $(databaseName)
it works in the actual query program, but through the command line it fails, the ticks over the variable fix that
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With