Você está na página 1de 8

ERIAL SQL SERVER 2012 ENTERPRISE CORE:

FH666-Y346V-7XFQ3-V69JM-RHW28
SQL SERVER � T-SQL Script to find the CD key from Registry
Here is the way to find SQL Server CD key, which was used to install it on machine.
If user do not have permission on the SP, please login using SA username. Expended
stored procedure xp_regread can read any registry values. I have used this XP to
read CD_KEY. This is undocumented Stroed Procedure and may not be supported in
Future Version of SQL Server.

USE master
GO
EXEC xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Microsoft SQL
Server\80\Registration','CD_KEY'
GO

CREATE database (Transact-SQL)


B.Criando um banco de dados que especifica os arquivos de dados e de log de
transa��es
O exemplo a seguir cria o banco de dados Sales. Como a palavra-chave PRIMARY n�o �
usada, o primeiro arquivo (Sales_dat) se torna o arquivo prim�rio. Como nem MB nem
KB � especificado no par�metro SIZE do arquivo Sales_dat, ele usa MB e � alocado em
megabytes. O arquivo Sales_log � alocado em megabytes porque o sufixo MB �
explicitamente declarado no par�metro SIZE.

USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO

===================================================================================
===========================================================
CREATE login (Transact-SQL)

B.Criando um logon com uma senha


Aplica-se a SQL Server e SQL Server PDW.
O exemplo a seguir cria um logon para um usu�rio espec�fico e atribui uma senha. A
op��o MUST_CHANGE requer que os usu�rios alterem essa senha na primeira vez em que
eles conectam ao servidor.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>' MUST_CHANGE;


GO

E.Criando um logon a partir de uma conta de dom�nio do Windows


Aplica-se a SQL Server.
O exemplo a seguir cria um logon a partir de uma conta de dom�nio do Windows.

CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;


GO

===================================================================================
===========================================================
CREATE table (Transact-SQL)

F.Mostrando a defini��o de tabela completa


O pr�ximo exemplo mostra as defini��es de tabela completas com todas as defini��es
de restri��o para a tabela PurchaseOrderDetail, criada no banco de dados
AdventureWorks2012 . Observe que para executar a amostra, o esquema de tabela foi
alterado para dbo.

CREATE TABLE dbo.PurchaseOrderDetail


(
PurchaseOrderID int NOT NULL REFERENCES
Purchasing.PurchaseOrderHeader(PurchaseOrderID),
LineNumber smallint NOT NULL,
ProductID int NULL REFERENCES Production.Product(ProductID),
UnitPrice money NULL,
OrderQty smallint NULL,
ReceivedQty float NULL,
RejectedQty float NULL,
DueDate datetime NULL,
rowguid uniqueidentifier ROWGUIDCOL NOT NULL
CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT (newid()),
ModifiedDate datetime NOT NULL
CONSTRAINT DF_PurchaseOrderDetail_ModifiedDate DEFAULT (getdate()),
LineTotal AS ((UnitPrice*OrderQty)),
StockedQty AS ((ReceivedQty-RejectedQty)),
CONSTRAINT PK_PurchaseOrderDetail_PurchaseOrderID_LineNumber
PRIMARY KEY CLUSTERED (PurchaseOrderID, LineNumber)
WITH (IGNORE_DUP_KEY = OFF)
)
ON PRIMARY;

===================================================================================
===========================================================
CREATE VIEW (Transact-SQL)

D.Usando fun��es internas em uma exibi��o


O exemplo a seguir mostra uma defini��o de exibi��o que inclui uma fun��o interna.
Ao usar fun��es, � necess�rio especificar um nome de coluna para a coluna derivada.
Transact-SQL

