Monitorando Bloqueios no SQL Server

Olá a todos!

Uma tarefa necessária com certa frequência é descobrir quais processos estão bloqueando outros processos, ou “quem está bloqueando quem” (ou ainda: “o que este processo está fazendo para causar este tipo de lock?”).

Foi uma pergunta que um cliente meu fez… além de “o que eu faço?

Bem, a partir do SQL Server 2008 temos uma funcionalidade chamada EVENT NOTIFICATION, que pode capturar vários eventos disparados pelo SQL Server, rastreando informações sobre estes para armazenamento em uma fila do Service Broker. Esta informação é entregue com uma variável no formato xml, com informações e metadados sobre o evento. O formato deste XML é o mesmo da função EVENTDATA().

Mais informações sobre esta tecnologia podem ser obtida na documentação, no link: http://msdn.microsoft.com/en-us/library/ms190427(v=SQL.105).aspx.

Então, como podemos monitorar os processos bloqueados/bloqueando utilizando esta tecnologia?

As ações que precisam ser tomadas são basicamente as seguintes:

  1. Configurar o threshold para geração do relatório de processos bloqueados;
  2. Habilitar Service Broker e configurar a captura do evento;
  3. Criar uma stored procedure para receber e tratar o evento.
Vamos iniciar.

1 – Configuração da instância

Através da procedure de sistema sp_configure, é preciso configurar o tempo que um bloqueio fica em vigor (em segundos) antes da geração e captura do evento BLOCKED_PROCESS_REPORT. No exemplo abaixo, estamos definindo este tempo em 20 segundos.
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'blocked process threshold', 20
GO
RECONFIGURE
GO

2 – Configuração do Service Broker

O próximo passo é habilitar e configurar o Service Broker. Temos que criar uma fila em um database para armazenar as notificações. Qualquer banco de dados pode ser utilizado. No nosso exemplo, vamos criar um banco exclusivo:

CREATE DATABASE DB_Management
GO
ALTER DATABASE DB_Management SET ENABLE_BROKER
GO

… e criar os objetos de apoio:

USE [DB_Management]
GO

CREATE QUEUE que_events
GO

