Сначала создайте еще одну переменную в SSIS, которая является типом данных String, и дайте ей соответствующее имя (я собираюсь предположить SQLStatement
). Затем, вместо того, чтобы установить его значение, установите его значение как выражение с последующим выражением, очевидно исправляя часть в фигурных скобках ({}
) и меняя выражение так, как вам нужно:
"SELECT * FROM dbo." + @[User::{YourVariable}] + " AS MyTable;"
Затем в задании «Выполнить» SQL измените значение SQLSourceType
на Variable
, а затем значение SourceVariable
на User::SQLStatement
. Тогда SSIS вместо этого запустит оператор в переменной.
Альтернативный (и более безопасный) подход - использовать вместо этого оператор «параметризованный»; вместо введения значения в оператор переменной в SSIS. В значении SQLStatement
(свойство задачи «Выполнить» SQL, а не переменная) введите оператор как:
DECLARE @TableName sysname = ?;
DECLARE @SQL nvarchar(MAX);
SET @SQL = N'SELECT * FROM dbo.' + QUOTENAME(@TableName) + N' AS MyTable;';
EXEC sp_executesql @SQL;
Затем в области отображения параметров передайте свою переменную (для Dynami c имя таблицы) в качестве параметра для оператора.