Я пытаюсь написать сценарий базы данных (SQL Server 2008), который будет копировать информацию из таблиц базы данных на одном сервере в соответствующие таблицы в другой базе данных на другом сервере.
Я прочитал, что правильный способ сделать это - использовать оператор SQL в формате, подобном следующему:
INSERT INTO <linked_server>.<database>.<owner>.<table_name> SELECT * FROM <linked_server>.<database>.<owner>.<table_name>
Поскольку будет скопировано несколько таблиц, я хотел бы объявить переменные в верхней части скрипта, чтобы позволить пользователю указывать имена каждого сервера и базы данных, которые будут использоваться. Затем они могут быть использованы по всему сценарию. Однако я не уверен, как использовать значения переменных в реальных операторах SQL. Я хочу добиться чего-то вроде следующего:
DECLARE @SERVER_FROM AS NVARCHAR(50) = 'ServerFrom'
DECLARE @DATABASE_FROM AS NVARCHAR(50) = 'DatabaseTo'
DECLARE @SERVER_TO AS NVARCHAR(50) = 'ServerTo'
DECLARE @DATABASE_TO AS NVARCHAR(50) = 'DatabaseTo'
INSERT INTO @SERVER_TO.@DATABASE_TO.dbo.TableName SELECT * FROM @SERVER_FROM.@DATABASE_FROM.dbo.TableName
...
Как мне использовать переменные @ в этом коде, чтобы он работал правильно?
Кроме того, вы считаете, что мой метод, описанный выше, является правильным для того, чего я пытаюсь достичь, и я должен использовать NVARCHAR (50) в качестве типа моей переменной или что-то еще?
Спасибо