我需要在各种 SQL Server 实例上执行某些脚本。他们使用具有不同标识的数据库。但是,所有数据库都具有应处理的相同表(相同名称和结构)。因此,我想检测数据库的名称,将其设置为字符串变量,构造 SQL 语句,并通过sp_executesql
. 正确执行的裸命令是:
USE [1000574];
SELECT TOP 10 temperature_1, UTC FROM dbo.Data;
然后我尝试使用@database_name
占位符执行等效字符串:
DECLARE @database_name nvarchar(100);
SET @database_name = '1000574';
EXEC sp_executesql N'USE [@database_name];
SELECT TOP 10 temperature_1, UTC FROM dbo.Data;',
N'@database_name nvarchar(100)',
@database_name = @database_name
我得到的是以下错误消息:
*消息 911,级别 16,状态 1,第 1 行
数据库“@database_name”不存在。确保输入的名称正确。*
错误在哪里?
谢谢,彼得