{"id":3278,"date":"2009-07-29T22:04:14","date_gmt":"2009-07-29T20:04:14","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/?p=3278"},"modified":"2009-07-29T22:05:38","modified_gmt":"2009-07-29T20:05:38","slug":"prozeduren-droppen","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2009\/07\/29\/sql-talk\/prozeduren-droppen","title":{"rendered":"Prozeduren droppen"},"content":{"rendered":"<p>Neulich fragte mich ein Kollege, ob es sicherer sei die Existenz von Prozeduren auf herk&#246;mmliche Art zu pr&#252;fen und dann ggf. zu l&#246;schen:<\/p>\n<p><code lang=\"sql\">IF schema_id('DDLMaster') IS NULL<br \/>\n\tEXEC (&#x0027;CREATE SCHEMA [DDLMaster];&#x0027;);<br \/>\ngo<br \/>\nIF object_id(&#x0027;[DDLMaster].[p_version]&#x0027;) IS NOT NULL<br \/>\n\tDROP PROCEDURE [DDLMaster].[p_version];<br \/>\ngo<br \/>\nCREATE PROCEDURE [DDLMaster].[p_version]<br \/>\nAS<br \/>\n\tSELECT @@version<\/code><\/p>\n<p>Oder doch einfach mal testweise zu l&#246;schen:<\/p>\n<p><code lang=\"sql\">BEGIN TRY DROP PROCEDURE [DDLMaster].[p_version] END TRY<br \/>\n\tBEGIN CATCH END CATCH<br \/>\ngo<br \/>\nCREATE PROCEDURE [DDLMaster].[p_version]<br \/>\nAS<br \/>\n\tSELECT @@version<\/code><\/p>\n<p>Ich muss ehrlich sagen, dass ich keine Ahnung habe, was besser ist. Risiken und Nebenwirkungen sind auch gleich verteilt. F&#252;r mich ist es daher einfach Geschmackssache. <\/p>\n<p>Die letzte Art sah ich erstmals bei meinem Kollegen Diethard vor ein paar Jahren und fand sie gleich sympatisch. Einfach weil das so abgedreht ist. Dennoch verwende ich immer noch die gute alte &#220;berpr&#252;fung mittels IF. Im Normalfall sind bei unseren Skripten die Objekte schon da und daher d&#252;rfte die zweite Methode einen Tick schneller sein. Andererseits sind die SQL-Server heutzutage so schnell, dass wir hier &#252;ber wenige Millisekunden reden&#8230; \ud83d\ude09 <\/p>\n<p>Beide Tricks gehen &#252;brigens auch f&#252;r andere Datenbank-Objekte.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neulich fragte mich ein Kollege, ob es sicherer sei die Existenz von Prozeduren auf herk&#246;mmliche Art zu pr&#252;fen und dann ggf. zu l&#246;schen: IF schema_id(&#x0027;DDLMaster&#x0027;) IS NULL EXEC (&#x0027;CREATE SCHEMA [DDLMaster];&#x0027;); go IF object_id(&#x0027;[DDLMaster].[p_version]&#x0027;) IS NOT NULL DROP PROCEDURE [DDLMaster].[p_version]; go CREATE PROCEDURE [DDLMaster].[p_version] AS SELECT @@version Oder doch einfach mal testweise zu l&#246;schen: BEGIN [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[551],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/3278"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=3278"}],"version-history":[{"count":9,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/3278\/revisions"}],"predecessor-version":[{"id":3315,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/3278\/revisions\/3315"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=3278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=3278"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=3278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}