{"id":9917,"date":"2017-03-31T11:28:06","date_gmt":"2017-03-31T09:28:06","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/"},"modified":"2017-03-31T11:28:06","modified_gmt":"2017-03-31T09:28:06","slug":"sql-server-on-linux-and-experimental-flexible-architecture","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/","title":{"rendered":"SQL Server on Linux and experimental Flexible Architecture"},"content":{"rendered":"<p>In this blog post let\u2019s talk a little bit about SQL Server optimal installation on the Linux file system. This is probably one of the first considerations we will have as a database administrator. Actually basic installation of SQL Server can be resumed to use yum command and let the SQL Server installer place all related files on the file system. But in a production environment, the story will be different and we will have to follow best practices. In fact, Microsoft guidelines already exist in Windows world and concern mainly placement of system \/ user database files and tempdb as well.<\/p>\n<p>But what about Linux? In my opinion, the game is not so different and existing database file placement rules also apply on Linux. We don\u2019t work with drive letters on Linux but it doesn\u2019t matter because in some cases we already use the same mount point concept.<\/p>\n<p>How to start and how to achieve an optimal placement were the questions in my head since the last meetup I attended about MongoDB and organized by my colleagues <a href=\"https:\/\/www.dbi-services.com\/blog\/author\/mehdi-bada\/\" target=\"_blank\" rel=\"noopener noreferrer\">Medhi Bada<\/a> and Eric Dusquesnoy.<\/p>\n<p>During the meeting, they talked about MongoDB installation according the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Optimal_Flexible_Architecture\" target=\"_blank\" rel=\"noopener noreferrer\">OFA<\/a> architecture initiated by Oracle and which has many similar aspects with <a href=\"https:\/\/en.wikipedia.org\/wiki\/Optimal_Flexible_Architecture\" target=\"_blank\" rel=\"noopener noreferrer\">FHS<\/a> on Unix system. Another interesting thing I\u2019ve realized after discussing with my colleagues is that we also propose the same based-model for other SGBDs like MySQL or PostgreSQL (with some adjustments in the respect of their respective context).<\/p>\n<p>In a nutshell, OFA architecture provides the following interesting things:<\/p>\n<ul>\n<li>A logical layout for the databases that helps DBAs to manage their system. The idea here is to provide a predictable and consistent file naming structure to manage and to deal easily with issues such as adding hardware, installing new instance etc\u2026<\/li>\n<li>Preventing performance bottlenecks by distributing I\/O across enough disks. For instance, we may separate group of entities that will contend for disk resources. We may think here about separating data and log files, data files in different filegroups or dedicated tempdb to its own storage path as well.<\/li>\n<li>Maximizing database reliability in case of disk failure<\/li>\n<\/ul>\n<p>But you may wonder why to scale the existing SQL Server best practices to the OFA standard?<\/p>\n<p>First of all, let\u2019s say that existing Microsoft best practices, in many respects, resembles to OFA. Then providing a uniform approach to customers (Oracle, MySQL, PostgreSQL, MongoDB and SQL Server) about best practices may help to contribute to a true immersion of SQL Server on Linux. From a customer perspective, we may provide guidelines on an already widely architecture standard known in Linux world. This is, at least, the way I see it.<\/p>\n<p>So just to be clear, the next part of this blog is purely experimental and it doesn\u2019t pretend to replace any future guideline that will be provided by Microsoft.<\/p>\n<p>Before getting to the heart of the matter, let\u2019s get the files associated to the <em>mssql-server<\/em> package. I continue to use the CentOS distribution for my demo but you may easy apply the same with other distributions.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[root@sql mssqlserver]# rpm -qpl mssql-server-14.0.405.200-1.x86_64.rpm\n\/opt\/mssql\/bin\n\/opt\/mssql\/bin\/compress-dump.sh\n\/opt\/mssql\/bin\/generate-core.sh\n\/opt\/mssql\/bin\/mssql-conf\n\/opt\/mssql\/bin\/paldumper\n\/opt\/mssql\/bin\/sqlpackage\n\/opt\/mssql\/bin\/sqlservr\n\/opt\/mssql\/lib\n\/opt\/mssql\/lib\/libc++.so.1\n\/opt\/mssql\/lib\/libc++abi.so.1\n\/opt\/mssql\/lib\/libjemalloc.so.1\n\/opt\/mssql\/lib\/libsqlvdi.so\n\/opt\/mssql\/lib\/libunwind.so.8\n\/opt\/mssql\/lib\/mssql-conf\n\/opt\/mssql\/lib\/mssql-conf\/checkinstall.sh\n\/opt\/mssql\/lib\/mssql-conf\/checkrunninginstance.sh\n\/opt\/mssql\/lib\/mssql-conf\/collations.txt\n\/opt\/mssql\/lib\/mssql-conf\/disableservice.sh\n\/opt\/mssql\/lib\/mssql-conf\/enableservice.sh\n\/opt\/mssql\/lib\/mssql-conf\/mssql-conf.py\n\/opt\/mssql\/lib\/mssql-conf\/mssqlconfhelper.py\n\/opt\/mssql\/lib\/mssql-conf\/mssqlsettings.py\n\/opt\/mssql\/lib\/mssql-conf\/mssqlsettingsmanager.py\n\/opt\/mssql\/lib\/mssql-conf\/sapassword.sh\n\/opt\/mssql\/lib\/mssql-conf\/set-collation.sh\n\/opt\/mssql\/lib\/mssql-conf\/startservice.sh\n\/opt\/mssql\/lib\/mssql-conf\/stopservice.sh\n\/opt\/mssql\/lib\/sqlpackage.sfp\n\/opt\/mssql\/lib\/sqlservr.sfp\n\/opt\/mssql\/lib\/system.certificates.sfp\n\/opt\/mssql\/lib\/system.common.sfp\n\/opt\/mssql\/lib\/system.netfx.sfp\n\/opt\/mssql\/lib\/system.sfp\n\/usr\/lib\/systemd\/system\/mssql-server.service\n\/usr\/share\/doc\/mssql-server\/LICENSE.TXT\n\/usr\/share\/doc\/mssql-server\/THIRDPARTYNOTICES.TXT\n\/usr\/share\/man\/man1\/mssql-conf.1.gz\n\/usr\/share\/man\/man1\/sqlpackage.1.gz\n\/usr\/share\/man\/man1\/sqlservr.1.gz\n\n<\/pre>\n<p>From the above output we may find out a bunch of files that are part of the proper functioning of SQL Server. For example, we may notice different script files (either bash and python scripts files), libraries and sfp files (stands for Singe File Package &#8211; thanks <span style=\"text-decoration: underline\"><span style=\"color: #0084b4\"><span class=\"username u-dir\" dir=\"ltr\">@<b class=\"u-linkComplex-target\">slava_oks<\/b><\/span><\/span><\/span>), man page files and finally the sqlservr binary.<\/p>\n<p>Most of these files are installed in the main hierarchy <strong>\/opt\/mssql\/<\/strong> with the following specific items<\/p>\n<ul>\n<li>\/opt\/mssql\/bin\/ (binary files and SQL Server crash dump generation scripts)<\/li>\n<li>\/opt\/mssql\/lib (sqlserver libraries and sfp files)<\/li>\n<li>\/opt\/mssql\/lib\/mssql-conf (python and bash scripts)<\/li>\n<\/ul>\n<p>In addition, installing a SQL Server instance reveals an additional hierarchy <strong>\/var\/opt\/mssql<\/strong> with the followings items :<\/p>\n<ul>\n<li>data folder = default folder for database data and transaction log files. By the way, system and tempdb database files are located here by default. At the moment of writing this blog, SQL Server is in CTP 1.4 and moving system databases are not supported (by using mssql-conf utility)\u00a0but we may expect to see this limit removed in the future<\/li>\n<li>log folder = log files are stored here. We may retrieve logs related to SQL Server engine (errorlog files), to the SQL Server agent (SQLAGENT.OUT), to the default SQL Server trace and HK engine extended event.<\/li>\n<li>secret folder = contains the machine.key file used by the SQL Server engine or potential other files that come with high-availability architectures to store pacemaker credentials for example.<\/li>\n<li>conf file = Stores the default location files for user database files and dump files as well.<\/li>\n<\/ul>\n<p>The last one &#8211; <strong>mssql.conf <\/strong>\u2013 has drawn my attention. According to my tests, it is possible to modify this file manually without getting sides effects but maybe to take with a pinch of salt at this stage.<\/p>\n<p>So here my flexible architecture version for SQL Server:<\/p>\n<ul>\n<li>Binary structure<\/li>\n<\/ul>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">mkdir -p \/u00\/app\/sqlserver\nmkdir -p \/u00\/app\/sqlserver\/product\/14\/mssqlserver\nmkdir -p \/u00\/app\/sqlserver\/local\/dmk\nmkdir -p \/u00\/app\/sqlserver\/local\/mssqltools\nmkdir -p \/u00\/app\/sqlserver\/admin\/mssqlserver\/etc\nmkdir -p \/u00\/app\/sqlserver\/admin\/mssqlserver\/log\nmkdir -p \/u00\/app\/sqlserver\/admin\/mssqlserver\/dump\n\nln -s \/opt\/mssql\/bin \/u00\/app\/sqlserver\/product\/14\/mssqlserver\nln -s \/var\/opt\/mssql\/mssql.conf \/u00\/app\/sqlserver\/admin\/mssqlserver\/etc\/\nln -s \/var\/opt\/mssql\/log\/ \/u00\/app\/sqlserver\/admin\/mssqlserver\/log \n\n<\/pre>\n<p>Products file consists of SQL Server software that are supplied on the media \/ package provided by Microsoft.<\/p>\n<p>Administrative files are files containing data about the instance, including SQL Server and SQL Agent error log files, default traces or HK engine extended event files server process diagnostic and finally instance parameter files like <strong>mssql.conf<\/strong> file.<\/p>\n<ul>\n<li>Database structure<\/li>\n<\/ul>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">mkdir -p \/u01\/sqlserverdata\/mssqlserver\nmkdir -p \/u02\/sqlserverlog\/mssqlserver\nmkdir -p \/u03\/sqlservertempdb\/mssqlserver\nmkdir -p \/u98\/sqlserver\/backup\/mssqlserver<\/pre>\n<p>Then let\u2019s configure the correct permissions on the new hierarchy folders<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">chown -R mssql:mssql \/u01\/sqlserverdata\/mssqlserver\nchmod -R 750 \/u01\/sqlserverdata\/mssqlserver\nchown -R mssql:mssql \/u02\/sqlserverlog\/mssqlserver\nchmod -R 750 \/u02\/sqlserverlog\/mssqlserver\nchown -R mssql:mssql \/u03\/sqlservertempdb\/mssqlserver\nchmod -R 750 \/u03\/sqlservertempdb\/mssqlserver\nchown -R mssql:mssql \/u98\/sqlserver\/backup\/mssqlserver\nchmod -R 750 \/u98\/sqlserver\/backup\/mssqlserver<\/pre>\n<p>After configuring the permissions let\u2019s change default path parameters from the mssql-config utility<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\/opt\/mssql\/bin\/mssql-conf set filelocation.defaultdatadir \/u01\/sqlserverdata\/mssqlserver \n\/opt\/mssql\/bin\/mssql-conf set filelocation.defaultlogdir \/u02\/sqlserverlog\/mssqlserver \n\/opt\/mssql\/bin\/mssql-conf set filelocation.defaultbackupdir \/u98\/sqlserver\/backup\/mssqlserver\n\/opt\/mssql\/bin\/mssql-conf set filelocation.defaultdumpdir \/u00\/app\/sqlserver\/admin\/mssqlserver\/dump<\/pre>\n<p>&nbsp;<\/p>\n<p>And let\u2019s move\u00a0system database files (except the master database) by connecting to SQL Server (moving tempdb is supported since the CTP 1.4).<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">DECLARE @sql NVARCHAR(MAX) = N'';\nDECLARE @path_name NVARCHAR(MAX) = N'\/u03\/sqlservertempdb\/mssqlserver\/';\n<\/pre>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">DECLARE @sql NVARCHAR(MAX) = N'';\nDECLARE @path_name NVARCHAR(MAX) = N'\/u03\/sqlservertempdb\/mssqlserver\/';\n\nSELECT \n\t@sql += N'ALTER DATABASE [tempdb] MODIFY FILE (NAME = ' + name + ', FILENAME = ''' \n\t        + @path_name + REVERSE(SUBSTRING(REVERSE(REPLACE(physical_name, 'C:', '')), 1 , CHARINDEX('', REVERSE(REPLACE(physical_name, 'C:', ''))) - 1)) + ''\n\t\t\t+ ''')' + CHAR(13)\nFROM sys.master_files\nWHERE database_id = 2;\n\nSET @path_name = N'\/u01\/sqlserverdata\/mssqlserver\/';\n\nSELECT \n\t@sql += N'ALTER DATABASE ' + QUOTENAME(DB_NAME(database_id)) + ' MODIFY FILE (NAME = ' + name + ', FILENAME = ''' \n\t        + @path_name + REVERSE(SUBSTRING(REVERSE(REPLACE(physical_name, 'C:', '')), 1 , CHARINDEX('', REVERSE(REPLACE(physical_name, 'C:', ''))) - 1)) + ''\n\t\t\t+ ''')' + CHAR(13)\nFROM sys.master_files\nWHERE database_id &lt;= 4 \n\tAND database_id NOT IN (1, 2)\n\tAND type_desc = 'ROWS';\n\nSET @path_name = N'\/u02\/sqlserverlog\/mssqlserver\/';\n\nSELECT \n\t@sql += N'ALTER DATABASE ' + QUOTENAME(DB_NAME(database_id)) + ' MODIFY FILE (NAME = ' + name + ', FILENAME = ''' \n\t        + @path_name + REVERSE(SUBSTRING(REVERSE(REPLACE(physical_name, 'C:', '')), 1 , CHARINDEX('', REVERSE(REPLACE(physical_name, 'C:', ''))) - 1)) + ''\n\t\t\t+ ''')' + CHAR(13)\nFROM sys.master_files\nWHERE database_id &lt;= 4 \n\tAND database_id NOT IN (1, 2)\n\tAND type_desc = 'LOG'\n\nPRINT @sql\n\nEXEC sp_executesql @sql;\nGO<\/pre>\n<p>After moving manually system database files by using\u00a0move command we may\u00a0finally restart the SQL Server instance:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">systemctl restart mssql-server<\/pre>\n<p>Moreover, we may also add to the system path the binary structure in place and then change it when a new product is installed<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">echo 'PATH=\u201d$PATH:\/u00\/app\/sqlserver\/product\/14\/mssqlserver\/bin\u201d' &gt;&gt; ~\/.bash_profile\necho 'PATH=\u201d$PATH:\/u00\/app\/sqlserver\/product\/14\/mssqlserver\/bin\u201d' &gt;&gt; ~\/.bashrc\nsource ~\/.bashrc<\/pre>\n<p>Invoking mssql-conf is pretty easy in this case as shown below:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[root@sql home]# mssql-conf [options]<\/pre>\n<p>Finally you may have have a look at the database files placement :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT \n\tDB_NAME(database_id) AS database_name,\n\tname AS logical_name,\n\tphysical_name\nFROM sys.master_files\nORDER BY database_id<\/pre>\n<p>Only master database files remain on the default location ..\u00a0I probably may use symbol links here but to be honest\u00a0I will wait on next releases to benefit from a more consistent way to move all of system databases\u00a0by using mssql-conf during the installation process.<\/p>\n<p><strong>Bottom line<\/strong><\/p>\n<p>Keep in mind that OFA architecture is very flexible and provides only guidelines and best practices. Therefore, we will be able to make adjustments over time as the version evolves. Please feel free to comment. It always be appreciated!<\/p>\n<p>See you<\/p>\n<p><span style=\"float: none;background-color: #ffffff;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px;text-transform: none\">By David Barbarin<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post let\u2019s talk a little bit about SQL Server optimal installation on the Linux file system. This is probably one of the first considerations we will have as a database administrator. Actually basic installation of SQL Server can be resumed to use yum command and let the SQL Server installer place all [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":9918,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[1055,1056,73,1057,1019],"type_dbi":[],"class_list":["post-9917","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-fhs","tag-flexible-architecture","tag-linux","tag-ofa","tag-sql-server-vnext"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Server on Linux and experimental Flexible Architecture<\/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.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server on Linux and experimental Flexible Architecture\" \/>\n<meta property=\"og:description\" content=\"In this blog post let\u2019s talk a little bit about SQL Server optimal installation on the Linux file system. This is probably one of the first considerations we will have as a database administrator. Actually basic installation of SQL Server can be resumed to use yum command and let the SQL Server installer place all [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-31T09:28:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"483\" \/>\n\t<meta property=\"og:image:height\" content=\"211\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Microsoft Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"SQL Server on Linux and experimental Flexible Architecture\",\"datePublished\":\"2017-03-31T09:28:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/\"},\"wordCount\":1095,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg\",\"keywords\":[\"FHS\",\"Flexible architecture\",\"Linux\",\"OFA\",\"SQL Server vNext\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/\",\"name\":\"SQL Server on Linux and experimental Flexible Architecture\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg\",\"datePublished\":\"2017-03-31T09:28:06+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg\",\"width\":483,\"height\":211},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server on Linux and experimental Flexible Architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\",\"name\":\"Microsoft Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"caption\":\"Microsoft Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Server on Linux and experimental Flexible Architecture","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.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server on Linux and experimental Flexible Architecture","og_description":"In this blog post let\u2019s talk a little bit about SQL Server optimal installation on the Linux file system. This is probably one of the first considerations we will have as a database administrator. Actually basic installation of SQL Server can be resumed to use yum command and let the SQL Server installer place all [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/","og_site_name":"dbi Blog","article_published_time":"2017-03-31T09:28:06+00:00","og_image":[{"width":483,"height":211,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"SQL Server on Linux and experimental Flexible Architecture","datePublished":"2017-03-31T09:28:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/"},"wordCount":1095,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg","keywords":["FHS","Flexible architecture","Linux","OFA","SQL Server vNext"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/","name":"SQL Server on Linux and experimental Flexible Architecture","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg","datePublished":"2017-03-31T09:28:06+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-120-SQL-Server-and-Flexible-architecture.jpg","width":483,"height":211},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-on-linux-and-experimental-flexible-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server on Linux and experimental Flexible Architecture"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4","name":"Microsoft Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","caption":"Microsoft Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=9917"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9917\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/9918"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9917"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}