{"id":35373,"date":"2021-07-19T14:00:03","date_gmt":"2021-07-19T21:00:03","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?p=35373"},"modified":"2024-04-19T10:47:18","modified_gmt":"2024-04-19T17:47:18","slug":"recent-updates-for-data-tier-application-framework-and-sqlpackage","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/","title":{"rendered":"Recent updates for Data-Tier Application Framework and SqlPackage"},"content":{"rendered":"

In this article, we will cover some recent changes to the Data-Tier Application Framework (DacFx) and SqlPackage. DacFx is a library that provides APIs for database deployment and development scenarios and SqlPackage is a command line interface to DacFx for common uses. Earlier this year SqlPackage released updates including additional support for Azure Synapse Analytics and improved performance. The first preview for the 160 major version of DacFx is now available, containing the completed migration to Microsoft.Data.SqlClient<\/a>. To facilitate discussions and sharing of code samples for DacFx and SqlPackage, a GitHub repository<\/a> has been made available.<\/p>\n

Recent Updates to SqlPackage<\/h2>\n

In recent updates for SqlPackage, 18.7 (March 2021) and 18.7.1 (June 2021), functionality was added specific to big data in Azure Synapse Analytics, options were added to improve import performance in some scenarios, and changes were made to make the troubleshooting and general use of SqlPackage easier.<\/p>\n

With version 18.7 and above of SqlPackage, Azure Synapse Analytics gains improved portability through the Parquet flat file format. Through additional command line properties on the Extract operation (see documentation<\/a>) data is written to flat files in Azure Blob Storage while the schema is stored in a Dacpac file. Flat files storing data can be published to a database along with a Dacpac through the Publish operation with similar command line properties. Both Extract and Publish operations have large performance improvements when writing to Azure Blob Storage for large database sizes.<\/p>\n

In some SqlPackage import scenarios indexes have a large impact on the performance, whether it is an index assisting with data insertion speed or rebuilding indexes hampering other operations. To allow further tuning SqlPackage\u2019s behavior in these cases, the command line properties \u201cRebuildIndexesOfflineForDataPhase\u201d and \u201cDisableIndexesForDataPhase\u201d were added to the Import action<\/a> in SqlPackage 18.7.<\/p>\n

If you are looking to better understand the SqlPackage operations for troubleshooting or performance improvements, there are some essential steps<\/a> to capture more information. Enabling a diagnostics file with the parameter \u201c\/DiagnosticsFile:<filename>\u201d is fundamental and in the latest SqlPackage release the version and architecture were standardized at the top of the file to assist in troubleshooting version differences. Trace data including timestamps for performance can be included by setting an environment variable \u201cDACFX_PERF_TRACE\u201d to true. To support environments where object names may contain Personally-identifiable information (PII) or otherwise confidential information, SqlPackage 18.7 added a property for all operations that hashes the object names in logs (\u201cHashObjectNamesInLogs\u201d).<\/p>\n

DacFx v160 Preview<\/h2>\n

The DacFx v160 preview release is now available as a NuGet package for use in testing or updating existing applications to Microsoft.Data.SqlClient. External DacFx APIs are not altered by this update, however the dependency on System.Data.SqlClient is removed. An example application<\/a> leveraging the v160 release of DacFx is available. Existing applications will continue to use the generally available v150 NuGet package unless a major version is not specified and preview releases are included in the package dependencies<\/a>.<\/p>\n

As a component of several SQL tools, including Azure Data Studio, SQL Server Management Studio, and SQL Server Data Tools in Visual Studio, DacFx v160 will be incorporated in those tools to bring functionality forward over the coming months.<\/p>\n

DacFx GitHub Repository<\/h2>\n

Since the DacFx library is surfaced through multiple products, it can be difficult to locate information and provide feedback specific to DacFx and the SqlPackage CLI. To reduce barriers to collaboration, a repository is being opened<\/a> with a focus on transparently triaging and addressing feedback. You are welcome to open a discussion around a particular use case and we have begun to gather previously reported items from other feedback channels. The code in the repository will comprise of current samples and will be updated based on questions and feedback. The DacFx team looks forward to an environment with a focus on the community\u2019s use of DacFx and building more resources.<\/p>\n","protected":false},"excerpt":{"rendered":"

In this article, we will cover some recent changes to the Data-Tier Application Framework (DacFx) and SqlPackage.<\/p>\n","protected":false},"author":6110,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"_classifai_error":"","footnotes":""},"post_tag":[],"product":[],"content-type":[2448],"topic":[],"coauthors":[3546],"class_list":["post-35373","post","type-post","status-publish","format-standard","hentry","content-type-updates","review-flag-1593580427-503","review-flag-1-1593580431-15","review-flag-7-1593580462-294"],"yoast_head":"\nRecent updates for Data-Tier Application Framework and SqlPackage - Microsoft SQL Server Blog<\/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:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recent updates for Data-Tier Application Framework and SqlPackage - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"In this article, we will cover some recent changes to the Data-Tier Application Framework (DacFx) and SqlPackage.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft SQL Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/sqlserver\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-19T21:00:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-19T17:47:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Drew Skwiers-Koballa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:site\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Drew Skwiers-Koballa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/drew-skwiers-koballa\/\",\"@type\":\"Person\",\"@name\":\"Drew Skwiers-Koballa\"}],\"headline\":\"Recent updates for Data-Tier Application Framework and SqlPackage\",\"datePublished\":\"2021-07-19T21:00:03+00:00\",\"dateModified\":\"2024-04-19T17:47:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/\"},\"wordCount\":643,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/\",\"name\":\"Recent updates for Data-Tier Application Framework and SqlPackage - Microsoft SQL Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\"},\"datePublished\":\"2021-07-19T21:00:03+00:00\",\"dateModified\":\"2024-04-19T17:47:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Recent updates for Data-Tier Application Framework and SqlPackage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"name\":\"Microsoft SQL Server Blog\",\"description\":\"Official News from Microsoft\u2019s Information Platform\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\",\"name\":\"Microsoft SQL Server Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft SQL Server Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.facebook.com\/sqlserver\",\"https:\/\/x.com\/SQLServer\",\"https:\/\/www.youtube.com\/user\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Recent updates for Data-Tier Application Framework and SqlPackage - Microsoft SQL Server Blog","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.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/","og_locale":"en_US","og_type":"article","og_title":"Recent updates for Data-Tier Application Framework and SqlPackage - Microsoft SQL Server Blog","og_description":"In this article, we will cover some recent changes to the Data-Tier Application Framework (DacFx) and SqlPackage.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2021-07-19T21:00:03+00:00","article_modified_time":"2024-04-19T17:47:18+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png","type":"image\/png"}],"author":"Drew Skwiers-Koballa","twitter_card":"summary_large_image","twitter_creator":"@SQLServer","twitter_site":"@SQLServer","twitter_misc":{"Written by":"Drew Skwiers-Koballa","Est. reading time":"3 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/drew-skwiers-koballa\/","@type":"Person","@name":"Drew Skwiers-Koballa"}],"headline":"Recent updates for Data-Tier Application Framework and SqlPackage","datePublished":"2021-07-19T21:00:03+00:00","dateModified":"2024-04-19T17:47:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/"},"wordCount":643,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/","name":"Recent updates for Data-Tier Application Framework and SqlPackage - Microsoft SQL Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website"},"datePublished":"2021-07-19T21:00:03+00:00","dateModified":"2024-04-19T17:47:18+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2021\/07\/19\/recent-updates-for-data-tier-application-framework-and-sqlpackage\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Recent updates for Data-Tier Application Framework and SqlPackage"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","name":"Microsoft SQL Server Blog","description":"Official News from Microsoft\u2019s Information Platform","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization","name":"Microsoft SQL Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft SQL Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/sqlserver","https:\/\/x.com\/SQLServer","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/35373"}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/users\/6110"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/comments?post=35373"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/35373\/revisions"}],"predecessor-version":[{"id":50706,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/35373\/revisions\/50706"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=35373"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=35373"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=35373"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=35373"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=35373"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=35373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}