Итак, используя SSDT в Visual Studio 2013, я могу указать имя базы данных ...
create view vSample1 as
select * from [$(RandomDatabase)].dbo.TableName
Я также могу сделать это с помощью имени из четырех частей
create view vSample2 as
select * from [$(RandomServer)].[$(RandomDatabase)].dbo.TableName
Но когда я пытаюсь сделать это с помощью TableName, я получаю ошибки ...
create view vSample3
select * from [$(RandomServer)].[$(RandomDatabase)].dbo.[$(RandomTable)]
Это дает мне ошибку, похожую на
Error: SQL71561: View: [vSample3] has an unresolved reference to object [$(RandomServer)].[$(RandomDatabase)].dbo.[$(RandomTable)].
Я просмотрел окно переменных SQLCMD в настройках проекта и убедился, что переменная $ (RandomTable) определена как TableName, но все равно выдает ошибки сборки.
Почему это так и как это исправить?
Благодарность
2 ответа
Я бы использовал сценарий до / после развертывания, чтобы создать такое представление с помощью sp_executesql и динамического запроса.
exec sp_executesql N'create view vSample3 as
select * from [$(RandomServer)].[$(RandomDatabase)].dbo.[$(RandomTable)]'
Я бы использовал синонимы - создаю таблицу, которая соответствует фактической таблице, и создаю синоним, указывающий на это, затем ссылаюсь на синоним в представлении или просто на ссылку вместо представления. Вам это нужно, чтобы вы могли скомпилировать и получить полезные вещи, такие как ссылки и т. Д.
Затем при развертывании на каждом сервере просто разверните правильный синоним на правильный сервер.
(Тогда выкиньте своего продавца в b & DD $ за такую надоедливую систему)
Похожие вопросы
Новые вопросы
tsql
T-SQL (Transact Structured Query Language) - это расширение функциональности SQL, поддерживаемое Sybase ASE и Microsoft SQL Server. Не используйте этот тег для запросов, связанных с MySQL, PostgreSql, Oracle (Pl / SQL). Обратите внимание, что код SQL, который пишется с использованием LINQ, также не будет частью этого тега. Этот тег специально создан для расширенного программирования SQL с использованием Microsoft SQL Server.