Zdaję sobie sprawę, że jest to bardzo podobne pytanie do Stop SSMS from scripting SPs using sp_executesql?Jak zatrzymać SSMS 2012 z SP skryptów przy użyciu sp_executesql
Jednak wydaje się, że zmienił zachowanie z SSMS 2012.
Jeśli masz „Sprawdź dla opcji istnienia”wybrany, na przykład:
... to teraz generuje IF NOT EXISTS do proc, który ma być utworzony, także jako I F istnieje dla poprzedniego rozwijanej proc, jeśli, jak zwykle zrobić, to wybrać spadku i STWÓRZ opcję:
To zmusza go do skryptu CREATE użyciu sp_executesql. To nie ma sensu, ponieważ nie potrzebujesz testu IF NOT EXISTS na CREATE, jeśli Drop został właśnie upuszczony.
Nie wydaje się możliwe posiadanie jednego bez drugiego.
Wszelkie pomysły?
Dzięki za to - podejrzewałem tak samo. To, czego naprawdę chcę, to opcja zarówno dla IF EXISTS, jak i IF NOT EXISTS. Mogę teraz zignorować błąd DROP, ale te skrypty są uruchamiane przez automatyczny proces iw pewnym momencie będę musiał przeanalizować logi skryptów, aby sprawdzić błędy. Wydaje się, że po tej zmianie wykonali jeden z kroków wstecz. – ChrisA
Zaktualizowali treść (co może być częściowo moją winą). Zobacz http://connect.microsoft.com/SQLServer/feedback/details/624075/include-if-not-exists-clause-impacts-drop-scripting http://connect.microsoft.com/SQLServer/feedback/details/ 242799/ssms-sure-scripting-options-yield-dynamic-sql i https://connect.microsoft.com/SQLServer/feedback/details/242795/ssms-certain-scripting-options-do-notwork-for- zmodyfikuj –
Tak, nie przejmuję się tym sformułowaniem. Chodzi o to, że jeśli chcę IF IF EXISTS (aby zapobiec błędowi DROP), jestem zmuszony również mieć IF NOT EXISTS w utworze, co z kolei zmusza kreację do argumentu sp_executesql, którą również nie chcę - ponieważ każda nieumyślna literówka nie spowoduje oczywistych błędów. To było w porządku wcześniej - IF EXISTS było tam domyślnie i nie miałem włączonego IF NOT EXISTS. W * nie * posiadanie opcji IF EXISTS jest osobną opcją, dla mnie jest teraz gorsze niż w przypadku SQL08. – ChrisA