Объявите имя сервера как переменную в 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];