Объявите имя сервера как переменную в MS Sql Server 2016

У меня есть большой файл сценария, и мне нужно использовать его на другом сервере. Мне нужно отредактировать имя сервера один раз в начале, используя Declare, чтобы я мог использовать один и тот же сценарий на нескольких серверах только путем изменения значения переменной.

что-то вроде того:

Declare @Quell nvarchar(100)
SET @Quell = '[server1].[dbo]'

SELECT * From @Quell.[Documents] 

но это не сработало.

как это сделать? благодарю вас

2 ответа

Решение

К сожалению, подстановка макросов в SQL Server недопустима, но вы можете использовать динамический SQL.

Declare @Quell nvarchar(100)
SET @Quell = '[server1].[dbo]'

Declare @SQL varchar(max) 
SET @SQL = 'SELECT * From ' + @Quell +'.[Documents]'
Exec(@SQL)

Если вы запускаете сценарий из SQL Server Management Studio, вы можете использовать переменную SQLCMD и запустить сценарий в режиме SQLCMD (Query ->SQLCMD Mode). Сценарий SQLCMD также может быть выполнен с использованием утилиты командной строки SQLCMD со значениями переменной, переданными в качестве аргументов командной строки.

Пример скрипта:

:SETVAR Quell "[server1].[dbo]"

SELECT * From $(Quell).[Documents];
Другие вопросы по тегам