USE AdventureWorks2012 ;
GO
IF OBJECT_ID ('Sales.SalesPersonPerform', 'V') IS NOT NULL
DROP VIEW Sales.SalesPersonPerform ;
GO
CREATE VIEW Sales.SalesPersonPerform
AS
SELECT TOP (100) SalesPersonID, SUM(TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader
WHERE OrderDate > CONVERT(DATETIME,'20001231',101)
GROUP BY SalesPersonID;
GO

===================================================================================
===========================================================
CREATE TRigger (Transact-SQL)

C.Usando um gatilho DML AFTER para impor uma regra de neg�cio entre as tabelas
PurchaseOrderHeader e Vendor
Como as restri��es CHECK s� podem referenciar as colunas nas quais a restri��o de
n�vel de coluna ou de n�vel de tabela � definida, qualquer restri��o em todas as
tabelas (nesse caso, as regras de neg�cio) dever� ser definida como gatilho.
O exemplo a seguir cria um gatilho DML. Esse gatilho realiza uma verifica��o
confirmar se a classifica��o de cr�dito para o fornecedor � boa quando � feita uma
tentativa de inserir uma nova ordem de compra na tabela PurchaseOrderHeader. Para
obter a classifica��o de cr�dito do fornecedor, a tabela Vendor deve ser
referenciada. Se a classifica��o de cr�dito for muito baixa, uma mensagem ser�
exibida e a inser��o n�o ser� executada.

SE AdventureWorks2012;
GO
IF OBJECT_ID ('Purchasing.LowCredit','TR') IS NOT NULL
DROP TRIGGER Purchasing.LowCredit;
GO
-- This trigger prevents a row from being inserted in the
Purchasing.PurchaseOrderHeader table
-- when the credit rating of the specified vendor is set to 5 (below average).

CREATE TRIGGER Purchasing.LowCredit ON Purchasing.PurchaseOrderHeader


AFTER INSERT
AS
IF EXISTS (SELECT *
FROM Purchasing.PurchaseOrderHeader p
JOIN inserted AS i
ON p.PurchaseOrderID = i.PurchaseOrderID
JOIN Purchasing.Vendor AS v
ON v.BusinessEntityID = p.VendorID
WHERE v.CreditRating = 5
)
BEGIN
RAISERROR ('A vendor''s credit rating is too low to accept new
purchase orders.', 16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO

-- This statement attempts to insert a row into the PurchaseOrderHeader table


-- for a vendor that has a below average credit rating.
-- The AFTER INSERT trigger is fired and the INSERT transaction is rolled back.

INSERT INTO Purchasing.PurchaseOrderHeader (RevisionNumber, Status, EmployeeID,


VendorID, ShipMethodID, OrderDate, ShipDate, SubTotal, TaxAmt, Freight)
VALUES (2,3,261 ,1652 ,4 ,GETDATE(),GETDATE(),44594.55 ,3567.564
,1114.8638 );
GO
D.Usando um gatilho DDL no escopo do banco de dados
O exemplo a seguir usa um gatilho DDL para evitar que qualquer sin�nimo em um banco
de dados seja descartado.
Transact-SQL
USE AdventureWorks2012;
GO
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO
CREATE TRIGGER safety
ON DATABASE
FOR DROP_SYNONYM
AS
RAISERROR ('You must disable Trigger "safety" to drop synonyms!',10, 1)
ROLLBACK
GO
DROP TRIGGER safety
ON DATABASE;
GO

===================================================================================
===========================================================
CREATE PROCEDURE (Transact-SQL)

A.Criando um procedimento com par�metros de entrada


O exemplo a seguir cria um procedimento armazenado que retorna informa��es de um
funcion�rio espec�fico passando valores do nome e sobrenome do funcion�rio. Este
procedimento aceita apenas correspond�ncias exatas para os par�metros passados.
Transact-SQL
USE AdventureWorks2012;
GO
IF OBJECT_ID ( 'HumanResources.uspGetEmployees', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetEmployees;
GO
CREATE PROCEDURE HumanResources.uspGetEmployees
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS

SET NOCOUNT ON;


SELECT FirstName, LastName, Department
FROM HumanResources.vEmployeeDepartmentHistory
WHERE FirstName = @FirstName AND LastName = @LastName;
GO

O procedimento uspGetEmployees pode ser executado das seguintes maneiras:


Transact-SQL
EXECUTE HumanResources.uspGetEmployees N'Ackerman', N'Pilar';
-- Or
EXEC HumanResources.uspGetEmployees @LastName = N'Ackerman', @FirstName = N'Pilar';
GO
-- Or
EXECUTE HumanResources.uspGetEmployees @FirstName = N'Pilar', @LastName =
N'Ackerman';
GO
-- Or, if this procedure is the first statement within a batch:
HumanResources.uspGetEmployees N'Ackerman', N'Pilar';

C.Criando um procedimento armazenado CLR


O exemplo a seguir cria o procedimento GetPhotoFromDB que referencia o m�todo
GetPhotoFromDB da classe LargeObjectBinary no assembly HandlingLOBUsingCLR . Antes
de o procedimento ser criado, o assembly HandlingLOBUsingCLR � registrado no banco
de dados local.
Transact-SQL

CREATE ASSEMBLY HandlingLOBUsingCLR


FROM '\\MachineName\HandlingLOBUsingCLR\bin\Debug\HandlingLOBUsingCLR.dll';
GO
CREATE PROCEDURE dbo.GetPhotoFromDB
(
@ProductPhotoID int,
@CurrentDirectory nvarchar(1024),
@FileName nvarchar(1024)
)
AS EXTERNAL NAME HandlingLOBUsingCLR.LargeObjectBinary.GetPhotoFromDB;
GO

C.Usando par�metros OUTPUT


O exemplo a seguir cria o procedimento uspGetList. Estes procedimentos retornam uma
lista de produtos com pre�os que n�o excedem uma quantia especificada. O exemplo
mostra usando v�rias instru��es SELECT e v�rios par�metros OUTPUT. Os par�metros
OUTPUT permitem que um procedimento externo, um lote ou mais de uma instru��o
Transact-SQL acessem um conjunto de valores durante a execu��o do procedimento.
Transact-SQL
USE AdventureWorks2012;
GO
IF OBJECT_ID ( 'Production.uspGetList', 'P' ) IS NOT NULL
DROP PROCEDURE Production.uspGetList;
GO
CREATE PROCEDURE Production.uspGetList @Product varchar(40)
, @MaxPrice money
, @ComparePrice money OUTPUT
, @ListPrice money OUT
AS
SET NOCOUNT ON;
SELECT p.[Name] AS Product, p.ListPrice AS 'List Price'
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice;
-- Populate the output variable @ListPprice.
SET @ListPrice = (SELECT MAX(p.ListPrice)
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice);
-- Populate the output variable @compareprice.
SET @ComparePrice = @MaxPrice;
GO
===================================================================================
===========================================================
A.Usando uma fun��o definida pelo usu�rio com valor escalar que calcula a semana
ISO
O exemplo a seguir cria a fun��o definida pelo usu�rio ISOweek. Essa fun��o usa um
argumento de data e calcula o n�mero da semana ISO. Para que essa fun��o calcule
corretamente, SET DATEFIRST 1 deve ser invocado antes da fun��o ser chamada.
O exemplo tamb�m mostra como usar a cl�usula EXECUTE AS para especificar o contexto
de seguran�a no qual um procedimento armazenado pode ser executado. No exemplo, a
op��o CALLER especifica que o procedimento ser� executado no contexto do usu�rio
que o chama. As outras op��es que podem ser especificadas s�o SELF, OWNER e
user_name.
Esta � a chamada da fun��o. Observe que DATEFIRST est� definido como 1.
Transact-SQL

USE AdventureWorks2012;
GO
IF OBJECT_ID (N'dbo.ISOweek', N'FN') IS NOT NULL
DROP FUNCTION dbo.ISOweek;
GO
CREATE FUNCTION dbo.ISOweek (@DATE datetime)
RETURNS int
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @ISOweek int;
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104');
--Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1;
--Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)=12) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1;
RETURN(@ISOweek);
END;
GO
SET DATEFIRST 1;
SELECT dbo.ISOweek(CONVERT(DATETIME,'12/26/2004',101)) AS 'ISO Week';

B.Criando uma fun��o com valor de tabela embutida


O exemplo a seguir retorna uma fun��o com valor de tabela embutida. Ela retorna
tr�s colunas ProductID, Name e a agrega��o dos totais acumulados no ano por loja
como YTD Total para cada produto vendido na loja.
Transact-SQL
USE AdventureWorks2012;
GO
IF OBJECT_ID (N'Sales.ufn_SalesByStore', N'IF') IS NOT NULL
DROP FUNCTION Sales.ufn_SalesByStore;
GO
CREATE FUNCTION Sales.ufn_SalesByStore (@storeid int)
RETURNS TABLE
AS
RETURN
(
SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'Total'
FROM Production.Product AS P
JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID
JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID
JOIN Sales.Customer AS C ON SH.CustomerID = C.CustomerID
WHERE C.StoreID = @storeid
GROUP BY P.ProductID, P.Name
);
GO

D.Criando uma fun��o CLR


O exemplo cria a fun��o CLR len_s. Antes que a fun��o seja criada, o assembly
SurrogateStringFunction.dll � registrado no banco de dados local.
DECLARE @SamplesPath nvarchar(1024);
-- You may have to modify the value of this variable if you have
-- installed the sample in a location other than the default location.
SELECT @SamplesPath = REPLACE(physical_name, 'Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf', 'Microsoft SQL
Server\100\Samples\Engine\Programmability\CLR\')
FROM master.sys.database_files
WHERE name = 'master';

CREATE ASSEMBLY [SurrogateStringFunction]


FROM @SamplesPath +
'StringManipulate\CS\StringManipulate\bin\debug\SurrogateStringFunction.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS;
GO

CREATE FUNCTION [dbo].[len_s] (@str nvarchar(4000))


RETURNS bigint
AS EXTERNAL NAME [SurrogateStringFunction].
[Microsoft.Samples.SqlServer.SurrogateStringFunction].[LenS];
GO
===================================================================================
===========================================================
B.Usando TRY�CATCH em uma transa��o
O exemplo a seguir mostra como um bloco TRY�CATCH funciona dentro de uma transa��o.
A instru��o dentro do bloco TRY gera um erro de viola��o de restri��o.
USE AdventureWorks2012;
GO
BEGIN TRANSACTION;

BEGIN TRY
-- Generate a constraint violation error.
DELETE FROM Production.Product
WHERE ProductID = 980;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;

IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;

IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
GO
===================================================================================
===========================================================

merge into tabela2 as target


using (select nome, idade, cpf from tabela1)
as source (nome, idade, cpf)
on (target.cpf = source.cpf)

-- Atualiza registros diferentes


when matched then
update set target.nome = source.nome,
target.idade = source.idade,
target.cpf = source.cpf

-- Insere registros que n�o existem no destino


when not matched by target then
insert (nome, idade, cpf) values (nome, idade, cpf)

-- Se existir no destino e n�o existir na origem � apagado


when not matched by source then
delete;
===================================================================================
===========================================================
Ranking usando ROW_NUMBER()

SELECT
cod_produto,
des_produto,
ROW_NUMBER() over (order by des_produto) sequencial
FROM
tb_teste_produto

cod_produto des_produto sequencial


����� ���������� ����-
516E Arroz 1
03G Azeitona 2
98K Salame 3
514A Tomate 4
===================================================================================
===========================================================

===================================================================================
===========================================================
===================================================================================
===========================================================
===================================================================================
===========================================================

Você também pode gostar