{"id":209,"date":"2014-11-21T09:37:25","date_gmt":"2014-11-21T16:37:25","guid":{"rendered":"https:\/\/bornsql.ca\/?p=209"},"modified":"2019-10-28T16:38:12","modified_gmt":"2019-10-28T23:38:12","slug":"assumption-sandwich","status":"publish","type":"post","link":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/","title":{"rendered":"Assumption Sandwich"},"content":{"rendered":"<p>Today we went live with a product we&#8217;ve been working on for A Long Time, in which a team of five has put in A Lot Of Work.<\/p>\n<p>During the walk-through with the customer, loading their initial data onto the production system, we had error after error when trying to insert a particular kind of record. The stored procedures were complaining about a foreign key constraint, but on a table where we&#8217;d never seen the error before.<\/p>\n<p>The walk-through had to turn into a demo out of necessity, by switching to the test environment where everything worked. Obviously this was a data problem.<\/p>\n<p>During the postmortem, we confirmed that the initial records we thought we needed, had been inserted. So now it came to looking at the difference in data between test and production. Shout-out to <a title=\"SQL Toolbelt\" href=\"http:\/\/www.red-gate.com\/products\/sql-development\/sql-toolbelt\/\">SQL Toolbelt<\/a> from Red Gate for making our lives easier.<\/p>\n<p>You know what&#8217;s coming. It turns out that the process for inserting a particular kind of record, which we only see for brand new records in the system (think first-client scenario), relied on the existence of a lookup value that did not appear in the production database.<\/p>\n<p>In other words, for the last year we&#8217;ve been testing a product based on a false assumption.<\/p>\n<p>The good news is, the customer was signed, and the problem was identified reasonably quickly. The other good news is that we had a test environment on which to fall back.<\/p>\n<p>An assumption sandwich tastes a lot like humble pie.<\/p>\n<p><em>Photo by <a href=\"https:\/\/unsplash.com\/@chuttersnap\">chuttersnap<\/a> on <a href=\"https:\/\/unsplash.com\/s\/photos\/mistake?utm_source=unsplash\">Unsplash<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we went live with a product we&#8217;ve been working on for A Long Time, in which a team of five has put in A Lot Of Work. During the walk-through with the customer, loading their initial data onto the production system, we had error after error when trying to insert a particular kind of&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":7931,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[43,44,42],"class_list":["post-209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","tag-assumptions","tag-data","tag-go-live"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Assumption Sandwich - Born SQL<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Assumption Sandwich - Born SQL\" \/>\n<meta property=\"og:description\" content=\"Today we went live with a product we&#8217;ve been working on for A Long Time, in which a team of five has put in A Lot Of Work. During the walk-through with the customer, loading their initial data onto the production system, we had error after error when trying to insert a particular kind of&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/\" \/>\n<meta property=\"og:site_name\" content=\"Born SQL\" \/>\n<meta property=\"article:published_time\" content=\"2014-11-21T16:37:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-28T23:38:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bornsql.ca\/wp-content\/uploads\/2014\/11\/chuttersnap-Odc4dcsjUBw-unsplash.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"533\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Randolph\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Randolph\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/\"},\"author\":{\"name\":\"Randolph\",\"@id\":\"https:\\\/\\\/bornsql.ca\\\/#\\\/schema\\\/person\\\/df20853d6458bc0aca0d5f17202e608d\"},\"headline\":\"Assumption Sandwich\",\"datePublished\":\"2014-11-21T16:37:25+00:00\",\"dateModified\":\"2019-10-28T23:38:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/\"},\"wordCount\":261,\"image\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bornsql.ca\\\/wp-content\\\/uploads\\\/2014\\\/11\\\/chuttersnap-Odc4dcsjUBw-unsplash.jpg\",\"keywords\":[\"assumptions\",\"data\",\"Go Live\"],\"articleSection\":[\"General\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/\",\"url\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/\",\"name\":\"Assumption Sandwich - Born SQL\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bornsql.ca\\\/wp-content\\\/uploads\\\/2014\\\/11\\\/chuttersnap-Odc4dcsjUBw-unsplash.jpg\",\"datePublished\":\"2014-11-21T16:37:25+00:00\",\"dateModified\":\"2019-10-28T23:38:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/#\\\/schema\\\/person\\\/df20853d6458bc0aca0d5f17202e608d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bornsql.ca\\\/wp-content\\\/uploads\\\/2014\\\/11\\\/chuttersnap-Odc4dcsjUBw-unsplash.jpg\",\"contentUrl\":\"https:\\\/\\\/bornsql.ca\\\/wp-content\\\/uploads\\\/2014\\\/11\\\/chuttersnap-Odc4dcsjUBw-unsplash.jpg\",\"width\":800,\"height\":533,\"caption\":\"broken blue ceramic plate\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/assumption-sandwich\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bornsql.ca\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Assumption Sandwich\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bornsql.ca\\\/#website\",\"url\":\"https:\\\/\\\/bornsql.ca\\\/\",\"name\":\"Born SQL\",\"description\":\"A blog about the Microsoft Data Platform\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bornsql.ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bornsql.ca\\\/#\\\/schema\\\/person\\\/df20853d6458bc0aca0d5f17202e608d\",\"name\":\"Randolph\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e464dca1b55497d15e725afa9728080478c391a7492d0065a7fbeb1d456a1986?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e464dca1b55497d15e725afa9728080478c391a7492d0065a7fbeb1d456a1986?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e464dca1b55497d15e725afa9728080478c391a7492d0065a7fbeb1d456a1986?s=96&r=g\",\"caption\":\"Randolph\"},\"sameAs\":[\"https:\\\/\\\/bornsql.ca\"],\"url\":\"https:\\\/\\\/bornsql.ca\\\/blog\\\/author\\\/bornsql\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Assumption Sandwich - Born SQL","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/","og_locale":"en_US","og_type":"article","og_title":"Assumption Sandwich - Born SQL","og_description":"Today we went live with a product we&#8217;ve been working on for A Long Time, in which a team of five has put in A Lot Of Work. During the walk-through with the customer, loading their initial data onto the production system, we had error after error when trying to insert a particular kind of&hellip;&nbsp;","og_url":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/","og_site_name":"Born SQL","article_published_time":"2014-11-21T16:37:25+00:00","article_modified_time":"2019-10-28T23:38:12+00:00","og_image":[{"width":800,"height":533,"url":"https:\/\/bornsql.ca\/wp-content\/uploads\/2014\/11\/chuttersnap-Odc4dcsjUBw-unsplash.jpg","type":"image\/jpeg"}],"author":"Randolph","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Randolph","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/#article","isPartOf":{"@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/"},"author":{"name":"Randolph","@id":"https:\/\/bornsql.ca\/#\/schema\/person\/df20853d6458bc0aca0d5f17202e608d"},"headline":"Assumption Sandwich","datePublished":"2014-11-21T16:37:25+00:00","dateModified":"2019-10-28T23:38:12+00:00","mainEntityOfPage":{"@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/"},"wordCount":261,"image":{"@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/#primaryimage"},"thumbnailUrl":"https:\/\/bornsql.ca\/wp-content\/uploads\/2014\/11\/chuttersnap-Odc4dcsjUBw-unsplash.jpg","keywords":["assumptions","data","Go Live"],"articleSection":["General"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/","url":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/","name":"Assumption Sandwich - Born SQL","isPartOf":{"@id":"https:\/\/bornsql.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/#primaryimage"},"image":{"@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/#primaryimage"},"thumbnailUrl":"https:\/\/bornsql.ca\/wp-content\/uploads\/2014\/11\/chuttersnap-Odc4dcsjUBw-unsplash.jpg","datePublished":"2014-11-21T16:37:25+00:00","dateModified":"2019-10-28T23:38:12+00:00","author":{"@id":"https:\/\/bornsql.ca\/#\/schema\/person\/df20853d6458bc0aca0d5f17202e608d"},"breadcrumb":{"@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bornsql.ca\/blog\/assumption-sandwich\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/#primaryimage","url":"https:\/\/bornsql.ca\/wp-content\/uploads\/2014\/11\/chuttersnap-Odc4dcsjUBw-unsplash.jpg","contentUrl":"https:\/\/bornsql.ca\/wp-content\/uploads\/2014\/11\/chuttersnap-Odc4dcsjUBw-unsplash.jpg","width":800,"height":533,"caption":"broken blue ceramic plate"},{"@type":"BreadcrumbList","@id":"https:\/\/bornsql.ca\/blog\/assumption-sandwich\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bornsql.ca\/"},{"@type":"ListItem","position":2,"name":"Assumption Sandwich"}]},{"@type":"WebSite","@id":"https:\/\/bornsql.ca\/#website","url":"https:\/\/bornsql.ca\/","name":"Born SQL","description":"A blog about the Microsoft Data Platform","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bornsql.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bornsql.ca\/#\/schema\/person\/df20853d6458bc0aca0d5f17202e608d","name":"Randolph","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e464dca1b55497d15e725afa9728080478c391a7492d0065a7fbeb1d456a1986?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e464dca1b55497d15e725afa9728080478c391a7492d0065a7fbeb1d456a1986?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e464dca1b55497d15e725afa9728080478c391a7492d0065a7fbeb1d456a1986?s=96&r=g","caption":"Randolph"},"sameAs":["https:\/\/bornsql.ca"],"url":"https:\/\/bornsql.ca\/blog\/author\/bornsql\/"}]}},"jetpack_featured_media_url":"https:\/\/bornsql.ca\/wp-content\/uploads\/2014\/11\/chuttersnap-Odc4dcsjUBw-unsplash.jpg","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/posts\/209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/comments?post=209"}],"version-history":[{"count":0,"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/posts\/209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/media\/7931"}],"wp:attachment":[{"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/media?parent=209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/categories?post=209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bornsql.ca\/wp-json\/wp\/v2\/tags?post=209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}