I'm trying to set up a test environment that simulates (very roughly) having three servers. I'm doing this by creating 3 databases on my local instance of SQL which I'll call [A], [B], and [C]. Why I can't simply set up three test instances, is a story for another time. I've got a bunch of code files I want to execute using SQLCMD, which is no problem. I've got a parent SQLCMD file that looks like
:Setvar db gt
:Setvar filepath "C:\Documents\test\"
:r "C:\Documents\test\master.sql"
then another file (master.sql) with a few statements like create database $(db)
and so on.
The problem now however is in the actual code files, the database referenced is [Alerts] on the actual server, but in my text harness the database has to be [A], [B] or [C] (since I'm using the database names to simulate the server).
Imagine I also have a file MyTable.sql which looks roughly like this:
create table [alerts].[dbo].[MyTable]
(
id int identity(1,1)
)
In pseudocode, I'd like to do something like this:
(:r $(filepath)MyTable.sql).Replace('[Alerts]', '$(db)')
Does anyone know if this is possible?