Выполняется ли предварительное и развертывание sql за один сеанс

#sql #sql-server #visual-studio

Вопрос:

У меня есть SQL VS проект с одним Customers.PreDeployment1.sql файлом:

 DROP TABLE Customers
 

Мой вопрос в том, почему после удаления Customers.sql ( Build действие) не выполняется (таблица не создается sql server )?

 CREATE TABLE [dbo].[Customers]
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [First_Name] NCHAR(10) NULL, 
    [Last_Name] NCHAR(10) NULL
)
 

Я не мог найти этому никакого объяснения… может быть, потому, что он рассматривал это как один сеанс?

Комментарии:

1. Просмотрите свой сценарий развертывания.

Ответ №1:

Потому что удаление происходит только после того, как visual studio выполнит сравнение/сравнение и создаст сценарий.

Таким образом, когда выполняется различие (и создается сценарий развертывания), таблица customers все еще находится в базе данных, VS затем добавляет предварительное развертывание и последующее развертывание в сценарий изменений, а затем запускает его.

Я уверен, что для такого поведения есть веская причина, но я ее так и не нашел. Есть несколько способов обойти проблему, но неясно, чего вы пытаетесь достичь, удаляя таблицу в процессе предварительного развертывания?

Комментарии:

1. Это была демонстрация, которую я дал по поводу того, что этот вопрос был поднят во время сессии. Мне это показалось очень интересным 🙂