Download Visual Studio 2011 Beta
http://www.microsoft.com/visualstudio/11/pt-br/downloads
quinta-feira, 22 de março de 2012
quarta-feira, 21 de março de 2012
Windows Server 8 Beta
Windows Server 8 Beta
A próxima versão do Windows Server, o Windows Server 8, oferece a provedores de hospedagem e de negócios uma infraestrutura escalável, dinâmica, otimizada para a nuvem e preparada para vários locatários. Ela oferece conexão unificada segura e permite que os profissionais de TI atendam às necessidades de negócio com mais rapidez e eficiência.
» Baixe o Windows Server 8 Beta
Capacitação Microsoft - Grátis
• A MVA (Microsoft Virtual
Academy) já conta com mais de nove roteiros disponíveis para capacitação grátis
em português e muitas outras estão em produção.
Faça os cursos online, acumule pontos, faça autoavaliações e melhore ainda mais suas habilidades de desenvolvimento e TI. Não esqueça de se cadastrar como Brasil.
Faça os cursos online, acumule pontos, faça autoavaliações e melhore ainda mais suas habilidades de desenvolvimento e TI. Não esqueça de se cadastrar como Brasil.
SQL Server 2012
SQL Server 2012
E para os que estavam ansiosos como eu, trago uma boa notícia! A Microsoft anunciou publicamente no dia 06/03 que o SQL Server 2012 foi liberado para fabricação (RTM) e estará disponível a partir do dia 1º de abril. Caso você já queira testar e homologar a solução, é possível fazer download do SQL Server 2012 Evaluation Edition no link: http://bit.ly/yAoicN
Explore as novas funcionalidades que acompanham a nova versão! AlwaysOn para ambientes de missão crítica, ColumnStore Index para consultas até 10 vezes mais performáticas, PowerPivot e BI Semantic Model para um BI mais fácil, robusto e flexível, e PowerView para relatórios interativos e com excelente design em poucos cliques. E as novidades não param por aqui. Confira essas e outras novidades em nossos canais: http://bit.ly/yJLP3v
Fique de olho no nosso calendário de eventos. Estaremos passando em várias cidades explorando e apresentando cada uma das funcionalidades mencionadas. Não deixe de participar! Até a próxima! Grande abraço! ;)
E para os que estavam ansiosos como eu, trago uma boa notícia! A Microsoft anunciou publicamente no dia 06/03 que o SQL Server 2012 foi liberado para fabricação (RTM) e estará disponível a partir do dia 1º de abril. Caso você já queira testar e homologar a solução, é possível fazer download do SQL Server 2012 Evaluation Edition no link: http://bit.ly/yAoicN
Explore as novas funcionalidades que acompanham a nova versão! AlwaysOn para ambientes de missão crítica, ColumnStore Index para consultas até 10 vezes mais performáticas, PowerPivot e BI Semantic Model para um BI mais fácil, robusto e flexível, e PowerView para relatórios interativos e com excelente design em poucos cliques. E as novidades não param por aqui. Confira essas e outras novidades em nossos canais: http://bit.ly/yJLP3v
Fique de olho no nosso calendário de eventos. Estaremos passando em várias cidades explorando e apresentando cada uma das funcionalidades mencionadas. Não deixe de participar! Até a próxima! Grande abraço! ;)
segunda-feira, 19 de março de 2012
ARRAY - C#
Uma matriz é uma
estrutura de dados que contém diversas variáveis do mesmo tipo. Uma matriz é declarada com um tipo:
type[] arrayName;
Os exemplos a seguir criar Simples-dimensionais,
multidimensionais e matrizes irregulares:
class TestArraysClass
{
static void Main()
{
// Declare a single-dimensional array
int[] array1 = new int[5];
// Declare and set array element values
int[] array2 = new int[] { 1, 3, 5,
7, 9 };
// Alternative syntax
int[] array3 = {
1, 2, 3, 4, 5, 6 };
// Declare a two dimensional array
int[,]
multiDimensionalArray1 = new int[2, 3];
// Declare and set array element values
int[,]
multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };
// Declare a jagged array
int[][]
jaggedArray = new int[6][];
// Set the values of the first array in the jagged
array structure
jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
}
}
Visão geral
do array
Uma matriz possui as seguintes
propriedades:
·
Uma matriz pode ser Unidimensionais, multidimensionais ou Jagged.
·
O valor padrão de elementos de matriz numérica
estiver definida como zero e elementos de referência são definidos como null.
· Uma matriz jagged é uma matriz de matrizes e,
portanto, seus elementos são tipos de referência e são inicializados para null.
·
As matrizes são indexado de zero: uma matriz com n elementos é indexada a partir de 0 paran-1.
·
Elementos de matriz podem ser de qualquer tipo,
incluindo o tipo de matriz.
· Tipos de matriz são tipos de
referência derivado do tipo base abstrato Array. Como
esse tipo implementa IEnumerable e IEnumerable(Of T),
você pode usar foreach a
iteração em todos os conjuntos em C#.
Message Queuing to Windows Communication Foundation
Message Queuing to Windows Communication Foundation
Este exemplo demonstra como um aplicativo Message Queuing (MSMQ)
pode enviar uma mensagem MSMQ para um serviço Windows Communication Foundation
(WCF). O serviço é um aplicativo
de console auto-hospedado para que você possa observar o serviço de recebimento
de mensagens em fila.
O contrato de serviço é
IOrderProcessor
, que define um serviço de uma maneira,
isto é adequado para uso com as filas. Uma
mensagem de MSMQ não tem um cabeçalho de ação, de modo que não é possível para
mapear diferentes mensagens MSMQ para contratos de operação
automaticamente.Portanto, só pode haver um contrato de operação. Se você quiser definir mais de um
contrato de operação para o serviço, o aplicativo deve fornecer informações a
respeito de qual cabeçalho na mensagem MSMQ (por exemplo, o rótulo ou
CorrelationId) pode ser usada para decidir qual o contrato de operação para
despachar. Isto é demonstrado na Demux
personalizado .
A mensagem MSMQ não contém
informações a respeito de que os cabeçalhos são mapeados para os diferentes
parâmetros do contrato de operação. O
parâmetro é do tipo MSMQMessage (MSMQMessage <T> ), que contém a mensagem MSMQ
subjacente. O tipo "T"
no MSMQMessage (MSMQMessage <T> classe) representa os dados que é
serializado no corpo da mensagem MSMQ.Nesta amostra, o
PurchaseOrder
tipo é serializado no corpo da mensagem
MSMQ.
O código de exemplo a seguir
mostra o contrato de serviço do serviço de processamento de pedidos.
// Define a service contract.
[ServiceContract(Namespace =
"http://Microsoft.ServiceModel.Samples")]
[ServiceKnownType(typeof(PurchaseOrder))]
public interface IOrderProcessor
{
[OperationContract(IsOneWay = true, Action = "*")]
void SubmitPurchaseOrder(MsmqMessage<PurchaseOrder> msg);
}
O serviço é
auto-hospedado. Ao usar MSMQ, a
fila utilizado deve ser criado com antecedência. Isto pode ser feito manualmente ou
através de código. Neste exemplo,
o serviço verifica a existência da fila e cria-se necessário. O nome da fila é lido do arquivo de
configuração.
public static void Main()
{
// Get the MSMQ queue name from the application settings in
// configuration.
string queueName = ConfigurationManager.AppSettings["queueName"];
// Create the MSMQ queue if necessary.
if (!MessageQueue.Exists(queueName))
MessageQueue.Create(queueName, true);
…
}
O serviço cria e abre um ServiceHost para o
OrderProcessorService
, como mostrado no seguinte código de
exemplo.
using (ServiceHost serviceHost = new ServiceHost(typeof(OrderProcessorService)))
{
serviceHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
serviceHost.Close();
}
O nome da
fila MSMQ é especificado em uma secção appSettings do ficheiro de configuração,
como mostrado no exemplo de configuração seguinte.
<appSettings>
<add key="orderQueueName" value=".\private$\Orders" />
</ AppSettings>
A aplicação cliente é uma aplicação que usa o MSMQ Enviar método para enviar uma mensagem
durável e transacional para a fila, como mostrado no seguinte código de exemplo.
//Connect to the queue.
MessageQueue orderQueue = new MessageQueue(ConfigurationManager.AppSettings["orderQueueName"]);
// Create the purchase order.
PurchaseOrder po = new PurchaseOrder();
po.CustomerId = "somecustomer.com";
po.PONumber = Guid.NewGuid().ToString();
PurchaseOrderLineItem lineItem1 = new PurchaseOrderLineItem();
lineItem1.ProductId = "Blue Widget";
lineItem1.Quantity = 54;
lineItem1.UnitCost = 29.99F;
PurchaseOrderLineItem lineItem2 = new PurchaseOrderLineItem();
lineItem2.ProductId = "Red Widget";
lineItem2.Quantity = 890;
lineItem2.UnitCost = 45.89F;
po.orderLineItems = new PurchaseOrderLineItem[2];
po.orderLineItems[0] = lineItem1;
po.orderLineItems[1] = lineItem2;
// Submit the purchase order.
Message msg = new Message();
msg.Body = po;
//Create a transaction scope.
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
orderQueue.Send(msg, MessageQueueTransactionType.Automatic);
// Complete the transaction.
scope.Complete();
}
Console.WriteLine("Placed the order:{0}", po);
Console.WriteLine("Press <ENTER> to terminate client.");
Console.ReadLine();
Quando você
executar o exemplo, as atividades do cliente e do serviço são exibidos em tanto
o serviço e cliente Windows do console. Você
pode ver o serviço de receber mensagens do cliente. Pressione a tecla ENTER em cada janela
de console para desligar o serviço eo cliente. Observe que, como filas está em uso, o
cliente eo serviço não precisa ser instalado e funcionando ao mesmo tempo. Por exemplo, você poderia executar o
cliente, desligá-lo, e então iniciar o serviço e ainda receber suas mensagens.
domingo, 18 de março de 2012
Trocar mensagens com Endpoints WCF e aplicativos de enfileiramento de mensagens
Exchange Messages with WCF
Endpoints and Message Queuing Applications
Você pode integrar existentes Message Queuing (MSMQ)
aplicações com o Windows Communication Foundation (WCF) aplicativos usando a
integração MSMQ ligação para converter mensagens MSMQ para mensagens do WCF. Isto permite-lhe pôr em aplicações
receptor de clientes MSMQ do WCF, bem como chamada em serviços WCF a partir de
aplicações MSMQ remetente.
Nesta seção, vamos
explicar como usar MsmqIntegrationBinding para a comunicação entre na fila (1)
um cliente WCF e um serviço de aplicação MSMQ escrito usando System.Messaging e
(2) um aplicativo cliente MSMQ e um serviço WCF.
Para um exemplo
completo que demonstra como chamar um aplicativo receptor MSMQ de um cliente
WCF, consulte o link Windows Communication
Foundation para o enfileiramento de mensagens.
Para um exemplo
completo que demonstra como chamar um serviço WCF de um cliente MSMQ, consulte
o link enfileiramento de
mensagens para o Windows Communication Foundation.
Para criar um serviço WCF que recebe
mensagens de um cliente MSMQ
1. Definir uma interface que define o contrato de
serviço para o serviço WCF que recebe as mensagens na fila de um aplicativo
remetente MSMQ, como mostrado no seguinte exemplo de código.
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
[ServiceKnownType(typeof(PurchaseOrder))]
public interface IOrderProcessor
{
[OperationContract(IsOneWay = true, Action = "*")]
void SubmitPurchaseOrder(MsmqMessage<PurchaseOrder> msg);
}
public class OrderProcessorService : IOrderProcessor
{
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void SubmitPurchaseOrder(MsmqMessage<PurchaseOrder> ordermsg)
{
PurchaseOrder po = (PurchaseOrder)ordermsg.Body;
Random statusIndexer = new Random();
po.Status = (OrderStates)statusIndexer.Next(3);
Console.WriteLine("Processing {0} ", po);
}
public static void Main()
{
// Get base address from appsettings in configuration.
Uri baseAddress = new Uri(ConfigurationManager.AppSettings["baseAddress"]);
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(IOrderProcessor), baseAddress))
{
// Open the ServiceHostBase to create listeners and start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("The service is running in the following account: {0}", WindowsIdentity.GetCurrent().Name);
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
}
}3. Criar um arquivo de configuração que especifica o MsmqIntegrationBinding.
<configuration>
<appSettings>
<!-- use appSetting to configure MSMQ queue name -->
<add key="orderQueueName" value=".\private$\Orders" />
<add key="baseAddress" value="http://localhost:8000/ServiceModelSamples/Service" />
</appSettings>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.OrderProcessorService" >
<endpoint address="msmq.formatname:DIRECT=OS:.\private$\Orders"
binding="msmqIntegrationBinding"
bindingConfiguration="OrderProcessorBinding"
contract="Microsoft.ServiceModel.Samples.IOrderProcessor">
</endpoint>
</service>
</services>
<bindings>
<msmqIntegrationBinding>
<binding name="OrderProcessorBinding" >
<security mode="None" />
</binding>
</msmqIntegrationBinding>
</bindings>
</system.serviceModel >
</configuration>
// Create the purchase order.
PurchaseOrder po = new PurchaseOrder();
po.customerId = "somecustomer.com";
po.poNumber = Guid.NewGuid().ToString();
PurchaseOrderLineItem lineItem1 = new PurchaseOrderLineItem();
lineItem1.productId = "Blue Widget";
lineItem1.quantity = 54;
lineItem1.unitCost = 29.99F;
PurchaseOrderLineItem lineItem2 = new PurchaseOrderLineItem();
lineItem2.productId = "Red Widget";
lineItem2.quantity = 890;
lineItem2.unitCost = 45.89F;
po.orderLineItems = new PurchaseOrderLineItem[2];
po.orderLineItems[0] = lineItem1;
po.orderLineItems[1] = lineItem2;
OrderProcessorClient client = new OrderProcessorClient("OrderResponseEndpoint");
MsmqMessage<PurchaseOrder> ordermsg = new MsmqMessage<PurchaseOrder>(po);
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
client.SubmitPurchaseOrder(ordermsg);
scope.Complete();
}
Console.WriteLine("Order has been submitted:{0}", po);
//Closing the client gracefully closes the connection and cleans up resources.
client.Close();
Console.WriteLine();
Console.WriteLine("Press <ENTER> to terminate client.");
Console.ReadLine();
quinta-feira, 15 de março de 2012
Visão Geral - ADO.NET Entity Framework
O ADO.NET Entity Framework é um conjunto de
tecnologias que suportam o desenvolvimento de aplicações orientadas a dados de
software. O Entity Framework permite aos desenvolvedores trabalhar com
dados em forma de domínio propriedades e objetos específicos, tais como
clientes e endereços de clientes, sem ter de se preocupar com as tabelas de
banco de dados subjacentes e colunas onde esses dados estão
armazenados. Com o Entity Framework, os desenvolvedores podem trabalhar em
um nível maior de abstração, quando eles lidam com dados, e pode criar e manter
aplicações orientadas a dados com menos código do que nas aplicações
tradicionais.
O ADO.NET Entity Framework foi introduzido pela
primeira vez como parte do. NET Framework e Microsoft Visual liberação
Studio. Começando com a versão do Entity Framework versão 4.1, Entity
Framework não é of.NET parte, mas é construído. NET. Para obter a última
versão do Entity Framework, o uso de pacote
"Entity Framework" NuGet .
. Os principais componentes do NET Framework e do
Visual Studio que suportam a tecnologia Entity Framework são: ObjectContext , EntityClient , MetadataWorkspace ,EntityDataSource , EDMX arquivo de
dados ADO.NET Entity Tools Modelo que fazem parte do Visual Studio.
. Os principais componentes que fazem parte do
Entity Framework e não fazem parte da NET são: DbContext , Código
Primeiro , Migrações , ADO.NET DbContext
Gerador de código modelo T4.
Visão global
Entity Framework é um mapeador objeto-relacional
(ORM) que reduz a diferença de impedância entre o mundo orientado a objeto de
desenvolvedores. NET Framework e do mundo dos bancos de dados
relacionais. Ele permite aos desenvolvedores principalmente interagir com
o modelo conceitual de um aplicativo, usando familiares técnicas orientadas a
objeto. Em Entity Framework você pode trabalhar com dados na forma de
domínio propriedades e objetos específicos, tais como clientes e endereços
de clientes , sem ter que se preocupar com as tabelas de banco de
dados subjacentes e colunas onde esses dados estão armazenados. Os
desenvolvedores podem emitir operações de acesso a dados em relação ao modelo
conceitual, e Entity Framework traduz as operações em ações de bancos de dados
relacionais.
Há duas camadas principais de uma aplicação Entity
Framework:
·
A camada de modelagem
·
A camada de objeto
A camada de modelagem contém três
componentes:
·
Um modelo conceitual composto por tipos de domínios
específicos de entidades e relacionamentos, com base em um Modelo de Dados Entidade (EDM)
·
Um esquema de banco de dados que define tabelas e
relacionamentos
·
Um mapeamento entre o modelo conceitual eo esquema
de banco de dados
Entity Framework usa o componente de
mapeamento para transformar as operações contra a entidade objetos, tais como
criar, ler, atualizar e excluir-em operações equivalentes no banco de dados.
A Entidade camada de objeto Framework contém
digitados Common Language Runtime (CLR) objetos que refletem as entidades e
relacionamentos definidos no modelo conceitual. Esses objetos podem ser
consumidos por linguagens de programação. O formato exato dos tipos é
controlado por opções que você fornecer para Entity Framework.
Mapeamento e Modelagem
Existem diferentes maneiras para criar
a camada de mapeamento ea camada de objeto:
·
Você pode usar ADO.NET Entity Tools modelo de dados
para gerar o modelo de um banco de dados existente. Isso gera um modelo
padrão conceitual e mapeamento, que você pode personalizar usando o Entity
Designer Modelo de Dados. Você também pode usar ferramentas para criar
graficamente um modelo conceitual usando o Entity Designer modelo de dados, e
gerar um banco de dados baseado em metadados construída pela ferramenta de que
modelo. Para mais informações, consulteFerramentas de
entidade de dados modelo .
·
Você pode usar o desenvolvimento de código Primeiro
para definir o seu modelo conceitual no código. O Entity Framework infere
do modelo conceitual com base nos tipos de objetos e configurações adicionais
que você definir. Os metadados de mapeamento é gerado durante o tempo de
execução com base em uma combinação de como você definiu os tipos de domínio e
informações de configuração adicional que você fornecer no código. O
modelo pode ser mapeado para um banco de dados existente ou você pode gerar um
novo banco de dados do seu modelo. Para mais informações, consulte código de
desenvolvimento do primeiro .
Trabalhando com objetos
Entidade camada de objeto Framework
permite que você faça o seguinte:
·
Execute consultas em relação ao modelo conceitual.
·
Materializar dados retornados da fonte de dados
como objetos.
·
Acompanhar as mudanças que foram feitas para os
objetos.
·
Propagar objeto muda de volta para a fonte de
dados.
·
Vincular objetos a controles.
terça-feira, 13 de março de 2012
Como fazer Insert no SQL Server
Insert (Transact-SQL)
Adiciona uma ou mais linhas a uma
tabela ou exibição no SQL Server.
(T-SQL)
-- Standard
INSERT syntax
[ WITH
<common_table_expression> [ ,...n ] ]
INSERT
{
[
TOP (expression) [ PERCENT ] ]
[
INTO ]
{ <object> |
rowset_function_limited
[
WITH ( <Table_Hint_Limited> [ ...n ] ) ] }
{
[
(column_list) ]
[
<OUTPUT Clause> ]
{
VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ]
|
derived_table
|
execute_statement
|
<dml_table_source>
| DEFAULT VALUES
}
}
}
[; ]
Argumentos
WITH
<common_table_expression>
Especifica o conjunto de resultados
nomeado temporário, também conhecido como expressão de tabela comum, definido
dentro do escopo da instrução INSERT. O conjunto de resultados é derivado de
uma instrução SELECT.
Também podem ser usadas expressões de tabela comuns
com as instruções SELECT, DELETE, UPDATE, MERGE e CREATE VIEW. Para obter mais informações, consulte WITH common_table_expression (Transact-SQL).
TOP (expression) [
PERCENT ]
Especifica o número ou porcentagem de
linhas aleatórias que serão inseridas. expression pode ser um
número ou uma porcentagem de linhas. As linhas referenciadas na expressão TOP
que são usadas com INSERT, UPDATE ou DELETE não são organizadas em nenhuma
ordem.
São necessários parênteses delimitando expression em
TOP nas instruções INSERT, UPDATE e DELETE. Para obter mais informações,
consulte TOP
(Transact-SQL).
INTO
É uma palavra-chave opcional que pode
ser usada entre INSERT e a tabela de destino.
server_name
É o nome do servidor vinculado no qual
a tabela ou exibição está localizada. server_name pode ser
especificado como um nome de servidor
vinculado ou usando-se a função OPENDATASOURCE.
Quando server_name é especificado
como um servidor vinculado, database_name e schema_name são
necessários. Quando server_name é especificado com
OPENDATASOURCE, database_name eschema_name podem
não se aplicar a todas as fontes de dados e podem estar sujeitos aos recursos
do provedor OLE DB que acessa o objeto remoto. Para obter mais informações,
consulte Consultas
distribuídas.
database_name
É o nome do banco de dados.
schema_name
É o nome do esquema ao qual a tabela ou
exibição pertence.
table_or view_name
É o nome da tabela ou exibição que irá
receber os dados.
Uma variável table,
dentro de seu escopo, pode ser usada como uma origem de tabela em uma instrução
INSERT.
A exibição referida por table_or_view_name deve
ser atualizável e fazer referência exata a uma tabela base na cláusula FROM da
exibição. Por exemplo, um INSERT em uma exibição de várias tabelas deve usar um column_list que
faça referência apenas a colunas de uma tabela base. Para obter mais
informações sobre exibições atualizáveis, consulte CREATE VIEW
(Transact-SQL).
rowset_function_limited
É a função OPENQUERY ou OPENROWSET.
O uso destas funções está sujeito aos recursos do provedor OLE DB que acessa o
objeto remoto. Para obter mais informações, consulte Consultas
distribuídas.
WITH ( <table_hint_limited> [... n ] )
Especifica uma ou mais dicas de tabela
permitidas para uma tabela de destino. A palavra-chave WITH e os parênteses são
necessários.
READPAST, NOLOCK e READUNCOMMITTED não são
permitidos. Para obter mais informações sobre dicas de tabela, consulte Dicas de tabela
(Transact-SQL).
(column_list)
É uma lista de uma ou mais colunas nas
quais inserir dados. column_list deve ser incluída entre
parênteses e estar delimitada por vírgulas.
Se uma coluna não estiver na column_list,
o Mecanismo de Banco de Dados deve ser capaz de fornecer um valor baseado na
definição da coluna. Caso contrário, a linha não poderá ser carregada. O
Mecanismo de Banco de Dados fornece um valor automaticamente para a coluna se a
coluna:
·
Tiver uma propriedade IDENTITY. O próximo valor de
identidade incremental for usado.
·
Tiver um padrão. O valor padrão da coluna será
usado.
·
Tiver um tipo de dados timestamp. O
valor do carimbo de data/hora atual será usado.
·
Permitir valor nulo. Um valor nulo será usado.
·
For uma coluna computada. O valor calculado será
usado.
column_list e uma lista de valores devem ser usados quando valores explícitos
são inseridos em uma coluna de identidades e a opção SET IDENTITY_INSERT deve
estar definida como ON para a tabela.
Cláusula OUTPUT
Retorna linhas inseridas como parte da
operação de inserção. Os resultados podem ser retornados ao aplicativo de
processamento ou inseridos em uma tabela ou variável de tabela para
processamento futuro.
A cláusula OUTPUT não
tem suporte em instruções DML que fazem referência a exibições particionadas
locais, exibições particionadas distribuídas ou tabelas remotas, ou instruções
INSERT que contêm umexecute_statement. A cláusula OUTPUT INTO não é
suportada em instruções INSERT que contenham uma cláusula
<dml_table_source>.
VALUES
Apresenta a(s) lista(s) de valores de
dados a serem inseridos. Deve haver valores de dados para cada coluna em column_list,
se especificada, ou na tabela. A lista de valores deve ser incluída entre
parênteses.
Se os valores na lista não estiverem na mesma ordem
que as colunas na tabela ou se não tiverem um valor para cada coluna da tabela, column_list deverá
ser usado para especificar explicitamente a coluna que armazena cada valor de
entrada.
É possível usar o construtor de linhas do
Transact-SQL (também chamado construtor de valor de tabela) para especificar várias
linhas em uma única instrução INSERT. O construtor de linhas consiste em uma
única cláusula VALUES com várias listas de valores entre parênteses e separados
por uma vírgula. Para obter mais informações, consulte Construtor de
valor de tabela (Transact-SQL).
DEFAULT
Força o Mecanismo de Banco de Dados a
carregar o valor padrão definido para uma coluna. Se não existir um padrão para
a coluna e a coluna aceitar valores nulos, NULL será inserido. Para uma coluna
definida com o tipo de dados timestamp, o próximo valor do carimbo
de data/hora será inserido. DEFAULT não é válido para uma coluna de identidade.
expression
É uma constante, uma variável ou uma
expressão. A expressão não pode conter uma instrução EXECUTE.
Ao fazer referência a tipos de dados de caracteres
Unicode nchar, nvarchar e ntext, 'expression'
deve ter a letra maiúscula 'N' como prefixo. Se 'N' não for especificado, o SQL
Server irá converter a cadeia de caracteres na página de código correspondente
ao agrupamento padrão do banco de dados ou coluna. Qualquer caractere não
localizado nessa página de código será perdido. Para obter mais informações,
consulte Programação do
lado do servidor com Unicode.
derived_table
É qualquer instrução SELECT válida que
retorne linhas de dados a serem carregadas na tabela. A instrução SELECT não
pode conter uma CTE (expressão de tabela comum).
execute_statement
É qualquer instrução EXECUTE que
retorne dados com instruções SELECT ou READTEXT.
Se execute_statement for usado com
INSERT, cada conjunto de resultados deverá ser compatível com as colunas da
tabela ou da column_list.
execute_statement pode ser usado para executar
procedimentos armazenados no mesmo servidor ou em um servidor remoto. O
procedimento no servidor remoto é executado e os conjuntos de resultados são
retornados ao servidor local e carregados na tabela no servidor local. Em uma
transação distribuída, execute_statement não pode ser emitido
em um servidor vinculado de auto-retorno quando a conexão tem vários conjuntos
de resultados ativos (MARS) habilitados.
Se execute_statement retornar dados com a instrução
READTEXT, cada instrução READTEXT poderá retornar um máximo de 1 MB (1024 KB)
de dados. execute_statement também pode ser usado com
procedimentos estendidos. execute_statement insere os dados
retornados pelo thread principal do procedimento estendido. No entanto, saídas
de threads diferentes do thread principal não são inseridas.
Você não pode especificar um parâmetro avaliado por tabela como o
destino de uma instrução INSERT EXEC; porém, ele pode ser especificado como uma
origem na cadeia de caracteres INSERT EXEC ou procedimento armazenado. Para
obter mais informações, consulte Parâmetros com
valor de tabela (Mecanismo de Banco de Dados).
<dml_table_source>
Especifica que as linhas inseridas na
tabela de destino são as retornadas pela cláusula OUTPUT de uma instrução
INSERT, UPDATE, DELETE ou MERGE, opcionalmente filtradas por uma cláusula
WHERE. Se <dml_table_source> estiver especificado, o destino da instrução
INSERT externa deverá atender às seguintes restrições:
·
Deve ser uma tabela base, não uma exibição.
·
Não pode ser uma tabela remota.
·
Não pode ter gatilhos definidos.
·
Não pode participar de relações de chave
primária/chave estrangeira.
·
Ele não pode participar de replicação de mesclagem
ou de assinaturas atualizáveis para replicação transacional.
O nível de compatibilidade do banco de
dados deve ser definido como 100 ou superior. Para obter mais informações,
consulte cláusula OUTPUT
(Transact-SQL).
<select_list>
É uma lista separada por vírgulas que
especifica quais colunas retornadas pela cláusula OUTPUT devem ser inseridas.
As colunas de <select_list> devem ser compatíveis com as colunas nas
quais os valores serão inseridos. <select_list> não pode fazer referência
a funções de agregação ou a TEXTPTR.
<dml_statement_with_output_clause>
É uma instrução INSERT, UPDATE, DELETE
ou MERGE válida que retorna linhas afetadas em uma cláusula OUTPUT. A instrução
não pode conter uma cláusula WITH nem pode ter como destino tabelas remotas ou
exibições particionadas. Se UPDATE ou DELETE for especificada, ela não poderá
ser uma instrução UPDATE ou DELETE baseada em cursor. Linhas de origem não
podem ser referenciadas como instruções DML aninhadas.
WHERE <search_condition>
É qualquer cláusula WHERE que contém
uma <search_condition> válida que filtra as linhas retornadas por
<dml_statement_with_output_clause>. Para obter mais informações, consulte Critério de
pesquisa (Transact-SQL). Quando usada nesse contexto, <search_condition>
não pode conter subconsultas, funções escalares definidas pelo usuário que
executam acesso a dados, funções agregadas, TEXTPTR, nem predicados de pesquisa
de texto completo.
DEFAULT VALUES
Força a nova linha a conter os valores
padrão definidos para cada coluna.
BULK
Usado por ferramentas externas para
carregar um fluxo de dados binários. Esta opção não é dirigida para uso com
ferramentas como SQL Server Management Studio, SQLCMD, OSQL ou interfaces de
programação de aplicativo de acesso a dados, como o SQL Server Native Client.
FIRE_TRIGGERS
Especifica que qualquer gatilho de
inserção definido na tabela de destino seja executado durante a operação de
carregamento de fluxo de dados binários. Para obter mais informações, consulte BULK INSERT
(Transact-SQL).
CHECK_CONSTRAINTS
Especifica que todas as restrições na
tabela ou exibição de destino devem ser verificadas durante a operação de
carregamento de fluxo de dados binários. Para obter mais informações, consulte BULK INSERT
(Transact-SQL).
KEEPNULLS
Especifica que as colunas vazias devem
reter um valor nulo durante a operação de carregamento de fluxo de dados
binários. Para obter mais informações, consulte Mantendo valores
nulos ou usando valores padrão durante a importação em massa.
KILOBYTES_PER_BATCH =
kilobytes_per_batch
Especifica o número aproximado de
kilobytes (KB) de dados por lote como kilobytes_per_batch. Para
obter mais informações, consulte BULK INSERT
(Transact-SQL).
ROWS_PER_BATCH =rows_per_batch
Indica o número aproximado de linhas de
dados no fluxo de dados binários. Para obter mais informações, consulte BULK INSERT
(Transact-SQL).
Observação Um erro de sintaxe será gerado se
uma lista de colunas não for fornecida.
Exemplo Sintaxe SQL Server
USE
AdventureWorks2008R2;
GO
INSERT INTO
Production.UnitMeasure
VALUES (N'FT', N'Feet', '20080414');
GO
USE
AdventureWorks2008R2;
GO
INSERT INTO
Production.UnitMeasure
VALUES (N'FT2',
N'Square Feet ', '20080923'), (N'Y', N'Yards', '20080923'), (N'Y3', N'Cubic
Yards', '20080923');
GO
USE
AdventureWorks2008R2;
GO
INSERT INTO
Production.UnitMeasure (Name, UnitMeasureCode,
ModifiedDate)
VALUES
(N'Square Yards', N'Y2', GETDATE());
GO
USE AdventureWorks2008R2;
GO
IF OBJECT_ID
('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE
dbo.T1
(
column_1 AS 'Computed column ' + column_2,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('my
column default'),
column_3 rowversion,
column_4 varchar(40) NULL
);
GO
INSERT INTO
dbo.T1 (column_4)
VALUES ('Explicit value');
INSERT INTO
dbo.T1 (column_2, column_4)
VALUES ('Explicit value', 'Explicit
value');
INSERT INTO
dbo.T1 (column_2)
VALUES ('Explicit value');
INSERT INTO T1
DEFAULT VALUES;
GO
SELECT
column_1, column_2, column_3, column_4
FROM dbo.T1;
GO
USE
AdventureWorks2008R2;
GO
IF OBJECT_ID
('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE
dbo.T1 ( column_1 int IDENTITY, column_2 VARCHAR(30));
GO
INSERT T1
VALUES ('Row #1');
INSERT T1
(column_2) VALUES ('Row #2');
GO
SET
IDENTITY_INSERT T1 ON;
GO
INSERT INTO T1
(column_1,column_2)
VALUES (-99, 'Explicit identity value');
GO
SELECT
column_1, column_2
FROM T1;
GO
USE
AdventureWorks2008R2;
GO
IF OBJECT_ID
('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE
dbo.T1
(
column_1 int IDENTITY,
column_2 uniqueidentifier,
);
GO
INSERT INTO
dbo.T1 (column_2)
VALUES (NEWID());
INSERT INTO T1
DEFAULT VALUES;
GO
SELECT
column_1, column_2
FROM dbo.T1;
GO
Para obter mais exemplos de
sintaxe SQL favor consultar o site abaixo.
Até a próxima onde vamos tratar o
comando UPDATE
Assinar:
Postagens (Atom)