{"id":589,"date":"2025-01-28T08:00:00","date_gmt":"2025-01-28T13:00:00","guid":{"rendered":"https:\/\/www.sqltabletalk.com\/?p=589"},"modified":"2025-01-27T10:56:41","modified_gmt":"2025-01-27T15:56:41","slug":"natively-compiled-stored-procedures-in-memory-oltp","status":"publish","type":"post","link":"https:\/\/www.sqltabletalk.com\/?p=589","title":{"rendered":"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.<\/p>\n<h2>In-Memory OLTP and Natively Compiled Stored Procedures<\/h2>\n<p>When you use in-memory OLTP, natively compiled stored procedures can significantly improve database performance by compiling T-SQL code into machine code. This process reduces the overhead of interpretation and makes optimal use of memory-optimized tables. Keep in mind that natively compiled stored procedures can only reference in-memory (memory-optimized) tables.<\/p>\n<h2>Creating Natively Compiled Stored Procedures<\/h2>\n<p>Use the following template to create a natively compiled stored procedure:<\/p>\n<pre><code>CREATE OR ALTER PROC dbo.MyCompiledProc\n    @some_value INT\nWITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS CALLER\nAS\nBEGIN ATOMIC\n    WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')\n    -- &lt;insert queries against memory-optimized tables here&gt;\nEND\nGO<\/code><\/pre>\n<h3>Key Options Explained<\/h3>\n<ul>\n<li><strong>NATIVE_COMPILATION<\/strong>: Instructs SQL Server to compile T-SQL into machine code.<\/li>\n<li><strong>SCHEMABINDING<\/strong>: Prevents modifications to objects referenced by the procedure that might break it.<\/li>\n<li><strong>EXECUTE AS<\/strong>: Optional in SQL Server 2016 and later. In SQL Server 2014, it had to be <code>SELF<\/code>, <code>OWNER<\/code>, or a specific user.<\/li>\n<li><strong>BEGIN ATOMIC<\/strong>: Executes all code in a single atomic transaction. The transaction commits if there are no errors before reaching the <code>END<\/code> statement. (Use <code>TRY-CATCH-THROW<\/code> for better error handling.)<\/li>\n<\/ul>\n<h3>Additional Required Clauses<\/h3>\n<ul>\n<li><strong>TRANSACTION_ISOLATION_LEVEL<\/strong>: Must be one of <code>SNAPSHOT<\/code>, <code>REPEATABLE READ<\/code>, or <code>SERIALIZABLE<\/code>.<\/li>\n<li><strong>LANGUAGE<\/strong>: Specifies a language from <code>sys.syslanguages<\/code>.<\/li>\n<\/ul>\n<h2>Initial Compilation<\/h2>\n<p>Natively compiled stored procedures are compiled into machine code with help from the SQL Server Query Optimizer. This occurs either:<\/p>\n<ol>\n<li><strong>At Creation Time<\/strong>: When the procedure is created, SQL Server compiles it immediately, translating T-SQL into machine code.<\/li>\n<li><strong>At First Execution After a Server Restart<\/strong>: Upon restarting the SQL Server instance, natively compiled stored procedures will be compiled again on their first execution.<\/li>\n<\/ol>\n<h2>Recompilation<\/h2>\n<p>Natively compiled stored procedures do not automatically recompile based on data changes or updates to statistics. This behavior has both advantages and drawbacks:<\/p>\n<h3>Advantages<\/h3>\n<ul>\n<li><strong>Stable performance<\/strong>: The query plan does not change unexpectedly.<\/li>\n<li><strong>Predictable execution plans<\/strong>: Execution plans stay the same unless manually recompiled.<\/li>\n<\/ul>\n<h3>Drawbacks<\/h3>\n<ul>\n<li><strong>Data distribution changes<\/strong>: Over time, changes in data can cause performance to degrade if the original query plan is no longer optimal.<\/li>\n<\/ul>\n<h2>Manual Recompilation<\/h2>\n<p>To manually recompile a natively compiled stored procedure, you can run the following command:<\/p>\n<pre><code>EXEC sp_recompile N'dbo.MyCompiledProc';\n<\/code><\/pre>\n<h2>Performance Monitoring Query<\/h2>\n<p>The following query retrieves text and execution statistics for all queries within natively compiled stored procedures in the current database, ordered by total worker time:<\/p>\n<pre><code>SELECT\n    st.objectid,\n    OBJECT_NAME(st.objectid) AS [object name],\n    SUBSTRING(\n        st.text, \n        (qs.statement_start_offset \/ 2) + 1, \n        ((qs.statement_end_offset - qs.statement_start_offset) \/ 2) + 1\n    ) AS [query text],\n    qs.creation_time,\n    qs.last_execution_time,\n    qs.execution_count,\n    qs.total_worker_time,\n    qs.last_worker_time,\n    qs.min_worker_time,\n    qs.max_worker_time,\n    qs.total_elapsed_time,\n    qs.last_elapsed_time,\n    qs.min_elapsed_time,\n    qs.max_elapsed_time\nFROM sys.dm_exec_query_stats qs\nCROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st\nWHERE st.dbid = DB_ID()\n  AND st.objectid IN (\n      SELECT object_id \n      FROM sys.sql_modules \n      WHERE uses_native_compilation = 1\n  )\nORDER BY qs.total_worker_time DESC;<\/code><\/pre>\n<h2>Requirement of BIN2 Collation for Natively Compiled Stored Procedures<\/h2>\n<p>For natively compiled stored procedures, SQL Server requires the use of BIN2 collation when performing string comparisons or creating indexes. This is because BIN2 provides a binary, case-sensitive, and accent-sensitive comparison that is more efficient in memory-optimized environments.<\/p>\n<ul>\n<li><strong>Efficiency<\/strong>: Binary comparison is faster than other collations that account for linguistic rules.<\/li>\n<li><strong>Consistency<\/strong>: Ensures deterministic and consistent string operations across servers and environments.<\/li>\n<\/ul>\n<h2>Key Considerations and Restrictions<\/h2>\n<ul>\n<li><strong>Query Optimization<\/strong>: Execution plans are created when the procedure is created and do not automatically update with changing data or statistics. Ensure your tables contain representative data before creating the procedures.<\/li>\n<li><strong>Manual Recompilation<\/strong>: Use <code>sp_recompile<\/code> to manually refresh execution plans.<\/li>\n<li><strong>Unsupported Features<\/strong>: Certain features (such as <code>MERGE<\/code>, some <code>CASE<\/code> expressions, <code>OUTER JOIN<\/code>s, <code>CURSOR<\/code>s, and <code>CTEs<\/code>) are not supported in natively compiled stored procedures. Workarounds or rewrites may be required.<\/li>\n<li><strong>TempDB Restrictions<\/strong>: Temporary objects in <code>TempDB<\/code> are generally not supported. Use in-memory table variables instead.<\/li>\n<li><strong>ALTER PROCEDURE<\/strong>: Modifications require dropping and recreating the stored procedure.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>Natively compiled stored procedures can offer substantial performance gains for in-memory OLTP workloads. By understanding the creation process, knowing how to monitor and recompile them, and being aware of their limitations and requirements (such as BIN2 collation), you can effectively optimize your in-memory database operations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[133,5,91,84,78],"tags":[479,403,444,7,142,477,131,438,480,478],"class_list":["post-589","post","type-post","status-publish","format-standard","hentry","category-in-memory-oltp","category-performance","category-query-optimization","category-sql-developer","category-tsql","tag-bin2-collation","tag-database-performance","tag-in-memory-oltp-2","tag-memory","tag-memory-optimized-tables","tag-natively-compiled-stored-procedures","tag-sql-server","tag-sql-server-optimization","tag-sql-server-query-optimizer","tag-t-sql-optimization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Natively Compiled Stored Procedures with in-memory OLTP in SQL Server - SQL Table Talk<\/title>\n<meta name=\"description\" content=\"Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqltabletalk.com\/?p=589\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server - SQL Table Talk\" \/>\n<meta property=\"og:description\" content=\"Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqltabletalk.com\/?p=589\" \/>\n<meta property=\"og:site_name\" content=\"SQL Table Talk\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-28T13:00:00+00:00\" \/>\n<meta name=\"author\" content=\"Yvonne Vanslageren\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yvonne Vanslageren\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=589#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=589\"},\"author\":{\"name\":\"Yvonne Vanslageren\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082\"},\"headline\":\"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server\",\"datePublished\":\"2025-01-28T13:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=589\"},\"wordCount\":624,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"keywords\":[\"BIN2 Collation\",\"Database Performance\",\"In-Memory OLTP\",\"memory\",\"Memory-Optimized Tables\",\"Natively Compiled Stored Procedures\",\"SQL Server\",\"SQL Server Optimization\",\"SQL Server Query Optimizer\",\"T-SQL Optimization\"],\"articleSection\":[\"In-Memory OLTP\",\"Performance\",\"Query Optimization\",\"SQL Developer\",\"TSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=589#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=589\",\"url\":\"https:\/\/www.sqltabletalk.com\/?p=589\",\"name\":\"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server - SQL Table Talk\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\"},\"datePublished\":\"2025-01-28T13:00:00+00:00\",\"description\":\"Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=589#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=589\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=589#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqltabletalk.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\",\"url\":\"https:\/\/www.sqltabletalk.com\/\",\"name\":\"SQL Table Talk\",\"description\":\"Breaking Down SQL Server, One Post at a Time.\",\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqltabletalk.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\",\"name\":\"Stephen Planck\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"caption\":\"Stephen Planck\"},\"logo\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/dexterwiki.com\",\"https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI\",\"https:\/\/www.youtube.com\/linuxmate\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082\",\"name\":\"Yvonne Vanslageren\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g\",\"caption\":\"Yvonne Vanslageren\"},\"url\":\"https:\/\/www.sqltabletalk.com\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server - SQL Table Talk","description":"Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.","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:\/\/www.sqltabletalk.com\/?p=589","og_locale":"en_US","og_type":"article","og_title":"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server - SQL Table Talk","og_description":"Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.","og_url":"https:\/\/www.sqltabletalk.com\/?p=589","og_site_name":"SQL Table Talk","article_published_time":"2025-01-28T13:00:00+00:00","author":"Yvonne Vanslageren","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Yvonne Vanslageren","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqltabletalk.com\/?p=589#article","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/?p=589"},"author":{"name":"Yvonne Vanslageren","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082"},"headline":"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server","datePublished":"2025-01-28T13:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqltabletalk.com\/?p=589"},"wordCount":624,"commentCount":0,"publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"keywords":["BIN2 Collation","Database Performance","In-Memory OLTP","memory","Memory-Optimized Tables","Natively Compiled Stored Procedures","SQL Server","SQL Server Optimization","SQL Server Query Optimizer","T-SQL Optimization"],"articleSection":["In-Memory OLTP","Performance","Query Optimization","SQL Developer","TSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqltabletalk.com\/?p=589#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqltabletalk.com\/?p=589","url":"https:\/\/www.sqltabletalk.com\/?p=589","name":"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server - SQL Table Talk","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/#website"},"datePublished":"2025-01-28T13:00:00+00:00","description":"Modern applications often demand lightning-fast performance from their databases, whether they\u2019re handling large transactional workloads or complex analytical queries. SQL Server\u2019s in-memory OLTP feature addresses these needs by using memory-optimized tables and natively compiled stored procedures to boost throughput and reduce latency. This post provides an overview of natively compiled stored procedures, how to create them, and best practices for performance monitoring and maintenance.","breadcrumb":{"@id":"https:\/\/www.sqltabletalk.com\/?p=589#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqltabletalk.com\/?p=589"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqltabletalk.com\/?p=589#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqltabletalk.com\/"},{"@type":"ListItem","position":2,"name":"Natively Compiled Stored Procedures with in-memory OLTP in SQL Server"}]},{"@type":"WebSite","@id":"https:\/\/www.sqltabletalk.com\/#website","url":"https:\/\/www.sqltabletalk.com\/","name":"SQL Table Talk","description":"Breaking Down SQL Server, One Post at a Time.","publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqltabletalk.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0","name":"Stephen Planck","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","caption":"Stephen Planck"},"logo":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/dexterwiki.com","https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI","https:\/\/www.youtube.com\/linuxmate"]},{"@type":"Person","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/68bb31b454bafe9e139183ed4f3e9082","name":"Yvonne Vanslageren","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/22c274a7a354b81a0a8dc5b23e8e0be9bdd81a6bc0541474cfb6b954d6bb2089?s=96&d=mm&r=g","caption":"Yvonne Vanslageren"},"url":"https:\/\/www.sqltabletalk.com\/?author=2"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=589"}],"version-history":[{"count":2,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/589\/revisions"}],"predecessor-version":[{"id":968,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/589\/revisions\/968"}],"wp:attachment":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}