Значения Dynami c для переменной SQLCMD: Setvar - PullRequest
0 голосов
/ 03 марта 2020

Я работаю с проектом базы данных Visual Studio 2017 (Dacpa c), и у меня есть некоторые переменные SQLCMD в файле Publi sh (в файле xml), как показано ниже -

<SqlCmdVariable Include="ClientDBName">
  <Value>Client_1</Value>
</SqlCmdVariable>

И Моя проблема в том, что у нас есть несколько клиентов, и мы внедряем изменения базы данных с помощью dacpa c для нескольких клиентов одновременно. Поэтому, если я назначу значение stati c для моей переменной SQLCMD "ClientDBName", как в примере выше, оно будет принимать одинаковое значение (одно и то же имя базы данных "Client_1") для всех клиентов.

И исправить это Я использую скрипт PreDeployment. В котором я пытаюсь присвоить значение Dynami c или имя БД для переменной SQLCMD "CleintDBName". Как ниже -

 DECLARE @dbname varchar(50)  
 SET @dbName = "xyz"  
:setvar ClientDBName @dbName

Но это не работает. Я исследовал это и обнаружил, что это не будет работать. Другой способ, которым я пытаюсь это сделать, это присвоить значение dbname, вызвав скрипт, как показано ниже:

1010

Но это тоже не работает. 1011

Так что кто-нибудь может мне помочь с этим Как мы можем присвоить значения Dynami c переменной SQLCMD?

1 Ответ

0 голосов
/ 03 марта 2020

Приведенная ниже примерная команда sqlpackage задает значения SQLCMD с аргументом /Variables:. Эти значения используются вместо значений в профиле publi sh.

SqlPackage.exe /Action:Publish /SourceFile:"YourDatabase.dacpac" /TargetDatabaseName:YourDatabaseName /TargetServerName:"." /Variables:"ClientDBName=YourValue"

Если вашей фактической потребностью является опубликованное имя базы данных, вы можете использовать встроенную переменную DatabaseName SQLCMD вместо пользовательской переменной SQLCMD, которая будет значением /TargetDatabaseName.

...