<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nery Brugnoni</title>
    <description>The latest articles on DEV Community by Nery Brugnoni (@brugner).</description>
    <link>https://dev.to/brugner</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F225860%2Fb5b7df80-9a9f-4c67-8860-2937c1fe0f82.jpg</url>
      <title>DEV Community: Nery Brugnoni</title>
      <link>https://dev.to/brugner</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brugner"/>
    <language>en</language>
    <item>
      <title>Running Azure SQL Edge on Docker on macOS M1</title>
      <dc:creator>Nery Brugnoni</dc:creator>
      <pubDate>Fri, 02 Dec 2022 02:13:06 +0000</pubDate>
      <link>https://dev.to/cloudx/running-azure-sql-edge-on-docker-on-macos-m1-3lf5</link>
      <guid>https://dev.to/cloudx/running-azure-sql-edge-on-docker-on-macos-m1-3lf5</guid>
      <description>&lt;p&gt;In 2020 Apple decided to replace the Intel chipsets with one of their own making, that have been leading performance benchmarks ever since. But these chips are based on the &lt;strong&gt;ARM architecture&lt;/strong&gt; instead of the widespread x64 used by its predecesor so, if we want to run software natively and take advantage of all of its power, programs should be ARM ready. This also goes for &lt;strong&gt;Docker&lt;/strong&gt; images.&lt;/p&gt;

&lt;p&gt;Unfortunately, as of November 2022, Microsoft hasn't released yet a fully fledged SQL Server Docker image for ARM processors. What can we do about it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Azure SQL Edge
&lt;/h2&gt;

&lt;p&gt;The alternative is &lt;a href="https://azure.microsoft.com/en-us/products/azure-sql/edge/" rel="noopener noreferrer"&gt;Azure SQL Edge&lt;/a&gt;, a lighter version of the popular database engine based on the ARM architecture. Even though this version is limited in order to run better on IoT devices, it comes with some additional features like built-in machine learning and data streaming capabilities. Let's see how to run a container with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Docker
&lt;/h2&gt;

&lt;p&gt;There are many ways to install Docker. I prefer downloading Docker Desktop from their &lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;official site&lt;/a&gt;. Remember to choose the &lt;strong&gt;Apple Chip&lt;/strong&gt; version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fre8lbols9hfwierz2pbt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fre8lbols9hfwierz2pbt.png" alt="Download Docker Desktop" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the installation is done, open Docker Desktop. You'll be welcomed by a home page that shows no containers running.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4mleofj0qzds3p0cj7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4mleofj0qzds3p0cj7l.png" alt="Docker Desktop" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Azure SQL Edge on a container
&lt;/h2&gt;

&lt;p&gt;Open your favorite terminal and run the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; azuresqledge &lt;span class="nt"&gt;--cap-add&lt;/span&gt; SYS_PTRACE &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'ACCEPT_EULA=1'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'MSSQL_SA_PASSWORD=Str#ng_Passw#rd'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 57000:1433 &lt;span class="se"&gt;\&lt;/span&gt;
   mcr.microsoft.com/azure-sql-edge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important parameters to notice here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ACCEPT_EULA&lt;/strong&gt;: accepts the license agreement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MSSQL_SA_PASSWORD&lt;/strong&gt;: sets the password for the sa user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;p&lt;/strong&gt;: publishes the container's port to the host, in this case 1433 where SQL runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;name&lt;/strong&gt;: any name you want to use to identify this container.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After running these commands successfully, go to Docker Desktop again and you'll see the newly created container up and running.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6eilpad0yoggi60lpjws.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6eilpad0yoggi60lpjws.png" alt="Container running" width="800" height="78"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting to the server
&lt;/h2&gt;

&lt;p&gt;In order to connect to the database server, download &lt;a href="https://learn.microsoft.com/sql/azure-data-studio/download-azure-data-studio#download-azure-data-studio" rel="noopener noreferrer"&gt;Azure Data Studio&lt;/a&gt; &lt;strong&gt;Apple Silicon&lt;/strong&gt; version.&lt;/p&gt;

&lt;p&gt;Click on &lt;code&gt;New Connection&lt;/code&gt; and fill in the details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdemqmkie715rqa9300m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdemqmkie715rqa9300m.png" alt="Connecting through Azure Data Studio" width="800" height="829"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connection type&lt;/strong&gt;: Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server&lt;/strong&gt;: localhost,57000 (where 57000 is the port that the container published)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication type:&lt;/strong&gt; SQL Login&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User name&lt;/strong&gt;: sa&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password&lt;/strong&gt;: Str#ng_Passw#rd (the password you set previously)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encrypt&lt;/strong&gt;: False&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust server certificate&lt;/strong&gt;: True&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;connection&lt;/strong&gt; has been successfully &lt;strong&gt;established&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57kquou2ck8l7p6tx88z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57kquou2ck8l7p6tx88z.png" alt="Azure Data Studio connected successfully" width="612" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a database
&lt;/h2&gt;

&lt;p&gt;Open a new query window and run the following query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Create a new database called 'dev_testdb1'&lt;/span&gt;
&lt;span class="c1"&gt;-- Connect to the 'master' database to run this snippet&lt;/span&gt;
&lt;span class="n"&gt;USE&lt;/span&gt; &lt;span class="n"&gt;master&lt;/span&gt;
&lt;span class="k"&gt;GO&lt;/span&gt;
&lt;span class="c1"&gt;-- Create the new database if it does not exist already&lt;/span&gt;
&lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;databases&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="s1"&gt;'dev_testdb1'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;dev_testdb1&lt;/span&gt;
&lt;span class="k"&gt;GO&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the left side, &lt;strong&gt;right&lt;/strong&gt; &lt;strong&gt;click&lt;/strong&gt; on &lt;strong&gt;databases&lt;/strong&gt; and click on &lt;strong&gt;refresh&lt;/strong&gt; to see the newly created database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faklu46d8klf312f2ynj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faklu46d8klf312f2ynj5.png" alt="Database created" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, open Docker Desktop once more, click on the container and go to the &lt;strong&gt;logs&lt;/strong&gt; tab to confirm that the database has been created on it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16otzz278o8inf54q8fn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16otzz278o8inf54q8fn.png" alt="Database created log" width="800" height="149"&gt;&lt;/a&gt;&lt;br&gt;
Almost at the bottom, the message &lt;strong&gt;Starting up database 'dev_testdb1'&lt;/strong&gt; can be read. Excellent!&lt;/p&gt;

&lt;p&gt;That's all!&lt;/p&gt;

</description>
      <category>azuresqledge</category>
      <category>docker</category>
      <category>m1</category>
      <category>arm</category>
    </item>
  </channel>
</rss>
