{"id":1242,"date":"2020-02-03T12:48:53","date_gmt":"2020-02-03T15:48:53","guid":{"rendered":"http:\/\/thesqltimes.com\/blog\/?p=1242"},"modified":"2020-02-03T14:01:36","modified_gmt":"2020-02-03T17:01:36","slug":"dba-shell-3","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2020\/02\/03\/dba-shell-3\/","title":{"rendered":"DBA Shell 3: Instalando o SQL Server com Powershell"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Muito \u00fatil!\" data-post-id=\"1242\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><\/div><div class=\"seriesmeta\">Post 3\/3. Este post \u00e9 parte da s\u00e9rie: <a href=\"https:\/\/thesqltimes.com\/blog\/series\/dba-shell\/\" class=\"series-247\" title=\"DBA Shell\">DBA Shell<\/a>\r\n<\/div>\r\n<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de Leitura:<\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p>Instalar o SQL Server \u00e9 uma tarefa essencial que qualquer DBA deve saber fazer. E existem v\u00e1rias maneiras de fazer isso.<\/p>\n<p>A mais comum \u00e9 usar a interface gr\u00e1fica! Por\u00e9m, esta maneira pode n\u00e3o ser a mais r\u00e1pida devido ao tempo que a mesma demora para carregar e \u00e0 quantidade de intera\u00e7\u00f5es que voc\u00eas precisa fazer! E tamb\u00e9m, j\u00e1 se perguntou como seria chato se voc\u00ea precisasse instalar muitas inst\u00e2ncias de uma s\u00f3 vez?<\/p>\n<figure id=\"attachment_1253\" aria-describedby=\"caption-attachment-1253\" style=\"width: 837px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1253 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383b87339c5.png\" alt=\"\" width=\"837\" height=\"751\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383b87339c5.png 837w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383b87339c5-300x269.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383b87339c5-768x689.png 768w\" sizes=\"auto, (max-width: 837px) 100vw, 837px\" \/><figcaption id=\"caption-attachment-1253\" class=\"wp-caption-text\">Minhas inst\u00e2ncias de testes, instaladas com o script deste post<\/figcaption><\/figure>\n<p>Ao contr\u00e1rio do que muitos pensam, o SQL Server permite que voc\u00ea fa\u00e7a a instala\u00e7\u00e3o via linha de comando, e posui uma s\u00e9rie de par\u00e2metros que voc\u00ea pode enviar para o <strong><em>setup.exe<\/em><\/strong><br \/>\nA documenta\u00e7\u00e3o completa se encontra em:\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/install-windows\/install-sql-server-from-the-command-prompt?view=sql-server-ver15\">https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/install-windows\/install-sql-server-from-the-command-prompt?view=sql-server-ver15<\/a><\/p>\n<p>Mesmo usando o <strong><em>setup.exe<\/em><\/strong>, voc\u00ea poderia gastar tanto tempo quanto a interface, ou at\u00e9 mais! J\u00e1 que s\u00e3o tantas op\u00e7\u00f5es para escolher!<\/p>\n<p>Para facilitar nossa vida, desenvolvi um script chamado <a href=\"https:\/\/raw.githubusercontent.com\/rrg92\/psstore\/master\/SqlServer\/Install-SQLServer.ps1\">Install-SQLServer<\/a>.<\/p>\n<p>Eu tenho usado este script h\u00e1 alguns anos, e venho constantemente evoluindo o mesmo. O objetivo \u00e9 facilitar ao m\u00e1ximo a sua vida, pedindo o m\u00ednimo de informa\u00e7\u00e3o poss\u00edvel.<\/p>\n<p>Dentre as v\u00e1rias features deste script, destaco as seguinte:<\/p>\n<ul>\n<li>Possui uma s\u00e9rie de valores default para maioria dos par\u00e2metros, diminuindo suas intera\u00e7\u00f5es.\n<ul>\n<li>Voc\u00ea pode escolher as conta de servi\u00e7os, collation, diret\u00f3rio de instala\u00e7\u00e3o, nome da inst\u00e2ncia, etc.<\/li>\n<\/ul>\n<\/li>\n<li>Em caso de erros, l\u00ea o error log gerado pelo instalador para voc\u00ea, facilitando a sua vida na hora de encontrar\u00a0 as causas da falha<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Como instalar<\/strong><\/p>\n<ul>\n<li>Baixe o seguinte arquivo <a href=\"https:\/\/raw.githubusercontent.com\/rrg92\/psstore\/master\/SqlServer\/Install-SQLServer.ps1\">Install-SQLServer<\/a>\n<ul>\n<li>Talvez voc\u00ea tenha que clicar com o bot\u00e3o direito do mouse no seu navegador e escolher &#8220;salvar como&#8221;.<\/li>\n<li>Salve como<strong> Install-SQLServer.ps1<\/strong><\/li>\n<li>Copie o arquivo para o servidor onde ir\u00e1 realizar a instala\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Prepara\u00e7\u00e3o para a instala\u00e7\u00e3o<\/strong><\/p>\n<p>Como uma instala\u00e7\u00e3o qualquer, incluindo interface gr\u00e1fica, voc\u00ea tamb\u00e9m precisa se preparar:<\/p>\n<ul>\n<li>Voc\u00ea precisar ter o diret\u00f3rio do instalador dispon\u00edvel! (Para os exemplos deste artigo, considere E:\\)\n<ul>\n<li>Se a m\u00eddia estiver em formato .iso, voc\u00ea deve baix\u00e1-la e mandar montar (o pr\u00f3prio Windows faz isso, basta clicar com o bot\u00e3o direito no arquivo)<\/li>\n<\/ul>\n<\/li>\n<li>Configura\u00e7\u00e3o da inst\u00e2ncia:\n<ul>\n<li>Senha\u00a0do sa<\/li>\n<li>Nome e senha da conta de servi\u00e7o (caso queria usar uma diferente da padr\u00e3o do instalador)<\/li>\n<li>Nome da inst\u00e2ncia (caso n\u00e3o seja uma inst\u00e2ncia default)<\/li>\n<li>Diret\u00f3rio de instala\u00e7\u00e3o dos bin\u00e1rios (caso seja diferente do padr\u00e3o do instalador)<\/li>\n<li><strong><strong>Collation (caso n\u00e3o seja Latin1_General_CI_AS, que \u00e9 o padr\u00e3o do script)<\/strong><\/strong><\/li>\n<\/ul>\n<\/li>\n<li>Garanta que o powershell esteja liberado para execu\u00e7\u00e3o de script\n<ul>\n<li>A configura\u00e7\u00e3o default do powershell \u00e9 n\u00e3o permitir a execu\u00e7\u00e3o de scripts.<\/li>\n<li>Voc\u00ea pode contornar isso de v\u00e1rias formas, apresento uma delas:\n<ul>\n<li>Mude a pol\u00edtica (voc\u00ea precisar ser Administrador)\n<pre class=\"lang:ps decode:true\">Set-ExecutionPolicy ByPass<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Um passo a passo<\/strong><\/p>\n<ol>\n<li>Suponha que tenha copiado para C:\\temp de algum servidor e queria instalar uma inst\u00e2ncia nomeada chamada PROD01<\/li>\n<li>Abra o powershell (garanta que pode executar scripts)<\/li>\n<li>Mude o diret\u00f3rio atual para o diret\u00f3rio onde copiou o script:\n<pre class=\"lang:ps decode:true \">cd C:\\temp<\/pre>\n<\/li>\n<li>Digite o seguinte comando (repare que o ponto e a barra no in\u00edcio do comando devem existir):\n<pre class=\"lang:ps decode:true\">.\\Install-SQLServer.ps1 -Setup E:\\ -AddCurrentAsAdmin -InstanceName PROD01 -LoadProductKey<\/pre>\n<p>No comando acima, voc\u00ea ir\u00e1 instalar um SQL Server cujo instalador se encontra em E:\\, e o nome da inst\u00e2ncia ser\u00e1 PROD01.<\/p>\n<ul>\n<li>-Setup especifica o caminho para o diret\u00f3rio do instalador<\/li>\n<li>O par\u00e2metro -AddCurrentAsAdmin adiciona o usu\u00e1rio que est\u00e1 instalando como sysadmin<\/li>\n<li>-InstanceName \u00e9 o nome da inst\u00e2ncia<\/li>\n<li>-LoadProductKey faz o script procurar a product key dentro do diret\u00f3rio do instalador<br \/>\n<strong>Lembre-se: A vers\u00e3o e edi\u00e7\u00e3o da inst\u00e2ncia a ser instalada vai depender do instalador que voc\u00ea disponibilizou!<\/strong><\/li>\n<\/ul>\n<\/li>\n<li>Na primeira execu\u00e7\u00e3o, o script ir\u00e1 pedir a senha do sa. A conta de servi\u00e7o usada ser\u00e1 a padr\u00e3o do instalador (o par\u00e2metro -ServiceAccount n\u00e3o foi especificado)\n<p id=\"fXRmOje\"><img loading=\"lazy\" decoding=\"async\" width=\"869\" height=\"356\" class=\"alignnone size-full wp-image-1245 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3837cc17543.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3837cc17543.png 869w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3837cc17543-300x123.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3837cc17543-768x315.png 768w\" sizes=\"auto, (max-width: 869px) 100vw, 869px\" \/><\/p>\n<p>&nbsp;<\/li>\n<li>A sa\u00edda do comando acima ser\u00e1 algo semelhante a esta:\n<p id=\"ZQTLrlp\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"649\" class=\"alignnone size-full wp-image-1246 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383827e070f.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383827e070f.png 876w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383827e070f-300x222.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383827e070f-768x569.png 768w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/p>\n<\/li>\n<li>Por padr\u00e3o, o comando exibe um resumo dos par\u00e2metros que ser\u00e3o enviado ao <strong>setup.exe<\/strong>!<br \/>\nPara que o instalador inicie de verdade, repita o comando utilizando o par\u00e2metro <strong>-Execute<\/strong>:<\/p>\n<pre class=\"lang:ps decode:true \">.\\Install-SQLServer.ps1 -AddCurrentAsAdmin -LoadProductKey -Setup E:\\ -InstanceName PROD01 -Execute<\/pre>\n<p id=\"RlBrvXG\"><img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"108\" class=\"alignnone size-full wp-image-1247 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838966cc76.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838966cc76.png 842w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838966cc76-300x38.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838966cc76-768x99.png 768w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/><\/p>\n<p>O progresso ser\u00e1 exibido:<\/p>\n<p id=\"vZVVhbK\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"144\" class=\"alignnone size-full wp-image-1248 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838b8388c6.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838b8388c6.png 883w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838b8388c6-300x49.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3838b8388c6-768x125.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/p>\n<\/li>\n<li>Caso haja erros durante a instala\u00e7\u00e3o, o script ir\u00e1 reportar:\n<p id=\"dbZWMMW\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"276\" class=\"alignnone size-full wp-image-1250 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3839643a75c.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3839643a75c.png 846w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3839643a75c-300x98.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e3839643a75c-768x251.png 768w\" sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><\/p>\n<\/li>\n<li>Caso saia tudo certo, voc\u00ea receber\u00e1 este resultado:\n<p id=\"MljqyqZ\"><img loading=\"lazy\" decoding=\"async\" width=\"740\" height=\"95\" class=\"alignnone size-full wp-image-1260 \" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383fabed9a5.png\" alt=\"\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383fabed9a5.png 740w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/02\/img_5e383fabed9a5-300x39.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Outros exemplos de par\u00e2metros:<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Inst\u00e2ncia DEFAULT<br \/>\nPara uma inst\u00e2ncia DEFAULT, basta retirar o par\u00e2metro &#8220;-InstanceName&#8221;<\/p>\n<pre class=\"lang:ps decode:true \">.\\Install-SQLServer -AddCurrentAsAdmin -LoadProductKey -Setup E:\\ \u00a0-Execute<\/pre>\n<\/li>\n<li>Especificando uma Product key<br \/>\nO par\u00e2metro -ProductKey deve ser usado quando quiser especificar a chave de ativa\u00e7\u00e3o.<\/p>\n<pre class=\"lang:ps decode:true \">.\\Install-SQLServer -AddCurrentAsAdmin -ProductKey \"0000-1111-2222-33333-44444\" -Setup E:\\ \u00a0-Execute<\/pre>\n<p><strong>\u00a0<\/strong><\/li>\n<li>Especificando uma conta de servi\u00e7o de dom\u00ednio<br \/>\nO par\u00e2metro -ServiceAccount\u00a0 permite especificar a conta de servi\u00e7o. Na primeira execu\u00e7\u00e3o, ele ir\u00e1 solicitar a senha.<\/p>\n<pre class=\"lang:ps decode:true \">.\\Install-SQLServer -AddCurrentAsAdmin\u00a0 -Setup E:\\\u00a0 -ServiceAccount \"Dominio\\sqlserver\"\u00a0 -Execute<\/pre>\n<p>O script tamb\u00e9m ir\u00e1 validar se a conta \u00e9 v\u00e1lida! Caso encontre erros, os mesmos ser\u00e3o reportados e a instala\u00e7\u00e3o n\u00e3o ir\u00e1 proceder.<\/li>\n<li>Especificando uma conta de servi\u00e7o local (A conta local \u00e9 constru\u00edda com o nome da m\u00e1quina)\n<pre class=\"lang:ps decode:true \">.\\Install-SQLServer -AddCurrentAsAdmin\u00a0 -Setup E:\\\u00a0 -ServiceAccount \"NomeMaquina\\sqlserver\"\u00a0 -Execute<\/pre>\n<p>&nbsp;<\/li>\n<li>Especificando o collation\n<pre class=\"lang:ps decode:true \">.\\Install-SQLServer -AddCurrentAsAdmin\u00a0 -Setup E:\\\u00a0 -ServerCollation\u00a0\u00a0Latin1_General_BIN -Execute<\/pre>\n<p>&nbsp;<\/li>\n<\/ul>\n<p>Para obter mais ajuda consulte o help do arquivo ou os coment\u00e1rios.<\/p>\n<p>Se encontrar algum problema,<a href=\"https:\/\/github.com\/rrg92\/psstore\/issues\"> submeta uma issue no reposit\u00f3rio do github<\/a><\/p>\n<p>E lembre-se, apesar de facilitar a sua vida, sempre planeje e revise sua instala\u00e7\u00e3o, principalmente em ambientes de produ\u00e7\u00e3o. Utilize por sua pr\u00f3pria conta e risco.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"seriesmeta\">This entry is part 3 of 3 in the series <a href=\"https:\/\/thesqltimes.com\/blog\/series\/dba-shell\/\" class=\"series-247\" title=\"DBA Shell\">DBA Shell<\/a><\/div><p>Instalar o SQL Server \u00e9 uma tarefa essencial que qualquer DBA deve saber fazer. E existem v\u00e1rias maneiras de fazer isso. A mais comum \u00e9 usar a interface gr\u00e1fica! Por\u00e9m, esta maneira pode n\u00e3o ser a mais r\u00e1pida devido ao tempo que a mesma demora para carregar e \u00e0 quantidade de intera\u00e7\u00f5es que voc\u00eas precisa&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2020\/02\/03\/dba-shell-3\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">DBA Shell 3: Instalando o SQL Server com Powershell<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1245,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"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":"","footnotes":""},"categories":[8,3,99,95,1],"tags":[273,276,275,272,96,252,274,73],"series":[247],"class_list":["post-1242","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administracao","category-banco-de-dados-2","category-patching","category-powershell-windows","category-uncategorized","tag-automation","tag-instalacao","tag-instalador","tag-install","tag-powershell","tag-script","tag-setup","tag-sql-server","series-dba-shell"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/comments?post=1242"}],"version-history":[{"count":14,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1242\/revisions"}],"predecessor-version":[{"id":1264,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1242\/revisions\/1264"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/1245"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=1242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=1242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=1242"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=1242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}