CREATE SERVICE svc_events
ON QUEUE que_events ( [http://schemas.microsoft.com/SQL/Notifications/PostEventNotification] )
GO

CREATE EVENT NOTIFICATION notify_locks
ON SERVER
WITH fan_in
FOR BLOCKED_PROCESS_REPORT
TO SERVICE 'syseventservice', 'current database'; -- *** importante: current database ***
GO

 
Quais eventos podem ser especificados? A view de sistema sys.sys.event_notification_event_types contém a lista.

SELECT * FROM sys.sys.event_notification_event_types

3 – Tratamento do evento

Agora, precisamos criar uma stored procedure para receber as mensagens da fila e efetuar o tratamento. A idéia é utilizar o comando RECEIVE, que funciona como um SELECT, lendo e removendo a mensagem da fila.

No meu exemplo, o processo que está bloqueando outros é finalizado, através do comando KILL, e um e-mail é enviado para o Administrador (logicamente que o Database Mail já deve estar configurado e funcionando):

SET ARITHABORT ON
GO

— CREATE ou ALTER
ALTER PROCEDURE dbo.prc_ReceiveMsg
AS

BEGIN

SET ARITHABORT ON

— variaveis de trabalho

DECLARE @spid_blocked int, @spid_blocking int;
DECLARE @hostname_blocked varchar(255), @hostname_blocking varchar(255);
DECLARE @loginname_blocked varchar(255), @loginname_blocking varchar(255);
DECLARE @event_txt varchar(max);
DECLARE @post_time varchar(32);
DECLARE @msgs TABLE (message_body xml);

DECLARE @email_body varchar(max);
DECLARE @email_subject varchar(64);
DECLARE @crlf varchar(2);

DECLARE @cmd nvarchar(255);

RECEIVE TOP(1) message_body
FROM que_sysevents
INTO @msgs;

SELECT @spid_blocked  = message_body.value('(/EVENT_INSTANCE/TextData/blocked-process-report/blocked-process/process/@spid)[1]', 'int'),
@hostname_blocked  = message_body.value('(/EVENT_INSTANCE/TextData/blocked-process-report/blocked-process/process/@hostname)[1]', 'varchar(255)'),
@loginname_blocked = message_body.value('(/EVENT_INSTANCE/TextData/blocked-process-report/blocked-process/process/@loginname)[1]', 'varchar(255)'),

@spid_blocking = message_body.value('(/EVENT_INSTANCE/TextData/blocked-process-report/blocking-process/process/@spid)[1]', 'int'),
@hostname_blocking = message_body.value('(/EVENT_INSTANCE/TextData/blocked-process-report/blocking-process/process/@hostname)[1]', 'varchar(255)'),
@loginname_blocking = message_body.value('(/EVENT_INSTANCE/TextData/blocked-process-report/blocking-process/process/@loginname)[1]', 'varchar(255)'),

@event_txt = CAST(message_body as varchar(max)),
@post_time = message_body.value('(/EVENT_INSTANCE/PostTime)[1]&#39, 'varchar(32)')
FROM @msgs
WHERE message_body IS NOT NULL;

IF @@ROWCOUNT <= 0
BEGIN
PRINT ‘Saindo… nenhuma linha encontrada (onde message_body IS NOT NULL)’;
RETURN;
END

— exibir informacoes:
PRINT 'Usuario atual: ‘ + USER_NAME()
PRINT 'Processo bloqueando:’
PRINT 'SPID  = ' + CAST(@spid_blocking as varchar(5))
PRINT 'HOST  = ' + @hostname_blocking
PRINT 'LOGIN = ' + @loginname_blocking
PRINT 'HORARIO = ' + @post_time

— finalizar processo que esta bloqueando:
SET @cmd = 'KILL ' + CAST(@spid_blocking AS varchar(5))
EXEC sp_executesql @stmt = @cmd

— enviar e-mail:
SET @crlf =  CHAR(13) + CHAR(10)
SET @email_body  = ‘Informacoes’ + @crlf
SET @email_body += ‘Bloqueando: ‘ + @crlf
SET @email_body += ‘SPID  = ‘ + CAST(@spid_blocking as varchar(5)) + @crlf
SET @email_body += ‘LOGIN = ‘ + @loginname_blocking + @crlf
SET @email_body += ‘HOST  = ‘ + @hostname_blocking + @crlf
SET @email_body += @crlf
SET @email_body += ‘HORARIO = ‘ + @post_time + @crlf
SET @email_body += @crlf + @crlf
SET @email_body += ‘Dados do evento (XML):’
SET @email_body += @event_txt

SET @email_subject = ‘SQL SERVER – Informacoes sobre processos bloqueados’

EXEC msdb..sp_send_dbmail
@recipients = ‘dba@minhaempresa.com.br’,
@subject    = @email_subject,
@body       = @email_body;

— fim

END
GO

Finalmente, associo a proc à fila e efetuo a ativação:

ALTER QUEUE que_sysevents WITH
STATUS = ON,
RETENTION = OFF,
ACTIVATION (
STATUS = ON,
MAX_QUEUE_READERS = 3,
PROCEDURE_NAME = dbo.prc_ReceiveMsg,
EXECUTE AS ‘dbo’
)
;
GO

A saída produzida pelo comando PRINT fica registrada no log do SQL Server (arquivo ERRORLOG).

Referências utilizadas na pesquisa e implementação da solução:

Anúncios

SQL Server 2008 R2 – Alterar Collation (Change Collation)

Olá a todos!

O post de hoje está programado há algum tempo, mas enfim consegui parar para registrar.

Alguns programas ou aplicativos exigem um determinado Collation padrão para a instância de SQL Server (System Center Configuration Manager, por exemplo).

Segundo a documentação do SQL Server, o Collation “fornece propriedades de regras de classificação, de diferenciação de maiúsculas e minúsculas e de diferenciação de acentos para dados” (http://msdn.microsoft.com/en-us/library/ms143726(v=sql.105).aspx).

Existem Collations Windows e Collation SQL Server (listas aqui e aqui). O Collation padrão da instância é definida na instalação, e não pode ser alterada:

Select Collation on Setup

Select Collation on Setup

Como mudar, então, o Collation sem ter que reinstalar a instância?

A solução é executar o SETUP do SQL Server com a opção de reconstrução de bancos de sistema:

Setup.exe /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER
/SAPWD=P@ssW0rd /SQLCOLLATION=Arabic_CI_AI /SQLSYSADMINACCOUNTS=”Domain\User”

Não podemos esquecer que, já que os bancos de sistema são recriados, todas informações presentes nos databases substituídos são perdidas:

  • Configurações (master.sys.configurations)
  • Logins
  • Lista de databases (precisar ser reanexados)
  • Customizações no database MODEL
  • Configurações de tamanho do TEMPDB
  • Jobs, Alertas, Planos de Manutenção, Históricos e outras informações do MSDB

Links:

SQL Server 2008 R2 – Funcionalidades por Edição

Há algum tempo estava procurando algum link que listasse todas as funcionalidades disponíveis por edição do SQL Server. Pois bem, esse endereço foi localizado hoje:
SQL Server 2008 R2
http://msdn.microsoft.com/en-us/library/cc645993(SQL.105).aspx

Scalability and Performance

Feature Name

Datacenter

Enterprise

Standard

Number of CPUs OS maximum 8 4
Maximum memory utilized OS maximum 2 TB 64 GB
Maximum database size 524 PB 524 PB 524 PB
IA64 hardware support Yes Yes
Resource governor Yes Yes
Table and index partitioning Yes Yes
Parallel index operations Yes Yes
Parallel consistency checks (DBCC) Yes Yes
Enhanced read-ahead scan Yes Yes
Scalable shared databases Yes Yes
Direct query of index views using NOEXPAND hint Yes Yes Yes
Automatic indexed view maintenance Yes Yes Yes
Automatic use of indexed views by query optimizer Yes Yes
Distributed Partitioned Views Yes Yes Partial.
Distributed Partitioned Views
are not updatable

High Availability (Always On)

Feature Name Datacenter Enterprise Standard
Log shipping Yes Yes Yes
Database mirroring2 Yes Yes Yes
(single thread, synchronous only)
Automatic corruption recovery from mirror Yes Yes Yes
Log stream compression Yes Yes Yes
Number of Failover clustering nodes OS maximum 1 OS maximum 1 2 nodes
Backup compression Yes Yes Yes 3
Mirrored backups Yes Yes
Database snapshots Yes Yes
Fast recovery Yes Yes
Online indexing Yes Yes
Online page and file restore Yes Yes
Online configuration of Peer to Peer nodes Yes Yes
Hot add memory and CPU support Yes Yes
1 Windows Server 2003 supports a maximum of 8 failover cluster nodes. Windows Server 2008 supports a maximum of 16 failover cluster nodes.
2 Asynchronous database mirroring is supported only by SQL Server 2005 Enterprise Edition SP1 and later versions.
3 Backup compression for Standard edition of SQL Server is supported only in SQL Server 2008 R2 or higher versions.

Virtualization Support

Feature Name Datacenter Enterprise Standard
Hypervisor support Yes Yes Yes
Guest failover clustering support for virtualization Yes Yes Yes
Hyper-V live migration Yes Yes Yes
Application mobility Yes Yes

Replication

Feature Name

Datacenter

Enterprise

Standard

Snapshot replication Yes Yes Yes
Merge replication Yes Yes Yes
Transactional replication Yes Yes Yes
SQL Server change tracking Yes Yes Yes
Publishing data from SQL Server to non SQL Server subscribers Yes Yes Yes
Publishing data from Oracle to SQL Server Yes Yes
Peer to Peer replication Yes Yes
¹If an instance of Workgroup is used as a Publisher, it supports a maximum of 25 subscriptions to all merge publications, and five subscriptions to all transactional publications. It supports an unlimited number of subscriptions to snapshot publications.

Enterprise Security

Feature Name

Datacenter

Enterprise

Standard

Windows Integrated Authentication (including Kerberos) Yes Yes Yes
Integration with Microsoft baseline security analyzer Yes Yes Yes
C2 compliant audit mode Yes Yes Yes
Common criteria compliance Yes Yes Yes
Data encryption and key management Yes Yes Yes
Module signing Yes Yes Yes
Transport Layer Security channel encryption Yes Yes Yes
Windows password policy support Yes Yes Yes
User-schema separation Yes Yes Yes
Login triggers and connection endpoints Yes Yes Yes
Secure configuration through policy-based management Yes Yes Yes
SQL Server audit (fine-grained auditing) Yes Yes
Transparent database encryption Yes Yes
Extensible key management Yes Yes

RBDMS Management

Feature Name

Datacenter

Enterprise

Standard

Policy-Based Management Yes Yes Yes
PowerShell support Yes Yes Yes
SQL Server Management Object (SMO) Yes Yes Yes
SysPrep support 1 Yes Yes Yes
SQL Server connection director Yes Yes Yes
Dedicated admin connection Yes Yes Yes
Policy automation (check on schedule and change) Yes Yes Yes
Maintenance plans Yes Yes Yes
Database mail Yes Yes Yes
Performance data collector Yes Yes Yes
System Center Operations Manager Management Pack Yes Yes Yes
Plan guides Yes Yes Yes
User instances
1 SysPrep is supported for stand-alone instances of Database Engine and Reporting Services

Application and Multi-Instance Management

Feature Name

Datacenter

Enterprise

Standard

Support for data-tier application (DAC) operations – extract, deploy, upgrade Yes Yes Yes
Able to enroll for multi-instance management. Yes 1 Yes 2 Yes
Multi-instance dashboard views and drilldowns Yes Yes 2
Policy-based resource utilization evaluation Yes Yes 2
1 Supports a SQL Server utility control point with a maximum of 200 managed instances of SQL Server.
2 Supports a SQL Server utility control point with a maximum of 25 managed instances of SQL Server.

Management Tools

Feature Name

Datacenter

Enterprise

Standard

SQL Server Configuration Manager Yes Yes Yes
SQL CMD (command prompt tool) Yes Yes Yes
SQL Server Migration Assistant1 Yes Yes Yes
SQL Server Management Studio2 Yes Yes Yes
SQL Server Agent Yes Yes Yes
Database Engine Tuning Advisor Yes Yes Yes
SQL Server Profiler Yes Yes Yes
Analysis Services, PowerPivot IT operation dashboard Yes Yes
1 For more information about SQL Server Migration Assistant, see Migrate to SQL Server on the SQL Server web site.
2 For more information about SQL Server Management Studio Express see, SQL Server Management Studio Express on Microsoft web site.
3 SQL Server Workgroup, SQL Server Web, SQL Server Express, SQL Server Express Tools, and SQL Server Express Advanced can be profiled using SQL Server Standard and SQL Server Enterprise editions

Development Tools

Feature Name

Datacenter

Enterprise

Standard

Microsoft Visual Studio Integration Yes Yes Yes
IntelliSense (Transact-SQL and MDX) Yes Yes Yes
Business Intelligence Development Studio Yes Yes Yes
SQL query, edit and design tools Yes Yes Yes
Version control support Yes Yes Yes
MDX edit, debug, and design tools Yes Yes Yes

Programmability

Feature Name

Datacenter

Enterprise

Standard

Entity Framework support Yes Yes Yes
Common language runtime (CLR) integration Yes Yes Yes
Native XML support Yes Yes Yes
XML indexing Yes Yes Yes
MERGE and UPSERT capabilities Yes Yes Yes
FILESTREAM support Yes Yes Yes
Date and Time data types Yes Yes Yes
Internationalization support Yes Yes Yes
Full-text search Yes Yes Yes
Specification of language in query Yes Yes Yes
Service Broker (messaging) Yes Yes Yes
XML/A support Yes Yes Yes
Web services (HTTP/SOAP endpoints) Yes Yes Yes
T-SQL endpoints Yes Yes Yes

Spatial and Location Services

Feature Name

Datacenter

Enterprise

Standard

Planar and geodetic data types Yes Yes Yes
Spatial indexes Yes Yes Yes
Advanced spatial libraries Yes Yes Yes
Import/export of industry-standard spatial data formats Yes Yes Yes
Spatial results tab within SQL Server Management Studio Yes Yes Yes

Complex Event Processing (StreamInsight)

Feature

Datacenter

Enterprise

Standard

Premium edition Yes
Standard edition Yes Yes
For more information about the editions of StreamInsight, see Choosing a StreamInsight Edition.

Integration Services

Feature

Datacenter

Enterprise

Standard

SQL Server Import and Export Wizard Yes Yes Yes
Built-in data source connectors Yes Yes Yes
Integration Services designer and runtime Yes Yes Yes
Basic tasks and transformations in addition to those used by the Import and Export Wizard Yes Yes Yes
Log providers and logging Yes Yes Yes
Basic data profiling tools Yes Yes Yes
Programmable object model for extensibility Yes Yes Yes

Integration Services-Advanced Adapters

Feature Name

Datacenter

Enterprise

Standard

High performance Oracle destination Yes Yes
High performance Teradata destination Yes Yes
SAP BW source and destination Yes Yes
Data mining model training destination adapter Yes Yes
Dimension processing destination adapter Yes Yes
Partition processing destination adapter Yes Yes

Integration Services-Advanced Transforms

Feature Name

Datacenter

Enterprise

Standard

Persistence (high performance) lookups Yes Yes
Data mining query transformation Yes Yes
Fuzzy grouping and lookup transformations Yes Yes
Term extractions and lookup transformations Yes Yes

Data Warehouse

Feature Name

Datacenter

Enterprise

Standard

Auto-generate staging and data warehouse schema Yes Yes Yes
Change data capture Yes Yes
Data compression Yes Yes
Star join query optimization Yes Yes
Automatic use of indexed views by query optimizer Yes Yes
Scalable read-only AS configuration Yes Yes
Proactive caching Yes Yes
Parallel query processing on partitioned tables and indices Yes Yes
Partitioned cubes Yes Yes
Distributed partitioned cubes Yes Yes

Analysis Services

Feature Name

Datacenter

Enterprise

Standard

SQL Server Analysis Services backup Yes Yes Yes
Dimension, attribute relationship, aggregate, and cube design Yes Yes Yes
Translations Yes Yes Yes
Personalization extensions Yes Yes Yes
SQL Server PowerPivot for SharePoint Yes Yes

Analysis Services-Advanced Analytic Functions

Feature Name

Datacenter

Enterprise

Standard

Financial aggregations Yes Yes
Partitioned cubes and distributed partitioned cubes Yes Yes
Custom rollups Yes Yes
Semi-additive measures Yes Yes
Writeback dimensions Yes Yes
Linked measures and dimensions Yes Yes
Binary and compressed XML transport Yes Yes Yes
Account intelligence Yes Yes
Perspectives Yes Yes
Scalable shared databases Yes Yes

Data Mining

Feature Name

Datacenter

Enterprise

Standard

Comprehensive set of data mining algorithms Yes Yes Yes
Integrated data mining tools: wizards, editors, model viewers, query builder Yes Yes Yes
Cross validation Yes Yes
Advanced configuration and tuning options for data mining algorithms Yes Yes
Support for pipeline data mining and text mining with Integration Services Yes Yes
Support for plug-in algorithms Yes Yes
Parallel model processing Yes Yes
Sequence prediction Yes Yes

Reporting

Feature Name

Datacenter

Enterprise

Standard

Reporting Services memory limits OS Maximum OS Maximum OS Maximum
Allowed catalog DB SQL Server edition SQL Server Standard, Enterprise and DataCenter SQL Server Standard, Enterprise DataCenter SQL Server Standard, Enterprise and DataCenter
Allowed data source SQL Server edition All All All
Report server Yes Yes Yes
Report Designer Yes Yes Yes
Report Manager Yes Yes Yes
Reports as data feeds Yes Yes Yes
Enhanced gauges and charting Yes Yes Yes
Maps and map layers Yes Yes Yes
Custom authentication Yes Yes Yes
Export to Excel, Word, PDF, and images Yes Yes Yes
Role Based Security Yes Yes Yes
Create Custom Roles Yes Yes Yes
Model support Yes Yes Yes
Model Item Security Yes Yes Yes
Infinite click-through Yes Yes Yes
E-mail and file share subscriptions and scheduling Yes Yes Yes
Report history, executing snapshots, and caching Yes Yes Yes
SharePoint integration Yes Yes Yes
Shared component library Yes Yes Yes
Remote and non-relational data source support Yes Yes Yes
Data source, delivery, and rendering extensibility Yes Yes Yes
Report definition customization extension (RDCE) Yes Yes Yes
Data-driven report subscriptions Yes Yes
Scale out deployment (Web farms) Yes Yes

Business Intelligence Clients

Feature Name Datacenter Enterprise Standard
Report Builder 3.0 Yes Yes Yes
Excel 2007 and Visio 2007 Add-in support Yes Yes Yes
PowerPivot for Excel Yes Yes

Master Data Services

Feature Name

Datacenter

Enterprise

Standard

Master Data Services database Yes Yes
Master Data Manager Web application Yes Yes
Master Data Services Web service Yes Yes

SQL Server 2012 AlwaysOn – Virtual Labs

Caros,

Comecei a semana fazendo um lab virtual de alta disponibilidade em SQL Server 2012.

Minhas impressões:

  • Mais simples que configurar um cluster de failover para SQL Server tradicional
  • Configuração baseada em assistente
  • Tecnologia de database mirroring extendida a mais de 2 servidores
  • Rélicas podem ser lidas
  • Pode-se mesclar servidores físicos e virtuais

Algumas telas capturadas do lab/manual:

Image
Assistente de Criação

Image
Adicionando servidores ao grupo

Não quero estragar a surpresa, mas o “pulo do gato” aqui é a criação de um LISTENER, com IP próprio que … não! Façam o lab para ver o que falta!! 😉

Há mais informações técnicas no site do produto:
http://www.microsoft.com/sqlserver/en/us/solutions-technologies/mission-critical-operations/SQL-Server-2012-high-availability.aspx

É um ótimo material, recomendo.

Abraços

Update – 08/nov/2012
Estou publicando aqui o link para a página dos laboratórios virtuais de SQL Server (SQL Server Virtual Labs):
http://www.microsoft.com/sqlserver/en/us/learning-center/virtual-labs.aspx

Novidades no SQL Server 2012 RC0 – FILETABLE parte 2

No meu último post (http://wp.me/p15MPR-6f) falei da funcionalidade FILETABLE, novidade no SQL Server 2012 (RC0, pelo menos!).

Bem, agora pretendo demonstrar como configurar o SQL Server para que possamos criar uma FileTable.

1) Habilitar FILESTREAM para a instância

É preciso habilitar para que seja criado o compartilhamento (shared folder) associado à instância. Essa operação deve ser feita via SQL Server Configuration Manager:


Image by SQLServerCurry.com

Também é preciso configurar o acesso na instância, usando sp_configure:

USE master
go

EXEC sp_configure ‘filestream_access_level’, 2
GO

RECONFIGURE
GO

2) Configurar o banco de dados

Vou criar um novo banco de dados, com um filegroup do tipo FILESTREAM, que será a base para nossos testes:

CREATE DATABASE [Archive_Demo]
ON
PRIMARY
(NAME=Arch_Data1,FILENAME=‘C:\Temp\Data\arch_data1.mdf’),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM (NAME=Arch3, FILENAME=‘C:\Temp\Data\Filestream’)
LOG
ON (NAME=Arch_log1,FILENAME=‘C:\Temp\Data\arch_log1.ldf’)

GO

3) Habilitar acesso não transacional:

Este é o “pulo do gato” 😉

ALTER DATABASE [Archive_Demo]
SET FILESTREAM (NON_TRANSACTED_ACCESS=FULL, DIRECTORY_NAME = ‘Filestream’)
WITH NO_WAIT

GO

4) Agora, podemos criar a tabela, ou melhor, a FileTable:

USE [Archive_Demo]
GO

CREATE TABLE MyDocuments AS FileTable
WITH (
FileTable_Directory = ‘MyDocuments’,
FileTable_Collate_Filename = database_default
);

GO

Após copiar e colar alguns arquivos via compartilhamento, podemos consultar o conteúdo de ambos:

SELECT
d.name, d.file_type, d.cached_file_size, d.last_write_time, d.is_directory, d.is_archive, d.*
FROM dbo.MyDocuments d

— SELECT to get NETWORK PATH (UNC):
DECLARE @root varchar(100);

SET @root=FileTableRootPath();

SELECT name, @rootasroot, file_stream.GetFileNamespacePath()
FROM dbo.MyDocuments

Resultados: xxxxxxxxxxxxxxxxxxxxxxxxxxx

Também podemos excluir e atualizar/renomear os arquivos usando T-SQL padrão:

UPDATE dbo.MyDocuments
SET name=REPLACE(name,‘.log’,‘.txt’)
WHERE name like ‘%log’

Algumas DMVs que retornam informações sobre FileTables:

— non-transacted access enabled databases:
SELECT
CAST(DB_NAME(database_id)ASvarchar(30)) as db_name,
CAST(non_transacted_access_descasvarchar(20)) as non_transacted_access_desc,
non_transacted_access
FROM sys.database_filestream_options;

GO

— query existing Directory Names for the Instance
SELECT DB_NAME(database_id), directory_name
FROM sys.database_filestream_options;

GO

Bem, agora que temos uma “relação” entre a nossa “tabela” e o “compartilhamento”, podemos começar a pensar em cenários para aplicar esta funcionalidade:

  • File Server integrado ao SQL Server, pesquisável por conteúdo
  • Acesso ao conteúdo dos arquivos via T-SQL ou SMB

Aguardamos o launch do RTM do SQL Server 2012. Será no dia 07/mar/2012.

Para vídeos, tutoriais e mais recursos presentes na nova versão, acesse o site www.sqlserverlaunch.com.

Um abraço!