Scripts de creación de objetos en Sql Server

admin

March 28, 2016

SQL SERVER

La manera correcta de crear scripts en Sql Server para la creación de objetos, como tablas, procedimientos almacenados, funciones, restricciones, etc., es la siguiente:

  1. Primero, verificar si existe el objeto existe.
    • Si existe, eliminarlo.
  2. Posteriormente, crear el objeto.
  3. Posteriormente, repetir para los objetos que dependen del que acabamos de crear.

**Importante** Establecer siempre la base de datos sobre la que estamos trabajando al principio del script.

**Importante** No olvidemos incluir siempre comentarios descriptivos sobre los objetos, siempre comentalos como si se le estuvieras explicando a un niño, que sean claros y concisos.

Veamos un ejemplo de objeto con la creación de una tabla.

[sql]
USE
MiBaseDeDatos
GO

/* Objeto: MiTabla */
— Eliminar, si existe
IF EXISTS (
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = ‘MiTabla’
)
BEGIN
DROP TABLE
MiTabla
END
GO

/*
* MiTabla
* – Tabla de prueba, almacena datos de prueba
* Podemos poner, fecha, proyecto y más información relevante
*/
CREATE TABLE
MiTabla (
MiTablaId int NOT NULL,
Descripcion varchar(30) NOT NULL,
)
GO

/**
* PK_MiTabla
* – Restricción de llave principal
*/
ALTER TABLE
MiTabla
ADD CONSTRAINT
PK_MiTabla
PRIMARY KEY (
MiTablaId
)
GO

[/sql]

Como podemos observar, la identación es muy importante para que el código sea claro y legible. A mí me gusta el formato:
[sql]
COMMANDO
argumentos
[/sql]

Con este formato puedo leer verticalmente con facilidad las intrucciones en el script. Ahora veremos un ejemplo con la creación de un procedimiento almacenado. Es muy importante documentar:

  1. La funcionalidad del procedimiento
  2. Los parámetros que utiliza, su tipo y descripción
  3. Un ejemplo de como se utiliza

Hay otros datos importantes, como el historial de cambios, donde se especifique, por lo menos:

  1. Quien realizó el cambio
  2. Por que
  3. Cuando

Al efectuar nuestros scripts de esta manera, al reproducirlos en otro servidor, no causarán conflictos si se corren dos veces seguidas por error, y si la ejecución la genera otra persona, le es muy útil para comprender que está haciendo y por que.

[sql]
/* Objeto: miProcedimientoAlmacenado */

— Eliminar, si existe
IF EXISTS (
SELECT
*
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_NAME = ‘miProcedimientoAlmacenado’
AND ROUTINE_TYPE = ‘PROCEDURE’
)
BEGIN
DROP PROCEDURE
miProcedimientoAlmacenado
END
GO

/*
miProcedimientoAlmacenado:
– Selecciona los registros de miTabla a partir de @miParametro
Parámetros:
@miParametros INT – El identificador del registro en la tabla

Ejemplo:
EXEC miProcedimientoAlmacenado 1001

Otra información relevante, como historial de modificaciones:
Luis Espino, 27 Marzo de 2016, Creación
– Creación del script como ejemplo para el blog
*/
CREATE PROCEDURE
miProcedimientoAlmacenado (
@miParametro INT
)
AS
BEGIN
— Breve descripción de la lógica:
— Seleccionamos los registros basados en los parámetros
SELECT
*
FROM
MiTabla
WHERE
MiTablaId = @miParametro
END
GO

— Le damos permisos al público de ejecutar el procedimiento almacenado
GRANT EXECUTE ON
miProcedimientoAlmacenado
TO
PUBLIC
GO
[/sql]

Es realmente sencillo, lo importante es mantener un orden, una estructura en nuestro código.

Related Posts

CURRENT_IDENT y RESEED en Sql Server Compact Edition

admin

April 21, 2018

SQL SERVER

Sql Server Compact Edition no cuenta con funciones como RESEED o CURRENT_IDENT, así que tenemos que hechar mano de consultas a la información de esquema y de alteración de tablas. Como sustituto a IDENT_CURRENT tenemos: [sql] SELECT AUTOINC_NEXT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ‘MiTabla’ AND COLUMN_NAME = ‘MiColumna’ [/sql] Y como sustituto a RESEED tenemos […]

Read More

Conexión a Sql Server con Php 5.6 linux CentOS 6

admin

March 28, 2016

PHP, SQL SERVER

Para conectarse a Sql Server desde linux utilizamos este comando para instalar el driver: [bash] $ sudo yum install -y php-mssql [/bash] Por ejemplo, para php5.6: [bash] $ sudo yum install -y php56w-mssql [/bash] Esta instrucción instala freetds, una colección de librerias para conectarnos con Sql Server desde linux. Con esta librería no solo podemos […]

Read More