particionamiento de tablas e indices en 2005

17/11/2005 - 21:25 por Mauro | Informe spam
Alguien estuvo investigando estas opciones ya?
Veo que no es tan simple como en DB2 por ejemplo, deberian haberlo hecho mas
intuitivo

Preguntas similare

Leer las respuestas

#1 Isaias
18/11/2005 - 00:16 | Informe spam
No entiendo eso de INTUITIVO, pero creo que es muy SENCILLO hacerlo en SQL
Server 2005.

USE AdventureWorks
GO

CREATE TABLE PartitioningDemo.TransactionHistoryStaging
(
TransactionID int NOT NULL,
ProductID int NOT NULL,
ReferenceOrderID int NOT NULL,
ReferenceOrderLineNumber smallint NOT NULL,
TransactionDate datetime NOT NULL DEFAULT (getdate()),
TransactionType nchar(1) NOT NULL,
Quantity int NOT NULL,
ActualCost money NOT NULL,
ModifiedDate datetime NOT NULL DEFAULT (getdate())
)
ON fg1
GO

CREATE CLUSTERED INDEX idx_TranStage
ON PartitioningDemo.TransactionHistoryStaging(TransactionID, TransactionDate)
GO

ALTER TABLE PartitioningDemo.TransactionHistory
SWITCH PARTITION 1
TO PartitioningDemo.TransactionHistoryStaging
GO

SELECT * FROM PartitioningDemo.TransactionHistoryStaging

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

ALTER PARTITION FUNCTION TransactionRangePF1()
MERGE RANGE ('01/01/2004')

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

ALTER PARTITION FUNCTION TransactionRangePF1()
SPLIT RANGE ('01/01/2005')

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

INSERT INTO PartitioningDemo.TransactionHistory
VALUES
(1, 1, 1, '01/01/2005', 'A', 1, 1.00, '01/01/2005')

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

SELECT MIN(TransactionDate) FirstTran,
$Partition.TransactionRangePF1(TransactionDate) PartitionNo
FROM PartitioningDemo.TransactionHistory
GROUP BY $Partition.TransactionRangePF1(TransactionDate)
ORDER BY PartitionNo

Saludos
IIslas


"Mauro" escribió:

Alguien estuvo investigando estas opciones ya?
Veo que no es tan simple como en DB2 por ejemplo, deberian haberlo hecho mas
intuitivo



Respuesta Responder a este mensaje
#2 Mauro
18/11/2005 - 13:55 | Informe spam
bueno, justamente a eso me referia, en DB2 con un par de clicks ya esta todo
listo.

"Isaias" wrote in message
news:
No entiendo eso de INTUITIVO, pero creo que es muy SENCILLO hacerlo en SQL
Server 2005.

USE AdventureWorks
GO

CREATE TABLE PartitioningDemo.TransactionHistoryStaging
(
TransactionID int NOT NULL,
ProductID int NOT NULL,
ReferenceOrderID int NOT NULL,
ReferenceOrderLineNumber smallint NOT NULL,
TransactionDate datetime NOT NULL DEFAULT (getdate()),
TransactionType nchar(1) NOT NULL,
Quantity int NOT NULL,
ActualCost money NOT NULL,
ModifiedDate datetime NOT NULL DEFAULT (getdate())
)
ON fg1
GO

CREATE CLUSTERED INDEX idx_TranStage
ON PartitioningDemo.TransactionHistoryStaging(TransactionID,


TransactionDate)
GO

ALTER TABLE PartitioningDemo.TransactionHistory
SWITCH PARTITION 1
TO PartitioningDemo.TransactionHistoryStaging
GO

SELECT * FROM PartitioningDemo.TransactionHistoryStaging

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

ALTER PARTITION FUNCTION TransactionRangePF1()
MERGE RANGE ('01/01/2004')

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

ALTER PARTITION FUNCTION TransactionRangePF1()
SPLIT RANGE ('01/01/2005')

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

INSERT INTO PartitioningDemo.TransactionHistory
VALUES
(1, 1, 1, '01/01/2005', 'A', 1, 1.00, '01/01/2005')

SELECT DISTINCT partition_number, rows FROM sys.Partitions
WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')

SELECT MIN(TransactionDate) FirstTran,
$Partition.TransactionRangePF1(TransactionDate) PartitionNo
FROM PartitioningDemo.TransactionHistory
GROUP BY $Partition.TransactionRangePF1(TransactionDate)
ORDER BY PartitionNo

Saludos
IIslas


"Mauro" escribió:

> Alguien estuvo investigando estas opciones ya?
> Veo que no es tan simple como en DB2 por ejemplo, deberian haberlo hecho


