{"id":387,"date":"2017-02-01T09:00:03","date_gmt":"2017-02-01T09:00:03","guid":{"rendered":"https:\/\/sqldoubleg.live-website.com\/?p=387"},"modified":"2017-11-28T21:28:49","modified_gmt":"2017-11-28T21:28:49","slug":"playing-with-azure-file-snapshot-backups","status":"publish","type":"post","link":"https:\/\/www.sqldoubleg.com\/es\/2017\/02\/01\/playing-with-azure-file-snapshot-backups\/","title":{"rendered":"Jugando con Azure, backups de archivos instant\u00e1neos"},"content":{"rendered":"<p>Esta semana quiero ir un paso m\u00e1s all\u00e1 en el camino de mover nuestras bases de datos a la nube y empezar a usar alguna de la funcionalidades avanzadas que ofrece Azure&nbsp;En la \u00faltima publicaci\u00f3n, exploramos c\u00f3mo mover parte de nuestras bases de datos a la nube creando un nuevo archivo en el servicio de almacenamiento de blobs de Azure, lo cual es genial, pero para ser honesto, este tipo de soluci\u00f3n h\u00edbrida podr\u00eda no darnos lo mejor de la nube.<\/p>\n<p>Uno de los motivos utilizados por Microsoft para vender su nube es que afirman que mudarse a Azure facilitar\u00e1 la forma en que mantenemos nuestras bases de datos.<\/p>\n<p>Y una de las cosas m\u00e1s importantes cuando trabajamos con bases de datos es siempre tener disponible una buena copia de seguridad en caso de que se necesite.<\/p>\n<p>Una vez nuestras bases de datos hayan crecido hasta cierto punto, simples tareas de mantenimiento como realizar una copia de seguridad pueden ser un desaf\u00edo, tomando varias horar para completar y probablemente para restaurar, lo que afectar\u00e1 nuestro RTO y por lo tanto comprometer\u00e1 nuestros SLA.<\/p>\n<p>Pero volviendo a Azure, \u00bfqu\u00e9 herramientas existen para permitirnos reducir este tiempo de recuperaci\u00f3n desde copia de seguridad? S\u00ed, era f\u00e1cil, solo hace falta mirar el t\u00edtulo de esta publicaci\u00f3n &#8230; &#8216;<strong><em>backups de archivos instant\u00e1neos<\/em><\/strong>&#8216;<\/p>\n<p>&nbsp;<br \/>\n<strong>Acabando el trabajo del \u00faltimo d\u00eda<\/strong><\/p>\n<p>Una de las limitaciones de estas copias de seguridad de archivos instant\u00e1neos (y probablemente la m\u00e1s importante) es que todos nuestros archivos de bases de datos <em><strong>deben estar almacenados en la nube<\/strong><\/em>, de modo que podemos tomar mi publicaci\u00f3n anterior como preparaci\u00f3n para lo que viene ahora.<\/p>\n<p>Para mover nuestros archivos a la nube, tenemos diferentes posibilidades, uno podr\u00eda ser el enfoque t\u00edpico en el que se nos permite pasar un tiempo inactivo.<\/p>\n<p>Utilizando la misma base de datos de la <a href=\"https:\/\/sqldoubleg.live-website.com\/es\/2017\/01\/03\/playing-with-azure-stretching-databases\/\" target=\"_blank\">\u00faltima publicaci\u00f3n<\/a>, procederemos, pero primero recordemos que ten\u00edamos una base de datos con tres archivos en local y otro almacenado en el almacenamiento de blobs de Azure. Algo asi como esto.<\/p>\n<p><a href=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2016\/12\/02_database_files.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2016\/12\/02_database_files.png\" alt=\"02_database_files\" width=\"1024\" height=\"175\" class=\"aligncenter size-full wp-image-385\" srcset=\"https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2016\/12\/02_database_files.png 1024w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2016\/12\/02_database_files-300x51.png 300w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2016\/12\/02_database_files-150x26.png 150w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Entonces los tres archivos restantes tambi\u00e9n tienen que ir a la nube.<\/p>\n<pre class=\"brush: tsql; title: ; notranslate\" title=\"\"> \r\nUSE [master]\r\nGO\r\nALTER DATABASE [stretch_test] \r\n\tMODIFY FILE (NAME = N'st_primary', FILENAME = N'https:\/\/&lt;mystorageaccountname&gt;.blob.core.windows.net\/&lt;mystorageaccountcontainername&gt;\/st_primary.mdf')\r\nGO\r\nALTER DATABASE [stretch_test] \r\n\tMODIFY FILE (NAME = N'st_user_data', FILENAME = N'https:\/\/&lt;mystorageaccountname&gt;.blob.core.windows.net\/&lt;mystorageaccountcontainername&gt;\/st_user_data.ndf')\r\nGO\r\nALTER DATABASE [stretch_test] \r\n\tMODIFY FILE (NAME = N'st_Log', FILENAME = N'https:\/\/&lt;mystorageaccountname&gt;.blob.core.windows.net\/&lt;mystorageaccountcontainername&gt;\/st_log.ldf')\r\nGO\r\n<\/pre>\n<p><a href=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/01_ALTER_DATABASE_MODIFY_FILE.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/01_ALTER_DATABASE_MODIFY_FILE.png\" alt=\"01_ALTER_DATABASE_MODIFY_FILE\" width=\"950\" height=\"150\" class=\"aligncenter size-full wp-image-389\" srcset=\"https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/01_ALTER_DATABASE_MODIFY_FILE.png 950w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/01_ALTER_DATABASE_MODIFY_FILE-300x47.png 300w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/01_ALTER_DATABASE_MODIFY_FILE-150x24.png 150w\" sizes=\"(max-width: 950px) 100vw, 950px\" \/><\/a><\/p>\n<p>Una vez que hayamos modificado nuestra base de datos, podemos poner la base de datos OFFLINE. <\/p>\n<pre class=\"brush: tsql; title: ; notranslate\" title=\"\">\r\nUSE master\r\n\r\nALTER DATABASE stretch_test SET OFFLINE WITH ROLLBACK IMMEDIATE\r\n<\/pre>\n<p>Y luego movemos los archivos al almacenamiento de blobs de Azure. Esto se puede hacer utilizando la funcionalidad de carga integrada en el almacenamiento de blobs de Azure o utilizando powershell.<\/p>\n<p>&nbsp;<br \/>\n<strong>Cargar los archivos usando Azure Portal<\/strong><\/p>\n<p>Esto es muy intuitivo, pero por las dudas.<\/p>\n<p>Deber\u00e1 ir a &#8216;Todos los recursos &rarr; Su cuenta de almacenamiento &rarr; Blobs &rarr; Su contenedor &rarr; Cargar&#8217;<\/p>\n<p>Luego encontrar\u00e1s algo como esto, donde puedes navegar tus archivos para localizarlos y subirlos<\/p>\n<p><a href=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/02_upload_files_azure_portal.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/02_upload_files_azure_portal.png\" alt=\"02_upload_files_azure_portal\" width=\"1474\" height=\"469\" class=\"aligncenter size-full wp-image-390\" srcset=\"https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/02_upload_files_azure_portal.png 1474w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/02_upload_files_azure_portal-300x95.png 300w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/02_upload_files_azure_portal-1024x326.png 1024w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/02_upload_files_azure_portal-150x48.png 150w\" sizes=\"(max-width: 1474px) 100vw, 1474px\" \/><\/a><\/p>\n<p>&nbsp;<br \/>\n<strong>**Importante para seleccionar &#8216;P\u00e1gina Blob&#8217; si no que te pase esto**<\/strong><\/p>\n<p><a href=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/03_set_online_error_block_blob.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/03_set_online_error_block_blob.png\" alt=\"03_set_online_error_block_blob\" width=\"1117\" height=\"384\" class=\"aligncenter size-full wp-image-391\" srcset=\"https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/03_set_online_error_block_blob.png 1117w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/03_set_online_error_block_blob-300x103.png 300w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/03_set_online_error_block_blob-1024x352.png 1024w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/03_set_online_error_block_blob-150x52.png 150w\" sizes=\"(max-width: 1117px) 100vw, 1117px\" \/><\/a><\/p>\n<p>&nbsp;<br \/>\nSi se pas\u00f3 esto, y has seleccionado &#8216;Block blob&#8217;, luego al tratar de poner la base de datos ONLINE, recibir\u00e9is este error.<\/p>\n<p>La \u00fanica soluci\u00f3n alternativa que encontr\u00e9 es detener el servidor (ya que la base de datos tampoco quiere desconectarse) para liberar los archivos en Azure y luego eliminarlos y cargarlos de nuevo, esta vez con el tipo de blob correcto.<\/p>\n<p>&nbsp;<br \/>\n<strong>Cargar los archivos usando Powershell<\/strong><\/p>\n<p>Podemos usar Powershell para copiar los archivos en la nube usando este ejemplo.<\/p>\n<pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\r\n# begin\r\n# Update with the name of your subscription.\r\n$SubscriptionName = &quot;YourSubscription&quot;\r\n\r\n# Update with the name of your storage account.\r\n$StorageAccountName = &quot;yourstorageaccount&quot;\r\n\r\n# Choose your location, see Get-AzureRmLocation for choices\r\n$Location = &quot;YourLocation&quot;\r\n\r\n# Update with the name of your container.\r\n$ContainerName = &quot;YourContainer&quot;\r\n\r\n# All your database files to be moved to Azure.\r\n$FilesToUpload = @(&quot;C:\\Program Files\\Microsoft SQL Server\\MSSQL13.MSSQL2016\\MSSQL\\DATA\\move_to_az\\move_to_az.mdf&quot;, \r\n                    &quot;C:\\Program Files\\Microsoft SQL Server\\MSSQL13.MSSQL2016\\MSSQL\\DATA\\move_to_az\\move_to_az_USER_DATA_1.ndf&quot;, \r\n                    &quot;C:\\Program Files\\Microsoft SQL Server\\MSSQL13.MSSQL2016\\MSSQL\\DATA\\move_to_az\\move_to_az_log.ldf&quot;)\r\n  \r\n# Update with the name of your resource group \r\n$resourceGroupName= 'YourResourceGroup'  \r\n \r\nLogin-AzureRmAccount   \r\n \r\n# set the tenant, subscription and environment for use in the rest of   \r\nSet-AzureRmContext -SubscriptionName $subscriptionName  \r\n\r\n# Get the access keys for the ARM storage account  \r\n$accountKeys = Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName \r\n \r\n# Get account context using an ARM storage account  \r\n$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value \r\n\r\nforeach ($FileToUpload in $FilesToUpload){\r\n    # Upload a blob into a container.\r\n    Set-AzureStorageBlobContent -Container $ContainerName -File $FileToUpload -Context $storageContext -BlobType Page # IMPORTANT!!!!\r\n}\r\n\r\n<\/pre>\n<p>&nbsp;<br \/>\nEso mover\u00e1 los archivos igual que la GUI, de nuevo recordaos el especificar el tipo de blob correcto para evitar problemas.<\/p>\n<p>&nbsp;<br \/>\n<strong>De vuelta a la vida<\/strong><\/p>\n<p>En este punto, somos buenos para traer nuestra base de datos ONLINE nuevamente sin problemas, as\u00ed que vamos a hacerlo<\/p>\n<pre class=\"brush: tsql; title: ; notranslate\" title=\"\">\r\nUSE master\r\n\r\nALTER DATABASE stretch_test SET ONLINE WITH ROLLBACK IMMEDIATE\r\n<\/pre>\n<p>&nbsp;<br \/>\n<strong>Exprimiendo la nube<\/strong><\/p>\n<p>Finalmente, con nuestra base de datos en l\u00ednea y todos nuestros archivos en la nube, podemos aprovechar esta elegante funci\u00f3n llamada &#8216;Copias de seguridad de archivo-instant\u00e1nea&#8217; que, de alguna manera, para aquellos con experiencia en entornos empresariales con infraestructura SAN puede sonar familiar.<\/p>\n<p>Veo estas copias de seguridad de instant\u00e1neas de archivos como copias de seguridad de instant\u00e1neas SAN, por el hecho de que suceden de inmediato y no ocupan mucho espacio ya que est\u00e1n conectadas a los archivos originales, pero vamos a compararlas con copias de seguridad normales para ver si eso es cierto.<\/p>\n<p>Con todo este movimiento de on-prem a la nube, casi olvido que nuestra base de datos est\u00e1 vac\u00eda \ud83d\ude42 , as\u00ed que primero vamos a poner algunos datos all\u00ed.<\/p>\n<pre class=\"brush: tsql; title: ; notranslate\" title=\"\">\r\nSELECT o1.*\r\nINTO dbo.some_data\r\nFROM sys.all_objects AS o1\r\nWHERE 1=0\r\nGO\r\n\r\nINSERT INTO dbo.some_data\r\nSELECT o1.*\r\nFROM sys.objects AS o1\r\nCROSS JOIN sys.all_objects AS o2\r\nGO 10\r\n<\/pre>\n<p>Me encanta este truco para crear copias r\u00e1pidas de tablas y no preocuparme por programarlas, pero recordad que podr\u00edan ser diferente de las originales, ya que no se copian todas las propiedades.<\/p>\n<p>As\u00ed que tenemos algunos datos, en mi caso unos 230MB as\u00ed que tomemos una copia de seguridad SQL normales<\/p>\n<pre class=\"brush: tsql; title: ; notranslate\" title=\"\">\r\nUSE master\r\n\r\nBACKUP DATABASE stretch_test \r\nTO URL = 'https:\/\/storageaccount.blob.core.windows.net\/container\/stretch_test_SQL_backup.bak' \r\nWITH COMPRESSION\r\n\/*\r\nProcessed 29800 pages for database 'stretch_test', file 'st_primary' on file 1.\r\nProcessed 8 pages for database 'stretch_test', file 'st_user_data' on file 1.\r\nProcessed 8 pages for database 'stretch_test', file 'st_stretch_data' on file 1.\r\nProcessed 3 pages for database 'stretch_test', file 'st_Log' on file 1.\r\nBACKUP DATABASE successfully processed 29819 pages in 19.627 seconds (11.869 MB\/sec).\r\n*\/\r\n<\/pre>\n<p>Observad que el rendimiento no es nada bueno, pero recordad que nuestros archivos est\u00e1n en la nube, el motor SQL en local y el destino de respaldo en la nube, por lo que dependemos totalmente de nuestra conexi\u00f3n a Internet a menos que queramos pagar un <a href=\"https:\/\/azure.microsoft.com\/en-gb\/pricing\/details\/expressroute\/\" target=\"_blank\">ExpressRoute<\/a>.<\/p>\n<p>Sobra decir que mover todos estos datos de la nube para adelante y atr\u00e1s no es una gran idea, \u00a1advertidos est\u00e1is!<\/p>\n<p>Ahora veamos con la nueva caracter\u00edstica.<\/p>\n<pre class=\"brush: tsql; title: ; notranslate\" title=\"\">\r\nUSE master\r\n\r\nBACKUP DATABASE stretch_test \r\nTO URL = 'https:\/\/storageaccount.blob.core.windows.net\/container\/stretch_test_FS_backup.bak' \r\nWITH FILE_SNAPSHOT\r\n\/*\r\nProcessed 0 pages for database 'stretch_test', file 'st_primary' on file 1.\r\nProcessed 0 pages for database 'stretch_test', file 'st_user_data' on file 1.\r\nProcessed 0 pages for database 'stretch_test', file 'st_stretch_data' on file 1.\r\nProcessed 0 pages for database 'stretch_test', file 'st_Log' on file 1.\r\nBACKUP DATABASE successfully processed 0 pages in 0.494 seconds (0.000 MB\/sec).\r\n*\/\r\n<\/pre>\n<p>Wow, \u00bfc\u00f3mo es posible? menos de un segundo, y de acuerdo con esto, SQL Server en realidad no ha procesado nada, por lo que todo ha sucedido entre bambalinas en la nube.<\/p>\n<p>Ahora, si vamos al Azure Portal para ver esos archivos, podemos ver que son diferentes.<\/p>\n<p><a href=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/04_backup_size_AZ_storage.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/04_backup_size_AZ_storage.png\" alt=\"04_backup_size_AZ_storage\" width=\"858\" height=\"376\" class=\"aligncenter size-full wp-image-392\" srcset=\"https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/04_backup_size_AZ_storage.png 858w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/04_backup_size_AZ_storage-300x131.png 300w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/04_backup_size_AZ_storage-150x66.png 150w\" sizes=\"(max-width: 858px) 100vw, 858px\" \/><\/a><\/p>\n<p>La copia de seguridad regular tom\u00f3 3.5MB (gran hurra para compresi\u00f3n de copias de seguridad) pero la instant\u00e1nea solo tom\u00f3 0.5MB y ese n\u00famero es consistente independientemente del tama\u00f1o de la base de datos, por lo que siempre tomar\u00e1 medio megabyte, por lo que he visto.<\/p>\n<p>&nbsp;<br \/>\n<strong>C\u00f3mo los archivos de copia de seguridad son diferentes<\/strong><\/p>\n<p>Para responder a esa pregunta, echemos un vistazo m\u00e1s de cerca a la copia de seguridad de instant\u00e1neas de archivos para descubrir la diferencia.<\/p>\n<pre class=\"brush: tsql; title: ; notranslate\" title=\"\">\r\nUSE master\r\n\r\nRESTORE FILELISTONLY FROM URL = 'https:\/\/storageaccount.blob.core.windows.net\/container\/stretch_test_FS_backup.bak' \r\n<\/pre>\n<p><a href=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/05_restore_filelistonly_file_snapshot.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sqldoubleg.live-website.com\/wp-content\/uploads\/2017\/01\/05_restore_filelistonly_file_snapshot.png\" alt=\"05_restore_filelistonly_file_snapshot\" width=\"1313\" height=\"219\" class=\"aligncenter size-full wp-image-393\" srcset=\"https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/05_restore_filelistonly_file_snapshot.png 1313w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/05_restore_filelistonly_file_snapshot-300x50.png 300w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/05_restore_filelistonly_file_snapshot-1024x171.png 1024w, https:\/\/www.sqldoubleg.com\/wp-content\/uploads\/2017\/01\/05_restore_filelistonly_file_snapshot-150x25.png 150w\" sizes=\"(max-width: 1313px) 100vw, 1313px\" \/><\/a><\/p>\n<p>&nbsp;<br \/>\nAha! Como sospechaba, no son m\u00e1s que instant\u00e1neas de almacenamiento, pero dado que est\u00e1n completamente integradas con SQL Server, el proceso para hacer Backup \/ Restores es el mismo que hemos hecho durante a\u00f1os. Hay m\u00e1s informaci\u00f3n y ejemplos de copias de seguridad de archivos_snapshots en <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/mt169363.aspx\" target=\"_blank\">Books Online<\/a> y <a href=\"https:\/\/channel9.msdn.com\/Blogs\/Azure\/File-Snapshot-Backups-Demo\" target=\"_blank\">Channel9<\/a>, por lo que le recomiendo que revis\u00e9is todo eso si esta funcionalidad es algo que planeais implementar<\/p>\n<p>&nbsp;<br \/>\n<strong>Conclusi\u00f3n<\/strong><\/p>\n<p>Existe una incre\u00edble variedad de nuevas funcionalidades, pero como siempre, no son gratuitas y hay muchos trucos que debemos saber antes de tomar decisiones tan importantes como trasladarnos a la nube.<\/p>\n<p>Est\u00e1 bastante divertido jugar con la nube, por lo que os lo recomiendo a todos, incluso si no tienes ning\u00fan plan en un futuro cercano &#8230; nunca se sabe.<\/p>\n<p>\u00a1Gracias por leer y cualquier pregunta simplemente disparadla!<\/p>\n<p>&nbsp;<br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Esta semana quiero ir un paso m\u00e1s all\u00e1 en el camino de mover nuestras bases de datos a la nube y empezar a usar alguna de la funcionalidades avanzadas que ofrece Azure&nbsp;En&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,21],"tags":[46,18,57,50,23],"_links":{"self":[{"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/posts\/387"}],"collection":[{"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/comments?post=387"}],"version-history":[{"count":1,"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/posts\/387\/revisions"}],"predecessor-version":[{"id":465,"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/posts\/387\/revisions\/465"}],"wp:attachment":[{"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/media?parent=387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/categories?post=387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqldoubleg.com\/es\/wp-json\/wp\/v2\/tags?post=387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}