Sql server 使sql server脚本文件夹名称动态

Sql server 使sql server脚本文件夹名称动态,sql-server,dynamic,Sql Server,Dynamic,我一直在尝试从包含大量SQL脚本的文件夹中执行SQL脚本。这些脚本将创建一个完整的数据库,因此我希望按顺序执行脚本,因此我编写了此代码并将其放入脚本中 :r c:\Scripts\CREATE_TABLE1.sql -- sql file to create first table :r c:\Scripts\CREATE_TABLE2.sql -- sql file to create second table :r c:\Scripts\CREATE_TABLE3.sql -- sql f

我一直在尝试从包含大量SQL脚本的文件夹中执行SQL脚本。这些脚本将创建一个完整的数据库,因此我希望按顺序执行脚本,因此我编写了此代码并将其放入脚本中

:r c:\Scripts\CREATE_TABLE1.sql -- sql file to create first table
:r c:\Scripts\CREATE_TABLE2.sql -- sql file to create second table 
:r c:\Scripts\CREATE_TABLE3.sql -- sql file to create third table
它的工作很好,我只需要使文件夹名称动态,这样我们就可以通过在顶部创建一个变量并在每个文件名中使用它来轻松更改文件夹名称。我探索了一些选择,但没有找到太多,结果就是这样。但这不起作用

Declare @FolderName varchar(100)
set @FolderName='C:\Scripts\'
:r @FolderName+'CREATE_TABLE1.sql -- create first table
:r @FolderName+'CREATE_TABLE2.sql -- create second table
:r @FolderName+'CREATE_TABLE3.sql -- create third table

但它在文件夹名后的第一个r命令附近抛出错误语法。有人请告诉我如何修复或解决问题吗?

您可以使用
setvar
&
$()


谢谢你,亚历克斯。它说:setvar(第一行)附近的语法不正确。有什么想法吗?这就是我使用它的方式setvar FileToexecute“CREATE1.sql”:setvar workpath“c:\Scripts\”:r$(workpath)$(FileToexecute)它在ManagementStudio的sqlcmd模式下对我有效,还有sqlcmd-v;它确实可以在sqlcmd模式下工作。我想我需要稍微改变一下我的方法[使用SQLCMD]。谢谢你的帮助,亚历克斯
:setvar FolderName "C:\Scripts"
:r $(FolderName)\CREATE_TABLE1.sql'
:r $(FolderName)\.....