mas
> intuitivo
>
>
>
Respuesta Responder a este mensaje
#3 Carlos Sacristán
18/11/2005 - 14:21 | Informe spam
DB2 sencillo? DB2 en un par de clicks? Vaya, pues creo que debe ser la
única cosa que en DB2 se haga de forma fácil, porque tela el productito...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Mauro" escribió en el mensaje
news:O$
bueno, justamente a eso me referia, en DB2 con un par de clicks ya esta


todo
listo.

"Isaias" wrote in message
news:
> No entiendo eso de INTUITIVO, pero creo que es muy SENCILLO hacerlo en


SQL
> Server 2005.
>
> USE AdventureWorks
> GO
>
> CREATE TABLE PartitioningDemo.TransactionHistoryStaging
> (
> TransactionID int NOT NULL,
> ProductID int NOT NULL,
> ReferenceOrderID int NOT NULL,
> ReferenceOrderLineNumber smallint NOT NULL,
> TransactionDate datetime NOT NULL DEFAULT (getdate()),
> TransactionType nchar(1) NOT NULL,
> Quantity int NOT NULL,
> ActualCost money NOT NULL,
> ModifiedDate datetime NOT NULL DEFAULT (getdate())
> )
> ON fg1
> GO
>
> CREATE CLUSTERED INDEX idx_TranStage
> ON PartitioningDemo.TransactionHistoryStaging(TransactionID,
TransactionDate)
> GO
>
> ALTER TABLE PartitioningDemo.TransactionHistory
> SWITCH PARTITION 1
> TO PartitioningDemo.TransactionHistoryStaging
> GO
>
> SELECT * FROM PartitioningDemo.TransactionHistoryStaging
>
> SELECT DISTINCT partition_number, rows FROM sys.Partitions
> WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')
>
> ALTER PARTITION FUNCTION TransactionRangePF1()
> MERGE RANGE ('01/01/2004')
>
> SELECT DISTINCT partition_number, rows FROM sys.Partitions
> WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')
>
> ALTER PARTITION FUNCTION TransactionRangePF1()
> SPLIT RANGE ('01/01/2005')
>
> SELECT DISTINCT partition_number, rows FROM sys.Partitions
> WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')
>
> INSERT INTO PartitioningDemo.TransactionHistory
> VALUES
> (1, 1, 1, '01/01/2005', 'A', 1, 1.00, '01/01/2005')
>
> SELECT DISTINCT partition_number, rows FROM sys.Partitions
> WHERE [object_id] = OBJECT_ID('PartitioningDemo.TransactionHistory')
>
> SELECT MIN(TransactionDate) FirstTran,
> $Partition.TransactionRangePF1(TransactionDate) PartitionNo
> FROM PartitioningDemo.TransactionHistory
> GROUP BY $Partition.TransactionRangePF1(TransactionDate)
> ORDER BY PartitionNo
>
> Saludos
> IIslas
>
>
> "Mauro" escribió:
>
> > Alguien estuvo investigando estas opciones ya?
> > Veo que no es tan simple como en DB2 por ejemplo, deberian haberlo


hecho
mas
> > intuitivo
> >
> >
> >


Respuesta Responder a este mensaje
#4 Isaias
18/11/2005 - 18:09 | Informe spam
Mauro

No dudo que DB2 con un simple click haga toda la tarea.

SQL Server 2005, tambien cuenta con un Wizard para hacer toda la tarea, solo
que yo postee el codigo T-SQL, ya que muchos DBA's, me incluyo, no nos gusta
mucho el utilizar los wizards.

Saludos
Saludos
IIslas


"Mauro" escribió:

Alguien estuvo investigando estas opciones ya?
Veo que no es tan simple como en DB2 por ejemplo, deberian haberlo hecho mas
intuitivo



Respuesta Responder a este mensaje
#5 Mauro
18/11/2005 - 18:40 | Informe spam
tambien es mi caso,de hecho todo el mantenimeinto y actualizacion de mis
bases funcionan con scripts ,
pero me sorprende que una herramienta microsoft no cuente con esta
facilidad, ya que siempre se han distinguido por eso
quizas en una version futura, ya incluyan la opcion en la creacion de la
tabla desde el managment studio, tal
como lo tiene DB2(que como ya lo mencionaron antes aqui, no se distingue por
ser muy amigable y sin embargo lo tiene)

"Isaias" wrote in message
news:
Mauro

No dudo que DB2 con un simple click haga toda la tarea.

SQL Server 2005, tambien cuenta con un Wizard para hacer toda la tarea,


solo
que yo postee el codigo T-SQL, ya que muchos DBA's, me incluyo, no nos


gusta
mucho el utilizar los wizards.

Saludos
Saludos
IIslas


"Mauro" escribió:

> Alguien estuvo investigando estas opciones ya?
> Veo que no es tan simple como en DB2 por ejemplo, deberian haberlo hecho


mas
> intuitivo
>
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida