{"id":362,"date":"2015-12-09T11:49:36","date_gmt":"2015-12-09T11:49:36","guid":{"rendered":"http:\/\/www.tiagoneves.net\/blog\/?p=362"},"modified":"2015-12-09T11:49:36","modified_gmt":"2015-12-09T11:49:36","slug":"procedures-nao-documentadas-sp_msforeachdb-e-sp_msforeachtable","status":"publish","type":"post","link":"https:\/\/www.tiagoneves.net\/blog\/procedures-nao-documentadas-sp_msforeachdb-e-sp_msforeachtable\/","title":{"rendered":"Procedures n\u00e3o documentadas sp_MSforeachdb e sp_MSforeachtable"},"content":{"rendered":"<p>Ol\u00e1 pessoal,<\/p>\n<p>No post de hoje vou falar sobre as procedures n\u00e3o documentadas do SQL Server sp_MSforeachdb e sp_MSforeachtable, elas s\u00e3o muito \u00fateis quando voc\u00ea se deparar com uma atividade, em que voc\u00ea necessite buscar as informa\u00e7\u00f5es em todos os bancos de dados ou todas as tabelas.\u00a0Essas procedures executam atividades em loop atrav\u00e9s dos bancos ou tabelas.<\/p>\n<p>Imagine que temos a seguinte situa\u00e7\u00e3o<em>: Preciso executar o comando CHECKDB em todos os meus bancos de forma autom\u00e1tica.<\/em><\/p>\n<p>Poder\u00edamos fazer um script utilizando views de sistemas e montar um loop, porem podemos ficar preso a quantidade de bancos no ato de cria\u00e7\u00e3o do script, ou seja ao incluir, dropar ou at\u00e9 mesmo ao alterar o nome de um banco, voc\u00ea teria que lembrar de alterar o script.<\/p>\n<p>Neste caso podemos utilizar a sp_MSforeachdb como o pr\u00f3prio nome sugere, ela \u00e9 utilizada para executar determinada query para cada base atachada na inst\u00e2ncia.<\/p>\n<p>A sintaxe do comando <strong>sp_MSforeachdb<\/strong> \u00e9:<\/p>\n<p><span style=\"color: #ff0000;\">sp_MSforeachdb @command1, @replacechar,<span class=\"Apple-converted-space\">\u00a0<\/span><\/span><br \/>\n<span style=\"color: #ff0000;\">@command2,<span class=\"Apple-converted-space\">\u00a0<\/span><\/span><br \/>\n<span style=\"color: #ff0000;\">@command3, @precommand, @postcommand<\/span><\/p>\n<p><span style=\"color: #000000;\">onde:<\/span><\/p>\n<table border=\"0\">\n<tbody valign=\"top\">\n<tr>\n<td><strong>Parametro<\/strong><\/td>\n<td><strong>Descri\u00e7\u00e3o<\/strong><\/td>\n<td><strong>Tipo<\/strong><\/td>\n<\/tr>\n<tr>\n<td>@command1<\/td>\n<td>Primeiro comando que ser\u00e1 executado em cada base de dados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@replacechar<\/td>\n<td>Representa o caractere que ser\u00e1 representado pelo nome do banco de dados<\/td>\n<td>Nvarchar(1)<\/td>\n<\/tr>\n<tr>\n<td>@command2<\/td>\n<td>Segundo comando que ser\u00e1 executado em cada base de dados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@command3<\/td>\n<td>Terceiro comando que ser\u00e1 executado em cada base de dados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@precommand<\/td>\n<td>Comando que ser\u00e1 executado antes dos comandos<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@postcommand<\/td>\n<td>Comando que ser\u00e1 executado ap\u00f3s os comandos enviados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Vejamos o exemplo da situa\u00e7\u00e3o acima:<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true\">EXECUTE master.sys.sp_MSforeachdb'dbcc checkdb(''?'')'<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachdb.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-367\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachdb.png?resize=678%2C126\" alt=\"procedure_MSforeachdb\" width=\"678\" height=\"126\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachdb.png?w=745&amp;ssl=1 745w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachdb.png?resize=300%2C56&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>O comando vai executar checkdb em todos os bancos de dados da inst\u00e2ncia.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_master.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-368\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_master.png?resize=678%2C129\" alt=\"checkdb_master\" width=\"678\" height=\"129\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_master.png?w=767&amp;ssl=1 767w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_master.png?resize=300%2C57&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a> <a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_msdb.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-369\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_msdb.png?resize=678%2C81\" alt=\"checkdb_msdb\" width=\"678\" height=\"81\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_msdb.png?w=1062&amp;ssl=1 1062w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_msdb.png?resize=300%2C36&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_msdb.png?resize=1024%2C122&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a> <a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_tempdb.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-370\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_tempdb.png?resize=678%2C65\" alt=\"checkdb_tempdb\" width=\"678\" height=\"65\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_tempdb.png?w=1075&amp;ssl=1 1075w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_tempdb.png?resize=300%2C29&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_tempdb.png?resize=1024%2C98&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a> <a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_traces.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-371\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_traces.png?resize=678%2C84\" alt=\"checkdb_traces\" width=\"678\" height=\"84\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_traces.png?w=1181&amp;ssl=1 1181w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_traces.png?resize=300%2C37&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_traces.png?resize=1024%2C127&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a> <a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_TSQL2012.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-372\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_TSQL2012.png?resize=678%2C91\" alt=\"checkdb_TSQL2012\" width=\"678\" height=\"91\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_TSQL2012.png?w=1105&amp;ssl=1 1105w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_TSQL2012.png?resize=300%2C40&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_TSQL2012.png?resize=1024%2C137&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Se por ventura precisar excluir um ou mais bancos, podemos tamb\u00e9m criar filtro.<\/p>\n<pre class=\"theme:ssms2012 wrap:true lang:tsql decode:true\">EXECUTE master.sys.sp_MSforeachdb'if ''?'' NOT IN (''Master'',''MSDB'',''Model'',''Tempdb'') DBCC checkdb(''?'')'<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_systemdabases.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-373\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_systemdabases.png?resize=678%2C397\" alt=\"checkdb_without_systemdabases\" width=\"678\" height=\"397\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_systemdabases.png?w=951&amp;ssl=1 951w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_systemdabases.png?resize=300%2C176&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>No exemplo o checkdb foi executado em todos os bancos de usu\u00e1rios menos nas bases de sistemas.<\/p>\n<p>A procedure <strong>sp_MSforeachtable<\/strong> tem a mesma fun\u00e7\u00e3o, por\u00e9m ela faz um loop em todas as tabelas de um banco de dados.<\/p>\n<p>A sintaxe para utilizar a procedure <strong>sp_MSforeachtable<\/strong> \u00e9:<\/p>\n<p><span style=\"color: #ff0000;\">sp_MSforeachdb @command1, @replacechar,<span class=\"Apple-converted-space\">\u00a0<\/span><\/span><br \/>\n<span style=\"color: #ff0000;\">@command2,<\/span><br \/>\n<span style=\"color: #ff0000;\">@command3, @whereand,<span class=\"Apple-converted-space\">\u00a0<\/span><\/span><br \/>\n<span style=\"color: #ff0000;\">@precommand, @postcommand<\/span><\/p>\n<p>onde:<\/p>\n<table border=\"0\">\n<tbody valign=\"top\">\n<tr>\n<td><strong>Parametro<\/strong><\/td>\n<td><strong>Descri\u00e7\u00e3o<\/strong><\/td>\n<td><strong>Tipo<\/strong><\/td>\n<\/tr>\n<tr>\n<td>@command1<\/td>\n<td>Primeiro comando que ser\u00e1 executado em cada base de dados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@replacechar<\/td>\n<td>Representa o caractere que ser\u00e1 representado pelo nome do banco de dados<\/td>\n<td>Nvarchar(1)<\/td>\n<\/tr>\n<tr>\n<td>@command2<\/td>\n<td>Segundo comando que ser\u00e1 executado em cada base de dados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@command3<\/td>\n<td>Terceiro comando que ser\u00e1 executado em cada base de dados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@whereand<\/td>\n<td>Campo para adicionar informa\u00e7\u00f5es sobre o objeto, por exemplo constraints.<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@precommand<\/td>\n<td>Comando que ser\u00e1 executado antes dos comandos<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<tr>\n<td>@postcommand<\/td>\n<td>Comando que ser\u00e1 executado ap\u00f3s os comandos enviados<\/td>\n<td>Nvarchar(2000)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Imagine que temos a seguinte situa\u00e7\u00e3o<em>: Preciso executar saber o tamanho de cada tabela do meu banco de dados.<\/em><\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true\">EXEC sp_MSforeachtable 'EXEC sp_spaceused ''?'''<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachtable.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-375\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachtable.png?resize=678%2C240\" alt=\"procedure_MSforeachtable\" width=\"678\" height=\"240\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachtable.png?w=1271&amp;ssl=1 1271w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachtable.png?resize=300%2C106&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/procedure_MSforeachtable.png?resize=1024%2C363&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Assim como na sp_MSforeachdb tamb\u00e9m podemos filtrar as tabelas que queremos executar o comando.<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true\"> EXEC sp_MSforeachtable @command1 = 'IF ''?'' NOT IN  (''[HR].[Employees]'',''[Production].[Suppliers]'') EXEC sp_spaceused ''?''';<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_tables.png\" rel=\"lightbox[362]\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-376\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_tables.png?resize=678%2C240\" alt=\"checkdb_without_tables\" width=\"678\" height=\"240\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_tables.png?w=1271&amp;ssl=1 1271w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_tables.png?resize=300%2C106&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/12\/checkdb_without_tables.png?resize=1024%2C363&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Al\u00e9m das procedures sp_MSforeachdb e sp_MSforeachtable existem outras procedures n\u00e3o documentadas como as da lista abaixo, n\u00e3o existe suporte ou material oficial\u00a0que ensine a utiliz\u00e1-la por parte da Microsoft.<\/p>\n<p>sp_checknames<br \/>\nsp_columns_rowset<br \/>\nsp_enumoledbdatasources<br \/>\nsp_fixindex<br \/>\nsp_gettypestring<br \/>\nsp_ms_marksystemobject<br \/>\nsp_msaddguidcolumn<br \/>\nsp_msaddguidindex<br \/>\nsp_msaddlogin_implicit_ntlogin<br \/>\nsp_msadduser_implicit_ntlogin<br \/>\nsp_mscheck_uid_owns_anything<br \/>\nsp_msdbuseraccess<br \/>\nsp_msdbuserpriv<br \/>\nsp_msdependencies<br \/>\nsp_msdrop_object<br \/>\nsp_msforeachdb<br \/>\nsp_msforeachtable<br \/>\nsp_msget_qualified_name<br \/>\nsp_msgettools_path<br \/>\nsp_msgetversion<br \/>\nsp_msguidtostr<br \/>\nsp_mshelpcolumns<br \/>\nsp_mshelpindex<br \/>\nsp_mshelptype<br \/>\nsp_msindexspace<br \/>\nsp_msis_pk_col<br \/>\nsp_mskilldb<br \/>\nsp_msloginmappings<br \/>\nsp_mstablekeys<br \/>\nsp_mstablerefs<br \/>\nsp_mstablespace<br \/>\nsp_msunc_to_drive<br \/>\nsp_msuniquecolname<br \/>\nsp_msuniquename<br \/>\nsp_msuniqueobjectname<br \/>\nsp_msuniquetempname<br \/>\nsp_tempdbspace<br \/>\nsp_who2<br \/>\nxp_delete_file<br \/>\nxp_dirtree<br \/>\nxp_enum_oledb_providers<br \/>\nxp_enumcodepages<br \/>\nxp_enumdsn<br \/>\nxp_enumerrorlogs<br \/>\nxp_enumgroups<br \/>\nxp_fileexist<br \/>\nxp_fixeddrives<br \/>\nxp_get_mapi_default_profile<br \/>\nxp_get_mapi_profiles<br \/>\nxp_getnetname<br \/>\nxp_qv<br \/>\nxp_readerrorlog<br \/>\nxp_regaddmultistring<br \/>\nxp_regdeletekey<br \/>\nxp_regdeletevalue<br \/>\nxp_regenumvalues<br \/>\nxp_regread<br \/>\nxp_regremovemultistring<br \/>\nxp_regwrite<br \/>\nxp_subdirs<br \/>\nxp_varbintohexstr<\/p>\n<p>Bom por hoje \u00e9 isso.<\/p>\n<p>Um abra\u00e7o,<\/p>\n<p>Tiago Neves<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 pessoal, No post de hoje vou falar sobre as procedures n\u00e3o documentadas do SQL Server sp_MSforeachdb e sp_MSforeachtable, elas s\u00e3o muito \u00fateis quando voc\u00ea se deparar com uma atividade, em que voc\u00ea necessite buscar as informa\u00e7\u00f5es em todos os bancos de dados ou todas as tabelas.\u00a0Essas procedures executam atividades em loop atrav\u00e9s dos bancos&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"twitter_91251433_91251433":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Procedures n\u00e3o documentadas sp_MSforeachdb e sp_MSforeachtable","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_wpscppro_dont_share_socialmedia":false,"_wpscppro_custom_social_share_image":0,"_facebook_share_type":"","_twitter_share_type":"","_linkedin_share_type":"","_pinterest_share_type":"","_linkedin_share_type_page":"","_instagram_share_type":"","_medium_share_type":"","_threads_share_type":"","_google_business_share_type":"","_bluesky_share_type":"","_selected_social_profile":[],"_wpsp_enable_custom_social_template":false,"_wpsp_social_scheduling":{"enabled":false,"datetime":null,"platforms":[],"status":"template_only","dateOption":"today","timeOption":"now","customDays":"","customHours":"","customDate":"","customTime":"","schedulingType":"absolute"},"_wpsp_active_default_template":true},"categories":[2,4,20,5],"tags":[96,14],"class_list":["post-362","post","type-post","status-publish","format-standard","hentry","category-casos-do-dia-a-dia","category-scripts","category-sqlserver-geral","category-virtual-pass-br","tag-loop","tag-sqlserver"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6eIyh-5Q","jetpack-related-posts":[{"id":1845,"url":"https:\/\/www.tiagoneves.net\/blog\/conhecendo-as-server-roles-e-database-roles-do-sql-server\/","url_meta":{"origin":362,"position":0},"title":"Conhecendo as Server Roles e Database Roles do SQL Server","author":"tiagoneves","date":"14 de agosto de 2019","format":false,"excerpt":"Hoje em dia, seguran\u00e7a \u00e9 um assunto s\u00e9rio quando falamos de dados, neste post explico os n\u00edveis de acessos e permiss\u00e3o de cada role do SQL Server.","rel":"","context":"Em &quot;Seguran\u00e7a&quot;","block_context":{"text":"Seguran\u00e7a","link":"https:\/\/www.tiagoneves.net\/blog\/category\/seguranca\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/07\/Descricao_Acessos007.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1758,"url":"https:\/\/www.tiagoneves.net\/blog\/fim-do-suporte-sql-2008-migracao-utilizando-o-dbatools\/","url_meta":{"origin":362,"position":1},"title":"Fim do Suporte SQL 2008 &#8211; Migra\u00e7\u00e3o utilizando o DBATools","author":"tiagoneves","date":"24 de abril de 2019","format":false,"excerpt":"Neste ultimo post sobre o fim do suporte do SQL Server 2008, demonstro como efetuar uma migra\u00e7\u00e3o utilizando o pool de scripts do DBATools.","rel":"","context":"Em &quot;Microsoft&quot;","block_context":{"text":"Microsoft","link":"https:\/\/www.tiagoneves.net\/blog\/category\/microsoft\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/04\/Migration_SQL_Server_with_DBATools-020.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/04\/Migration_SQL_Server_with_DBATools-020.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/04\/Migration_SQL_Server_with_DBATools-020.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/04\/Migration_SQL_Server_with_DBATools-020.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1422,"url":"https:\/\/www.tiagoneves.net\/blog\/replique-os-backups-de-sua-vm-sql-server-do-azure-para-amazon\/","url_meta":{"origin":362,"position":2},"title":"Replique os backups de sua VM SQL Server do Azure para Amazon","author":"tiagoneves","date":"25 de julho de 2018","format":false,"excerpt":"Ol\u00e1 pessoal, tudo certo? No post de hoje vou compartilhar com voc\u00eas um caso que atendi em um de nossos clientes. O nosso cliente tem uma VM com o SQL Server no Azure e gostaria de ter um site de DR (disaster recovery) na Amazon. At\u00e9 ai tudo bem, voc\u00ea\u2026","rel":"","context":"Em &quot;Azure&quot;","block_context":{"text":"Azure","link":"https:\/\/www.tiagoneves.net\/blog\/category\/azure\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/Return_Query-300x129.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/Return_Query-300x129.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/Return_Query-300x129.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/07\/Return_Query-300x129.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":89,"url":"https:\/\/www.tiagoneves.net\/blog\/alterando-o-tipo-autenticacao-do-sqlserver\/","url_meta":{"origin":362,"position":3},"title":"Alterando o tipo autentica\u00e7\u00e3o do SQLServer","author":"tiagoneves","date":"10 de maio de 2015","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? Hoje vou postar sobre um erro que aconteceu comigo e perdi um tempo para encontrar o problema. O erro \u00e9 quando voc\u00ea vai logar com\u00a0usu\u00e1rio de SQL e aparece o erro \u201clogin failed for user: <nome_user>\u201d. Tentei de tudo para logar, troquei\u00a0a senha do usu\u00e1rio, testei\u2026","rel":"","context":"Em &quot;Scripts&quot;","block_context":{"text":"Scripts","link":"https:\/\/www.tiagoneves.net\/blog\/category\/scripts\/"},"img":{"alt_text":"1","src":"https:\/\/i0.wp.com\/tiagoneves.net\/blog\/wp-content\/uploads\/2015\/05\/18.jpg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/tiagoneves.net\/blog\/wp-content\/uploads\/2015\/05\/18.jpg?resize=350%2C200 1x, https:\/\/i0.wp.com\/tiagoneves.net\/blog\/wp-content\/uploads\/2015\/05\/18.jpg?resize=525%2C300 1.5x"},"classes":[]},{"id":167,"url":"https:\/\/www.tiagoneves.net\/blog\/restaurar-uma-database-sql-server-2012-em-uma-instancia-sql-server-inferior\/","url_meta":{"origin":362,"position":4},"title":"Restaurando uma database SQL Server 2012 em uma inst\u00e2ncia SQL Server inferior.","author":"tiagoneves","date":"29 de junho de 2015","format":false,"excerpt":"Ol\u00e1 pessoal, tudo certo? No post de hoje vou falar sobre uma d\u00favida que \u00e9 comum entre muitos usu\u00e1rios, algumas vezes vejo posts de d\u00favida sobre o como fazer o restore de uma base, em uma vers\u00e3o anterior da vers\u00e3o corrente do SQL Server, como por exemplo: Restaurar uma base\u2026","rel":"","context":"Em &quot;Casos do dia-a-dia&quot;","block_context":{"text":"Casos do dia-a-dia","link":"https:\/\/www.tiagoneves.net\/blog\/category\/casos-do-dia-a-dia\/"},"img":{"alt_text":"1.2","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/06\/1.2.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/06\/1.2.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/06\/1.2.png?resize=525%2C300 1.5x"},"classes":[]},{"id":254,"url":"https:\/\/www.tiagoneves.net\/blog\/encontrando-indices-nao-utilizados\/","url_meta":{"origin":362,"position":5},"title":"Encontrando \u00edndices n\u00e3o utilizados","author":"tiagoneves","date":"5 de agosto de 2015","format":false,"excerpt":"Ol\u00e1 pessoal, Neste post irei compartilhar um script que nos auxilia a melhorar a performance das consultas que s\u00e3o executadas em nossa inst\u00e2ncia, mostrando \u00edndices que poderiam ser criados para melhorar a performance. Demonstra\u00e7\u00e3o: CREATE TABLE t1 ( c1 INT IDENTITY, c2 AS c1 * 2, c3 AS c1 +\u2026","rel":"","context":"Em &quot;Scripts&quot;","block_context":{"text":"Scripts","link":"https:\/\/www.tiagoneves.net\/blog\/category\/scripts\/"},"img":{"alt_text":"missing_index","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/08\/missing_index.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/08\/missing_index.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/08\/missing_index.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/08\/missing_index.png?resize=700%2C400 2x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/08\/missing_index.png?resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/comments?post=362"}],"version-history":[{"count":5,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/362\/revisions"}],"predecessor-version":[{"id":378,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/362\/revisions\/378"}],"wp:attachment":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/media?parent=362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/categories?post=362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/tags?post=362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}