在SQL Server中有任何方法可以使用'use database'命令来接受变量

9 sql-server scripting sql-server-2005

我想写一个'通用'脚本来操作许多数据库.'use databasename'命令将分发在脚本体中.我宁愿在脚本的顶部显示数据库名称信息.理想情况下:

declare @db varchar(100)
set @db = 'data_in'
use @db

这失败了.也许吧

declare @db varchar(100)
set @db = 'data_in'
exec ('use '+@db)

这会执行,但可能只在字符串中的查询上下文中更改数据库.
那么有没有其他方法可以将整个脚本放入字符串并以这种方式执行它,即.治愈比疾病更糟?

Ed *_*per 5

SQLCMD出脚本变量。

这使您能够以以下形式将变量放入脚本中:

USE $(db1_name)
...some code...

USE $(db2_name)
...some code...
Run Code Online (Sandbox Code Playgroud)

并且从环境变量,运行时提供的参数或硬编码的值分配中插值变量值。


fre*_*tje 1

不能在脚本中添加 use 语句,并使用 osql 命令(或您正在使用的任何命令)向数据库提供数据,如下所示:

osql -S servername -d databasename -U username -P password -i script.sql
Run Code Online (Sandbox Code Playgroud)

  • 拆分脚本并单独执行它们? (2认同)