You are on page 1of 34

Manual de referencia

SQL SERVER
INDICE

1. Bases de datos en Sql Server


2. Tablas
3. Relaciones entre tablas
4. Tipos de datos (T-SQL)
5. Reglas (Rules)
6. Valores predeterminados (Default)
7. Instrucción <<Alter table >>
8. Vistas
9. Procedimientos almacenados
10. Funciones (Roles)
11. Disparadores (Triggers)
12. Procedimientos sp_help
13. Procedimientos almacenados del sistema
1. Bases de datos
• Creación de base de datos.
Create database nombre de la base de datos.

• Ubicación de la base de datos


Los archivos se almacenan físicamente en un fichero.mdf. También se crea un fichero
log con extensión.ldf.

• Eliminación de una base de datos


Es posible eliminar más de una base de datos a la vez.

drop database nombre_bd1 [,nombre_bd2.......]

2. Tablas
• Definiciones completas de tabla
create table [base de datos.[propietario].] nombre tabla ({columna tipo de
datos[restricciones],.......})

ejemplo:

/* ************************** table trabajos ***************************/


CREATE TABLE trabajos
(trab_cod smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED,
desc_trab varchar(50) NOT NULL DEFAULT 'nueva opsition no
formalizada',
min_sub tinyint NOT NULL CHECK (min_sub >= 10),
max_sub tinyint NOT NULL CHECK (max_sub <= 250)
)

/* ***************** tabla empresas ******************** */


CREATE TABLE empresas
(
empres_cod char(4) NOT NULL
CONSTRAINT pkempres_cod PRIMARY KEY
CHECK (empres_cod IN ('1389', '0736', '0877', '1622', '1756')
OR empres_cod LIKE '99[0-9][0-9]'),
nom_empres varchar(40) NULL,
ciudad varchar(20) NULL,
pais varchar(30) NULL DEFAULT('USA')
)
/* ************************* tabla empleados ************************* */
CREATE TABLE empleados
(emp_cod char(15)
CONSTRAINT pkemp_cod PRIMARY KEY
CONSTRAINT ckemp_cod CHECK (emp_cod LIKE
'[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' or
emp_cod LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]'),
nombre varchar(20) NOT NULL,
apellido varchar(30) NOT NULL,
trab_cod smallint NOT NULL DEFAULT 1 REFERENCES trabajos(trab_cod),
empres_cod char(4) NOT NULL DEFAULT ('9952') REFERENCES
empresas(empres_cod),
fecha_alta datetime NOT NULL DEFAULT (getdate())
)

• Utilizar una expresión para una columna calculada


Este ejemplo ilustra el uso de una expresión ((columna1 + columna2)/2) para calcular
la columna calculada mimedia.

CREATE TABLE mitabla


( columna1 int, columna2 int, mimedia AS (columna1 + columna2)/2 )

• Modificación de tablas
Alter table [base de datos.[propietario].]nombre tabla [add {columna tipo
[restricciones],......}]

3. Relaciones
Puede confirmar las columnas relacionadas y establecer las propiedades de una nueva
relación.

Esta tabla muestra la función de las opciones disponibles en el cuadro de diálogo

Crear relación-> Opción Función

Nombre de la relación Muestra el nombre asignado por el sistema a la relación. Para


cambiar el nombre a la relación, escriba un nombre nuevo en el cuadro de texto.

Tabla de la clave principal Muestra el nombre de la tabla de la clave principal de la


relación, seguido de las columnas que forman la clave principal. Puede seleccionar
distintas columnas para que coincidan con las columnas mostradas en la tabla de la
clave externa.

Tabla de la clave externa Muestra el nombre de la tabla de la clave externa en la


relación, seguido de las columnas que forman la clave externa. Puede seleccionar
distintas columnas para que coincidan con las columnas mostradas en la tabla de la
clave principal.
Comprobar datos existentes en la creación
Aplica la restricción a los datos existentes de la tabla de la clave externa cuando se
crea la relación. Si se activa esta casilla, un mensaje de error le notificará que algunos
datos han infringido la restricción.

Habilitar relación para INSERT y UPDATE


Aplica la restricción cuando se agregan, eliminan o actualizan datos en la tabla de la
clave externa con estas instrucciones.

Habilitar relación para duplicación


Copia la restricción cuando la tabla de la clave externa se copia a una base de datos
distinta.

Aceptar Crea la relación en el diagrama de la base de datos y establece las


propiedades que ha seleccionado.

Cancelar Borra la línea de la relación del diagrama de la base de datos. La relación no


se crea.

4. Tipos de datos (T-SQL)


En Microsoft® SQL Server™, cada columna, variable local, expresión y parámetro tiene
un tipo de datos. El conjunto de tipos de datos suministrados por el sistema se
muestra debajo. Los tipos de datos definidos por el usuario, que son alias de los tipos
de datos suministrados por el sistema, pueden también definirse. Para obtener más
información acerca de los tipos de datos definidos por el usuario.

Enteros
bit
Datos enteros con valor 1 ó 0.

int
Datos enteros (números enteros) comprendidos entre -231 (-2.147.483.648) y 231 - 1
(2.147.483.647).

smallint
Datos enteros comprendidos entre 215 (-32.768) y 215 - 1 (32.767).

tinyint
Datos enteros comprendidos 0 y 255.

Decimales y numéricos
decimal
Datos de precisión y escala numérica fijas comprendidos entre -1038 -1 y 1038 -1.

numérico
Sinónimo de decimal. money y smallmoney
money
Valores de moneda comprendidos entre -263 (-922.337.203.685.477,5808) y 263 - 1
(+922.337.203.685.477,5807), con una precisión de una diezmilésima de la unidad
monetaria.

smallmoney
Valores de moneda comprendidos entre -214.748,3648 y +214.748,3647, con una
precisión de una
diezmilésima de la unidad monetaria.

Numéricos con aproximación


float
Números con precisión de coma flotante comprendidos entre -1,79E + 308 y 1,79E +
308.

real
Números con precisión de coma flotante comprendidos entre -3,40E + 38 y 3,40E + 38.
datetime y smalldatetime

datetime
Datos de fecha y hora comprendidos entre el 1 de enero de 1753 y el 31 de diciembre
de 9999, con una precisión de un trescientosavos de segundo, o 3,33 milisegundos.

smalldatetime
Datos de fecha y hora comprendidos entre el 1 de enero de 1900 y el 6 de junio de
2079, con una precisión de un minuto.

Numéricos
cursor
Una referencia a un cursor.

timestamp
Es un número único para toda la base de datos.

uniqueidentifier
Un identificador exclusivo global (GUID).

Cadenas de caracteres
char
Datos de caracteres no Unicode de longitud fija con una longitud máxima de 8.000
caracteres.

varchar
Datos no Unicode de longitud variable con un máximo de 8.000 caracteres.

text
Datos no Unicode de longitud variable con una longitud máxima de 231 - 1
(1.147.483.647) caracteres.
Cadenas de caracteres Unicode
nchar
Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres.

nvarchar
Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres.
sysname es el tipo de datos suministrado por el sistema y definido por el usuario que
es sinónimo de nvarchar(128) y que se utiliza para hacer referencia a nombres de
objetos de bases de datos.

ntext
Datos Unicode de longitud variable con una longitud máxima de 230 - 1
1.073.741.823) caracteres.

Cadenas binarias
binary
Datos binarios de longitud fija con una longitud máxima de 8.000 bytes.

varbinary
Datos Unicode de longitud variable con una longitud máxima de 8.000 bytes.

image
Datos Unicode de longitud variable con una longitud máxima de 231 - 1
(1.147.483.647) bytes.

Sinónimos
Los tipos de datos sinónimos se incluyen por compatibilidad con SQL-92.

Sinónimo Tipo de datos asignado al sistema

Binary varying varbinary


char varying varchar
character char
character char(1)
character(n) char(n)
character varying(n) varchar(nn)
Dec decimal
Double precision float
Flota[(n)] para n = 1-7 real
Flota[(n)] para n = 8-15 float
Integer int
national character(n) nchar(n)
national char(n) nchar(n)
national character
varying(n)
nvarchar(n)
national char varying(n) nvarchar(n)
national text ntext
Numeric decimal
• "Uniqueidentifier" se trata de un numero hexadecimal de 16Bytes que hace
referencia a un idenficador exclusivo global (GUID). El GUID es especialmente util
cuando una fila debe ser única entre otras muchas por ejemplo, en una columa con
números de identificación de los clientes, para compilar una lista de clientes en una
compañía en varios países.

• Tipos definidos por el Usuario: Permite que el usuario defina tipos de datos como por
Ej.: el código de producto, que se basa en el tipo de datos "char" y que consta de dos
letras mayúsculas seguidas de un numero de proveedor de 5 cifras. Los tipos de datos
definidos por el usuario también se llaman UDT se basan en el tipo de datos del
sistema, se pueden utilizar cuando varias tablas deben almacenar el mismo tipo de
datos en una columna, tienen exactamente el mismo tipo de datos en una columna y
desea asegurarse de que dicha columna tiene exactamente el mismo tipo de datos en
todas las tablas, longitud, condición de aceptación de valores nulos,...

5. Rules
Cuando se enlaza una regla a una columna o un tipo de datos definido por el usuario,
especifica los valores aceptables que se pueden insertar en esa columna. Las reglas,
que son una característica de compatibilidad con versiones anteriores, realizan
algunas de las mismas funciones que las restricciones de comprobación. Las
restricciones CHECK, creadas mediante la palabra clave CHECK de ALTER o CREATE
TABLE, son la forma preferida y estándar de restringir los valores de una columna (se
pueden definir restricciones múltiples en una o múltiples columnas). Una columna o
tipo de datos definido por el usuario sólo puede tener una regla enlazada. Sin
embargo, una columna puede tener una regla y una o más restricciones de
comprobación asociadas con ella. Cuando esto es así, se evalúan todas las
restricciones.

Sintaxis

CREATE RULE regla


AS expresiónCondición

Ejemplos

A. Regla con un intervalo


Este ejemplo crea una regla que restringe el intervalo de enteros que se insertan en
las columnas a las que la regla está enlazada.

CREATE RULE range_rule


AS
@range >= $1000 AND @range < $20000
B. Regla con una lista
Este ejemplo crea una regla que restringe los valores actuales que se escriben en las
columnas a las que la regla está enlazada, a sólo aquellos enumerados en la regla.

CREATE RULE list_rule


AS
@list IN ('1389', '0736', '0877')

C. Regla con un modelo


Este ejemplo crea una regla que sigue un modelo de dos caracteres cualquiera con un
guión a continuación, cualquier número de caracteres (o no caracteres) y un entero
entre 0 y 9 al final.

CREATE RULE pattern_rule


AS
@value LIKE '_ _-%[0-9]'

sp_bindrule (T-SQL)
Enlaza una regla a una columna o a un tipo de datos definido por el usuario.

Sintaxis
sp_bindrule [@rulename =] 'regla',
[@objname =] 'nombreObjeto'
[, [@futureonly =] 'indicadorSóloFuturo'
Ejemplos

A. Enlazar una regla a una columna


Suponga que se ha creado una regla llamada today en la base de datos actual
mediante la instrucción CREATE RULE; este ejemplo enlaza la regla a la columna hire
date de la tabla employees. Cuando se agrega una fila a employees, los datos de la
columna hire date se comprueban con la regla today.

USE master
EXEC sp_bindrule 'today', 'employees.[hire date]'

B. Enlazar una regla a un tipo de datos definido por el usuario


Suponga que existe una regla llamada rule_ssn y un tipo de datos definido por el
usuario llamado ssn; este ejemplo enlaza rule_ssn a ssn. En una instrucción CREATE
TABLE, las columnas del tipo ssn heredan la regla rule_ssn. Las columnas existentes
del tipo ssn también heredan la regla rule_ssn a menos que se especifique futureonly
en indicadorSóloFuturo o que ssn tenga una regla enlazada directamente. Las reglas
enlazadas a columnas siempre tienen preferencia sobre las enlazadas a tipos de datos.

USE master
EXEC sp_bindrule 'rule_ssn', 'ssn'
C. Utilizar indicadorSóloFuturo
Este ejemplo enlaza la regla rule_ssn al tipo de datos definido por el usuario ssn.
Como se especifica futureonly, esto no afecta a ninguna de las columnas existentes de
tipo ssn.

USE master
EXEC sp_bindrule 'rule_ssn', 'ssn', 'futureonly'

sp_unbindrule (T-SQL)
Desasocia una regla de una columna o de un tipo de datos definido por el usuario en la
base de datos actual.

Sintaxis
sp_unbindrule [@objname =] 'nombreObjeto'
[, [@futureonly =] 'indicadorSóloFuturo']

Ejemplos

A. Desasociar una regla de una columna


En este ejemplo se desasocia la regla de la columna startdate de la tabla employees.

EXEC sp_unbindrule 'employees.startdate'

B. Desasociar una regla de un tipo de datos definido por el usuario


En este ejemplo se desasocia la regla del tipo de datos definido por el usuario ssn.

EXEC sp_unbindrule ssn

C. Utilizar indicadorSóloFuturo
En este ejemplo se desasocia la regla del tipo de datos definido por el usuario ssn sin
afectar a las columnas ssn existentes.

EXEC sp_unbindrule 'ssn', 'futureonly'

DROP RULE (T-SQL)


Quita una o más reglas definidas por el usuario de la base de datos actual.

Sintaxis

DROP RULE {regla} [,…n]


6. DEFAULT (T-SQL)
Cuando se enlaza a una columna o tipo de datos definido por el usuario, un valor
predeterminado especifica un valor que debe insertarse en la columna a la que está
enlazada el objeto (o en todas las columnas, en el caso de un tipo de datos definido
por el usuario) cuando no se proporciona explícitamente un valor durante la inserción.

Los valores predeterminados, que son una característica de compatibilidad con


versiones anteriores, realizan algunas de las mismas funciones que las definiciones
predeterminadas creadas mediante la palabra clave DEFAULT de las instrucciones
ALTER o CREATE TABLE. Las definiciones predeterminadas son el método preferido y
estándar de restringir los datos de columna, debido a que la definición se almacena
con la tabla y se quita automáticamente cuando se quita ésta. Sin embargo, un valor
predeterminado es útil cuando se utiliza múltiples veces en múltiples columnas.

Sintaxis
CREATE DEFAULT predeterminado
AS expresiónConstante

Ejemplos

A. Crear un valor predeterminado sencillo de carácter


Este ejemplo crea un valor predeterminado de carácter de desconocido.

USE pubs
GO
CREATE DEFAULT phonedflt AS 'unknown'

sp_bindefault (T-SQL)
Enlaza un valor predeterminado a una columna o a un tipo de datos definido por el
usuario.

Sintaxis
sp_bindefault [@defname =] 'predeterminado',
[@objname =] 'nombreObjeto'
[, [@futureonly =] 'indicadorSóloFuturo']

Ejemplos

A. Enlazar un valor predeterminado a una columna


Suponga que se ha definido un valor predeterminado llamado today en la base de
datos actual mediante la instrucción CREATE DEFAULT; el siguiente ejemplo enlaza el
valor predeterminado a la columna hire date de la tabla employees. Siempre que se
agrega una fila a la tabla employees y no se proporcionan datos para la columna hire
date, la columna obtiene el valor predeterminado today.

USE master
EXEC sp_bindefault 'today', 'employees.[hire date]'
B. Enlazar un valor predeterminado a un tipo de datos definido por el usuario
Suponga que existe un valor predeterminado llamado def_ssn y un tipo de datos
definido por el usuario llamado ssn, este ejemplo enlaza el valor predeterminado
def_ssn al tipo de datos definido por el usuario ssn. Todas las columnas que tienen
asignado el tipo de datos definido por el usuario ssn heredan el valor predeterminado
cuando se crea una tabla. Las columnas existentes del tipo ssn también heredan el
valor predeterminado def_ssn a menos que se especifique futureonly en el valor
indicadorSóloFuturo o que haya un valor predeterminado enlazado directamente a la
columna. Los valores predeterminados enlazados a columnas siempre tienen
preferencia sobre los enlazados a tipos de datos.

USE master
EXEC sp_bindefault 'def_ssn', 'ssn'

C. Utilizar indicadorSóloFuturo
Este ejemplo enlaza el valor predeterminado def_ssn al tipo de datos definido por el
usuario ssn. Como se especifica futureonly, esto no afecta a ninguna de las columnas
existentes de tipo ssn.

USE master
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly'

sp_unbindefault (T-SQL)
Desasocia (quita) un valor predeterminado de una columna o de un tipo de datos
definido por el usuario en la base de datos actual.

Sintaxis
sp_unbindefault [@objname =] 'nombreObjeto'
[, [@futureonly =] 'indicadorSóloFuturo']

DROP DEFAULT (T-SQL)


Quita uno o más valores predeterminados definidos por el usuario de la base de datos
actual.

La instrucción DROP DEFAULT no se aplica a las restricciones DEFAULT. Para obtener


información acerca de cómo quitar restricciones DEFAULT (creadas con la opción
DEFAULT de las instrucciones CREATE TABLE o ALTER TABLE), consulte ALTER TABLE.

Sintaxis
DROP DEFAULT {predeterminado} [,…n]
7. ALTER TABLE (T-SQL)
Modifica una definición de tabla al alterar, agregar o quitar columnas y restricciones,
o al deshabilitar o habilitar restricciones y desencadenadores.

Sintaxis
ALTER TABLE tabla [ALTER COLUMN nombreColumna
{ nuevoTipoDatos [ (precisión[, escala] ) ]
[ NULL | NOT NULL ]
| {ADD | DROP} ROWGUIDCOL
}
]
| ADD
{ [ <definiciónColumna> ]
| nombreColumna AS expresiónCalculadaColumna
}[,...n]
| [WITH CHECK | WITH NOCHECK] ADD
{ <restricciónTabla> }[,...n]
| DROP
{ [CONSTRAINT] nombreRestricción
| COLUMN columna
}[,...n]
| {CHECK | NOCHECK} CONSTRAINT
{ALL | nombreRestricción[,…n]}
| {ENABLE | DISABLE} TRIGGER
{ALL | nombreDesencadenador[,…n]}
<definiciónColumna> ::= { nombreColumna tipoDatos }
[ [ DEFAULT expresiónConstante ]
| [ IDENTITY [(inicialización, incremento ) [NOT FOR REPLICATION] ] ]
]
[ ROWGUIDCOL ]
[ <restricciónColumna>] [ ...n]
<restricciónColumna> ::= [CONSTRAINT nombreRestricción]
{
[ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[CLUSTERED | NONCLUSTERED]
[WITH FILLFACTOR = factorRelleno]
[ON {grupoArchivos | DEFAULT} ]]
]
| [ [FOREIGN KEY]
REFERENCES tablaRef [(columnaRef) ]
[NOT FOR REPLICATION]
]
| CHECK [NOT FOR REPLICATION]
(expresiónLógica)
}
<restricciónTabla> ::= [CONSTRAINT nombreRestricción]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED]
{ ( columna[,...n] ) }
[ WITH FILLFACTOR = factorRelleno]
[ON {grupoArchivos | DEFAULT} ]
]
| FOREIGN KEY
[(columna[,...n])]
REFERENCES tablaReferencia [(columnaReferencia[,...n])]
[NOT FOR REPLICATION]
| DEFAULT expresiónConstante
[FOR columna]
| CHECK [NOT FOR REPLICATION]
(expresiónLógica)
}

Ejemplos
A. Alterar una tabla para agregar una nueva columna
El ejemplo siguiente agrega una columna que permite valores nulos y a la que no se
han proporcionado valores mediante una definición DEFAULT. Cada fila tendrá un valor
NULL en la nueva columna.

CREATE TABLE doc_exa ( column_a INT)


GO
ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL
GO
EXEC sp_help doc_exa
GO
DROP TABLE doc_exa
GO

B. Alterar una tabla para quitar una columna


El ejemplo siguiente modifica una tabla para quitar una columna.

CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL)


GO
ALTER TABLE doc_exb DROP COLUMN column_b
GO
EXEC sp_help doc_exb
GO
DROP TABLE doc_exb
GO

C. Alterar una tabla para agregar una columna con una restricción
El ejemplo siguiente agrega una nueva columna con una restricción UNIQUE.

CREATE TABLE doc_exc ( column_a INT)


GO
ALTER TABLE doc_exc ADD column_b VARCHAR(20) NULL
CONSTRAINT exb_unique UNIQUE
GO
EXEC sp_help doc_exc
GO
DROP TABLE doc_exc
GO

D. Alterar una tabla para agregar una restricción que no se comprueba


El ejemplo siguiente agrega una restricción a una columna existente de la tabla. La
columna tiene un valor que infringe la restricción; por tanto, se utiliza WITH NOCHECK
para impedir que la restricción se valide contra las filas existentes y para permitir que
se agregue la restricción.

CREATE TABLE doc_exd ( column_a INT)


GO
INSERT INTO doc_exd VALUES (-1)
GO
ALTER TABLE doc_exd WITH NOCHECK
ADD CONSTRAINT exd_check CHECK (column_a > 1)
GO
EXEC sp_help doc_exd
GO
DROP TABLE doc_exd
GO

E. Alterar una tabla para agregar varias columnas con restricciones


El ejemplo siguiente agrega varias columnas con restricciones que se definen con la
nueva columna. La primera columna nueva tiene una propiedad IDENTITY; cada fila de
la tabla tiene nuevos valores incrementales en la columna de identidad.

CREATE TABLE doc_exe ( column_a INT CONSTRAINT column_a_un UNIQUE)


GO
ALTER TABLE doc_exe ADD
/* Add a PRIMARY KEY identity column. */
column_b INT IDENTITY
CONSTRAINT column_b_pk PRIMARY KEY,
/* Add a column referencing another column in the same table. */
column_c INT NULL
CONSTRAINT column_c_fk
REFERENCES doc_exe(column_a),
/* Add a column with a constraint to enforce that */
/* nonnull data is in a valid phone number format. */
column_d VARCHAR(16) NULL
CONSTRAINT column_d_chk
CHECK
(column_d IS NULL OR
column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" OR
column_d LIKE
"([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),
/* Add a nonnull column with a default. */
column_e DECIMAL(3,3)
CONSTRAINT column_e_default
DEFAULT .081
GO
EXEC sp_help doc_exe
GO
DROP TABLE doc_exe
GO

F. Agregar una columna que acepta Null con valores predeterminados


El ejemplo siguiente agrega una columna que acepta Null con una definición DEFAULT
y utiliza WITH VALUES para proporcionar los valores de cada fila existente en la tabla.
Si no se utiliza WITH VALUES, cada fila tiene el valor NULL en la nueva columna.

ALTER TABLE MyTable


ADD AddDate smalldatetime NULL CONSTRAINT AddDateDflt
DEFAULT getdate() WITH VALUES

G. Deshabilitar y volver a habilitar una restricción


El ejemplo siguiente deshabilita una restricción que limita los salarios que se aceptan
en los datos. WITH NOCHECK CONSTRAINT se utiliza con ALTER TABLE para deshabilitar
la restricción y permitir una inserción que normalmente infringiría la restricción. WITH
CHECK CONSTRAINT se emplea para volver a habilitar la restricción.

CREATE TABLE cnst_example


(id INT NOT NULL,
name VARCHAR(10) NOT NULL,
salary MONEY NOT NULL
CONSTRAINT salary_cap CHECK (salary < 100000)
)
-- Valid inserts
INSERT INTO cnst_example VALUES (1,"Joe Brown",65000)
INSERT INTO cnst_example VALUES (2,"Mary Smith",75000)
-- This insert violates the constraint.
INSERT INTO cnst_example VALUES (3,"Pat Jones",105000)
-- Disable the constraint and try again.
ALTER TABLE cnst_example NOCHECK CONSTRAINT salary_cap
INSERT INTO cnst_example VALUES (3,"Pat Jones",105000)
-- Reenable the constraint and try another insert, will fail.
ALTER TABLE cnst_example CHECK CONSTRAINT salary_cap
INSERT INTO cnst_example VALUES (4,"Eric James",110000)

H. Deshabilitar y volver a habilitar un desencadenador


El ejemplo siguiente utiliza la opción DISABLE TRIGGER de ALTER TABLE para
deshabilitar el desencadenador y permitir una inserción que normalmente infringiría el
desencadenador. A continuación, utiliza ENABLE TRIGGER para volver a habilitar el
desencadenador.
CREATE TABLE trig_example
(id INT,
name VARCHAR(10),
salary MONEY)
go
-- Create the trigger.
CREATE TRIGGER trig1 ON trig_example FOR INSERT
as
IF (SELECT COUNT(*) FROM INSERTED
WHERE salary > 100000) > 0
BEGIN
print "TRIG1 Error: you attempted to insert a salary > $100,000"
ROLLBACK TRANSACTION
END
GO
-- Attempt an insert that violates the trigger.
INSERT INTO trig_example VALUES (1,"Pat Smith",100001)
GO
-- Disable the trigger.
ALTER TABLE trig_example DISABLE TRIGGER trig1
GO
-- Attempt an insert that would normally violate the trigger
INSERT INTO trig_example VALUES (2,"Chuck Jones",100001)
GO
-- Reenable the trigger.
ALTER TABLE trig_example ENABLE TRIGGER trig1
GO
-- Attempt an insert that violates the trigger.
INSERT INTO trig_example VALUES (3,"Mary Booth",100001)
GO

8. Vistas
Antes de crear una vista, considere estas indicaciones:

• Sólo puede crear vistas en la base de datos actual. Sin embargo, las tablas y las
vistas a las que se haga referencia desde la nueva vista pueden encontrarse en otras
bases de datos e, incluso, en otros servidores, si la vista se define mediante consultas
distribuidas.

• Los nombres de las vistas deben seguir las reglas para los identificadores y ser únicos
para cada usuario. Además, el nombre debe ser distinto del de cualquier tabla de las
que el usuario sea propietario.

• Puede generar vistas dentro de otras vistas y en procedimientos que hagan


referencia a vistas. Microsoft® SQL Server™ permite anidar hasta 32 niveles de vistas.
• No puede asociar reglas, definiciones DEFAULT ni desencadenadores con las vistas.

• La consulta que defina a la vista no puede incluir las cláusulas ORDER BY,
COMPUTE o COMPUTE BY, ni la palabra clave INTO.

• No puede generar índices ni crear definiciones de índices de texto en las vistas.

• No puede crear vistas temporales, ni vistas dentro de tablas temporales.

• No puede emitir consultas de texto en una vista, aunque una definición de vista
puede incluir una consulta de texto si ésta hace referencia a una tabla configurada
para indización de texto.

Debe especificar el nombre de todas las columnas de la vista en el caso de que:


• Alguna de las columnas de la vista derive de una expresión aritmética, una función
integrada o una constante.

• Dos o más columnas de la vista tendrían, en caso contrario, el mismo nombre


(normalmente, debido a que la definición de la vista incluye una combinación y las
columnas de dos o más tablas diferentes tienen el mismo nombre).

• Desee darle a una columna de la vista un nombre distinto del de la columna de la


que deriva. (También puede cambiar el nombre de las columnas en la vista). Una
columna de una vista hereda los tipos de datos de la columna de la que deriva,
aunque no cambie su nombre.

Creacion de vistas (T-SQL)


Crea una tabla virtual que representa los datos de una o más tablas de una forma
alternativa. Las vistas se pueden utilizar como mecanismos de seguridad al conceder
permisos sobre una vista, pero no sobre las tablas subyacentes (base).

Sintaxis
CREATE VIEW nombreVista [(columna [,…n])]
[WITH ENCRYPTION]
AS
instrucciónSelección
[WITH CHECK OPTION]
o Drop view vista
9. Procedimientos almacenados
Es una colección de instrucciones Transact-SQL, que puede tomar y devolver
parámetros proporcionados por el usuario. Los procedimientos se pueden crear para
uso permanente o para uso temporal en la sesión de un usuario (procedimiento local
temporal) o para el uso temporal en todas las sesiones del usuario (procedimiento
temporal global). Los procedimientos almacenados se pueden crear también para que
se ejecuten automáticamente cuando se inicia Microsoft® SQL Server™.

Sintaxis
CREATE PROC[EDURE] nombreProcedimiento [;número]
[
{@parámetro tipoDatos} [VARYING] [= predeterminado] [OUTPUT]
]
[,...n]
[WITH
{
RECOMPILE
| ENCRYPTION
| RECOMPILE, ENCRYPTION
}
]
[FOR REPLICATION]
AS
instrucciónSQL [...n]

Create procedure nombreprocedimiento as sentencias SQL por ejemplo:

create procedure procedimiento as select * from table1

Para ejecutar el procedimiento se pone:


EXECUTE procedimiento

- Para crear varios procedimientos de una sola vez:

create procedure procedimiento 1; n as sentencia SQL


por ejemplo:

Create procedure procedimiento 1; 2 as select * from tabla1


create procedure procedimiento 1;2 as select * from tabla2

- Para ejecutarlos se haria lo siguiente:


Execute nombreprocedimiento sin índice

- Para eliminar un procedimiento se pone:


Drop nombreprocedimiento
- Los procedimientos almacenados solo se compilan la primera vez que se ejecutan.

- Un procedimiento almacenado también pueden tener parámetros de entrada que


llegan hasta 255 y otros de salida (sin limite). Se declaran justo despues del
nombreprocedimiento:

create procedure nombreprocedimiento @var1 tipo, @var2 tipo as sentencias SQL.

- Solo el usuario de la base de datos puede crear procedimientos almacenados dentro


se BD.

- Las sentencias SQL de los procedimientos almacenados se almacenan en la tabla


syscomments de la BD master.

-Las sentencias SQL tienen un limite de 255 procedimientos almacenados (es decir
hasta 255 filas).

EJERCICIO:
Hacer un procedimiento que devuelva los nombres de todos los autores que han
publicado un libro con un editor cuyo nombre y apellido se pasaran como parametros
de entrada. La base de datos a utilizar es pubs

SOLUCIÓN:
create proc ejemplo1 @nombre varchar(20), @apellido varchar(20) as select
au_lname,
au_fname, title, pub_name from authors, titles, publishers, titleauthor where
au_fname=@nombre and au_lname=@apellido and authors.au_id=titleauthor.au_id and
titles.title_id=titleauthor.title_id and titles.pub_id=publishers.pub_id

PARA EJECUTARLO:
execute ejemplo1 @nombre='johnson', @apellido='white'

EJERCICIO:
Procedimiento que devuelve todos los autores que han publicado un libro con un editor
determinado que se pasaran como variable de entrada.

SOLUCION:
create procedure ejemplo2 @editor varchar(20)='algodata Infosyste' as select
au_lname,
au_fname, pub_name from
authors a, publishers p, titles t, titleauthor ta where @editor=p.pub_name
and t.title_id=ta.title_id and t.pub_id=p.pub_id
nota: despues de los nombres de las tablas se pone la inicial, para renombrarla y
despues
ser mas facil poner su nombre. se llaman alias
----------------------------------------------------------------------------------------------------------
---
- Un procedimiento no puede tener sentencias de creación:
CREATE VIEW
CREATE DEFAULT
CREATE TRIGGER
CREATE ROLES
pero sí, sentencias de eliminación como DROP.

- No se puede volver a crear en un procedimiento almacenado con el mismo nombre de


otro que fue eliminado en el mismo.

EJERCICIO:
Al introducir el nombre del alumno queremos ver también su nota:

SOLUCION:
CREATE PROCEDURE PROC1 @VAR VARCHAR(30)=NULL
AS IF @VAR IS NULL PRINT 'INTRODUCE EL NOMBRE DEL ALUMNO'
ELSE SELECT NOMBRE, NOTAS FROM TABLE1 WHERE
NOMBRE=@VAR

EJERCICIO:
Como poder utilizar los valores devueltos de un procedimiento como variable de
entrada de a otro procedimiento.

SOLUCION:
Este procedimiento devuelve 100 si un determinado alumno de una tabla esta suspenso
y 200 si esta aprobado.

CREATE PROC APROBADO @VAR VARCHAR(20)


AS IF (SELECT NOTAS FROM TABLE1 WHERE NOMBRE=@VAR)>5
RETURN 200
ELSE RETURN 100

Definir otro procedimiento que utiliza este primero y presenta un mensaje indicando si
un alumno esta aprobado o no

CREATE PROC MOSTRAR @VAR VARCHAR(20)


AS DECLARE @RETORNO INT
EXECUTE @RETORNO= APROBADO @VAR
IF (@RETORNO=100) PRINT 'ALUMNO SUSPENSO'
ELSE PRINT 'ALUMNO APROBADO'
EXECUTE MOSTRAR 'FRAN '”
10. Roles
Las funciones son una herramienta que permite agrupar usuarios en una única unidad a
la que se puede aplicar permisos. Los permisos concedidos, denegados o retirados de
una función se aplican a los miembros de la función. Puede establecer una función que
represente uno de los tipos de trabajo de su organización y conceder los permisos
adecuados a dicha función. Cuando los trabajadores cambian de puesto de trabajo,
solo tiene que asignarlos a la nueva función. Cuando dejen un puesto, elimínelos de la
función que represente dicho tipo de trabajo. No es necesario que conceda, deniegue
o retire permisos repetitivamente a cada persona que incorpore o deje la
organización. Los permisos se aplican automáticamente cuando los usuarios se definen
como miembros de una función.

Funciones
Las funciones son una herramienta eficaz que permite agrupar usuarios en una única
unidad a la que se pueden aplicar permisos. Los permisos concedidos, denegados o
retirados de una función se aplican a todos los miembros de la función. Puede
establecer una función que represente uno de los tipos de trabajo de su organización y
conceder los permisos apropiados a dicha función. Cuando los trabajadores cambian de
puesto de trabajo, sólo tiene que asignarlos a la nueva función; cuando dejen un
puesto, elimínelos de la función que represente dicho tipo de trabajo. No es necesario
que conceda, deniegue o retire permisos repetitivamente a cada persona que se
incorpore o deje la organización. Los permisos se aplican automáticamente cuando los
usuarios se definen como miembros de una función.

Los grupos de Windows NT se pueden utilizar de forma muy similar a las funciones.
Para obtener más información, consulte Grupos.

Es más sencillo administrar los permisos en una base de datos si define un conjunto de
funciones basadas en los tipos de trabajo y asigna a cada función los permisos
aplicables para desempeñar dicho trabajo. A partir de este punto, sólo tiene que pasar
los usuarios de una función a otra, en lugar de tener que administrar los permisos de
cada usuario de forma individual. Si la función asociada con un trabajo cambia, es más
sencillo cambiar una sola vez los permisos de la función y hacer que los cambios se
apliquen automáticamente a todos los miembros de la función.

En Microsoft® SQL Server™ , los usuarios pueden pertenecer a varias funciones. La


secuencia de instrucciones asigna a los profesores John y Sarah permiso para
actualizar la graduación de los alumnos, mientras que los alumnos Betty y Ralph sólo
pueden seleccionar sus graduaciones. Diane ha sido incluida en las dos funciones
porque es profesora en una clase y alumna en otra. La vista ProfessorGradeView tiene
que restringir que los profesores sólo vean las filas de los alumnos de sus clases,
mientras que StudentGradeView tiene que restringir que los alumnos sólo vean sus
propias calificaciones.

La siguiente secuencia de instrucciones muestra la inclusión de algunos inicios de


sesión, usuarios y funciones, y la asignación de permisos a las funciones.
USE master
GO
sp_grantlogin ‘NETDOMAIN\John’
GO
sp_defaultdb 'NETDOMAIN\John', ‘courses’
GO
sp_grantlogin ‘NETDOMAIN\Sarah’
GO
sp_defaultdb 'NETDOMAIN\Sarah', 'courses'
GO
sp_grantlogin ‘NETDOMAIN\Betty’
GO
sp_defaultdb 'NETDOMAIN\Betty', ‘courses’
GO
sp_grantlogin ‘NETDOMAIN\Ralph’
GO
sp_defaultdb 'NETDOMAIN\Ralph', ‘courses’
GO
sp_grantlogin ‘NETDOMAIN\Diane’
GO
sp_defaultdb 'NETDOMAIN\Diane', ‘courses’
GO
USE courses
GO
sp_grantdbaccess ‘NETDOMAIN\John’
GO
sp_grantdbaccess ‘NETDOMAIN\Sarah’
GO
sp_grantdbaccess ‘NETDOMAIN\Betty’
GO
sp_grantdbaccess ‘NETDOMAIN\Ralph’
GO
sp_grantdbaccess ‘NETDOMAIN\Diane’
GO
sp_addrole 'Professor'
GO
sp_addrole 'Student'
GO
sp_addrolemember 'Professor', ‘NETDOMAIN\John’
GO
sp_addrolemember 'Professor', ‘NETDOMAIN\Sarah’
GO
sp_addrolemember 'Professor', ‘NETDOMAIN\Diane’
GO
sp_addrolemember 'Student', ‘NETDOMAIN\Betty’
GO
sp_addrolemember 'Student', ‘NETDOMAIN\Ralph’
GO
sp_addrolemember 'Student', ‘NETDOMAIN\Diane’
GO
GRANT SELECT ON StudentGradeView TO Student
GO
GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor
GO

La secuencia de instrucciones asigna a los profesores John y Sarah permiso para


actualizar la graduación de los alumnos, mientras que los alumnos Betty y Ralph sólo
pueden seleccionar sus graduaciones. Diane ha sido incluida en las dos funciones
porque es profesora en una clase y alumna en otra. La vista ProfessorGradeView tiene
que restringir que los profesores sólo vean las filas de los alumnos de sus clases,
mientras que StudentGradeView tiene que restringir que los alumnos sólo vean sus
propias calificaciones En la instalación de SQL Server se definen varias funciones fijas.
A estas funciones se puedan agregar usuarios para que dispongan de los permisos de
administración asociados. Estas son las funciones del servidor.

Función fija de servidor


Descripción
sysadmin Permite realizar cualquier actividad en SQL Server.
serveradmin Permite establecer opciones de configuración del servidor y apagar el
servidor.
setupadmin Permite administrar servidores vinculados y procedimientos de inicio.
securityadmin Permite administrar inicios de sesión y permisos CREATE DATABASE;
también permite leer los registros de errores.
processadmin Permite administrar los procesos que se ejecutan en SQL Server.
dbcreator Permite crear y alterar bases de datos.
diskadmin Permite administrar archivos de disco.

Puede obtener la lista de las funciones fijas del servidor mediante sp_helpsrvrole y
obtener los permisos específicos de cada función mediante sp_srvrolepermission.
Cada base de datos tiene un conjunto de funciones fijas de la base de datos. Si bien
todas las bases de datos tienen funciones con estos mismos nombres, el alcance de
cada función individual es sólo su base de datos concreta. Por ejemplo, si Database1 y
Database2 tienen ambas un Id. de usuario UserX, la inclusión de UserX en la función
fija db_owner de la base de datos en Database1 no hace que UserX sea miembro de
la función fija db_owner en Database2 .

Función fija de base de datos


Descripción
db_owner Tiene todos los permisos de la base de datos.
db_accessadmin Puede agregar o quitar los Id. de usuario.
db_securityadmin Puede administrar todos los permisos, la propiedad de los objetos,
las funciones y la pertenencia a ellas.
db_ddladmin Puede utilizar todas las instrucciones DDL, menos las instrucciones
GRANT, REVOKE y DENY.
db_backupoperator Puede utilizar las instrucciones DBCC, CHECKPOINT y BACKUP.
db_datareader Puede seleccionar todos los datos de cualquier tabla de usuario de la
base de datos.
db_datawriter Puede modificar todos los datos de cualquier tabla de usuario de la
base de datos.
db_denydatareader Puede denegar o retirar permisos SELECT sobre cualquier objeto.
db_denydatawriter Puede denegar o retirar permisos INSERT, UPDATE y DELETE sobre
cualquier objeto.

Puede obtener la lista de las funciones fijas de la base de datos mediante


sp_helpdbfixedrole y obtener la lista de los permisos específicos de cada función
mediante sp_dbfixedrolepermission. Todos los usuarios de una base de datos
pertenecen a la función public de la base de datos. Si quiere que todos los usuarios de
una base de datos puedan tener un permiso específico, asigne el permiso a la función
public. Si a un usuario no se le han concedido específicamente permisos sobre un
objeto, dicho usuario utiliza los permisos asignados a la función public.

11. Triggers
Es un tipo especial de procedimiento almacenados que se ejecutan automaticamente
como respuesta a una determinada modificacion de una tabla.

- Los triggers estan vinculados de manera inseparable de la tabla que motiva su


ejecución hasta el punto de que solo el propietario de una tabla puede definir un
trigger asociado a la misma.

- El propietario de una tabla no puede otorgar el permiso de definicion de triggers


sobre la misma a ningun otro usuario.

- El trigger se ejecuta como respuesta a la aplicación de ciertas sentencias de


modificación sobre la tabla asociada. Estas sentencias se especifican en la clausula
FOR {insert, update, delete}. Las llaves son para especificar que pueden ser una o
mas.

SINTAXIS:
Create triggers nombretrigger ON tabla FOR {insert, update, delete} AS IF
insert/update/delete (nombre columna) AND/OR insert/update/delete (nombre
columna2)
.... sentencias SQL
Las barras / son para especificar que tiene que ser una de las tres.
12. Procedimientos sp_help
• sp_helptext (T-SQL)
Imprime el texto de una regla, un valor predeterminado o un procedimiento
almacenado o desencadenador no cifrados, o una vista.

Sintaxis
sp_helptext [@objname =] 'nombre'

• sp_help (T-SQL)
Presenta información acerca de un objeto de la base de datos (cualquier objeto de la
tabla sysobjects), de un tipo de datos definido por el usuario o de un tipo de datos
proporcionado por Microsoft® SQL Server™.

Sintaxis
sp_help [[@objname =] nombre]

• sp_helpfile (T-SQL)
Devuelve los nombres físicos y los atributos de los archivos asociados con la base de
datos actual. Utilice este procedimiento almacenado para determinar los nombres de
los archivos que vaya a asignar o quitar del servidor.

Sintaxis
sp_helpfile [[@filename =] 'nombre']

• sp_helpsrvrole (T-SQL)
Devuelve la lista de las funciones fijas de servidor de Microsoft® SQL Server™.

Sintaxis
sp_helpsrvrole [[@srvrolename =] 'función']

• sp_srvrolepermission (T-SQL)
Devuelve los permisos aplicados a una función fija de servidor.

Sintaxis
sp_srvrolepermission [[@srvrolename =] 'función']

• sp_helpdbfixedrole (T-SQL)
Devuelve la lista de las funciones fijas de base de datos.

Sintaxis
sp_helpdbfixedrole [@rolename =] 'función'

• sp_dbfixedrolepermission (T-SQL)
Muestra los permisos para cada función fija de base de datos.

Sintaxis
sp_dbfixedrolepermission [[@rolename =] 'función']
• sp_grantlogin (T-SQL)
Permite a una cuenta de usuario o de grupo de Microsoft® Windows NT® conectar con
Microsoft SQL Server™ mediante la autenticación de Windows NT.

• sp_defaultdb (T-SQL)
Cambia la base de datos predeterminada de un inicio de sesión.

Sintaxis
sp_defaultdb [@loginame =] 'inicioSesión' ,[@defdb =] 'baseDatos'

• sp_addrole (T-SQL)
Crea una nueva función de Microsoft® SQL Server™ en la base de datos actual.

Sintaxis
sp_addrole [@rolename =] 'función' [,[@ownername =] 'propietario']

• sp_addrolemember (T-SQL)
Agrega una cuenta de seguridad como miembro de una función de Microsoft® SQL
Server™ existente en la base de datos actual.

Sintaxis
sp_addrolemember [@rolename =] 'función',
[@membername =] 'cuentaSeguridad'

13. Procedimientos almacenados del sistema


Se pueden realizar muchas actividades administrativas e informativas de Microsoft®
SQL Server™ a través de los procedimientos almacenados del sistema. Los
procedimientos almacenados del sistema se agrupan en estas categorías.

Categoría Descripción
Procedimientos de catálogo Implementan las funciones del diccionario de datos de
ODBC y aíslan las aplicaciones de ODBC de los cambios en las tablas subyacentes del
sistema. Procedimientos de cursor Implementan la funcionalidad de variable de
cursor. Procedimientos de consultas distribuidas Utilizados para implementar y
administrar consultas distribuidas.

Procedimientos del Agente SQL Server


Utilizados por el Agente SQL Server para administrar actividades programadas y
controladas por sucesos.

Procedimientos de duplicación
Utilizados para administrar la duplicación.

Procedimientos de seguridad
Utilizados para administrar la seguridad.
Procedimientos del sistema
Utilizados para el mantenimiento general de SQL Server.

Procedimientos del Ayudante de Web


Utilizados por el Ayudante de Web.

Procedimientos extendidos generales


Proporcionan una interfaz de SQL Server a los programas externos para diversas
actividades de mantenimiento.

Procedimientos extendidos de SQL Mail


Utilizados para realizar operaciones de correo electrónico desde SQL Server.

Analizador de SQL Server


Procedimiento extendido del Analizador de SQL Server contra un servidor local a
través del Analizador de consultas de SQL Server, utilice la Autentificación de
Windows. Cuando se utiliza la biblioteca de red de memoria compartida, SQL Server no
admite la representación a menos que se conecte mediante la Autenticación de
Windows.

Procedimientos de Automatización
OLE
Permiten utilizar objetos de Automatización OLE estándar dentro de un proceso por
lotes estándar de Transact-SQL.

Nota A menos que se documente específicamente lo contrario, todos los


procedimientos almacenados del sistema devuelven un valor de 0, que indica que son
correctos. Para indicar un error, se devuelve un valor distinto de cero.

Procedimientos de catálogo
sp_column_privileges sp_special_columns
sp_columns sp_sproc_columns
sp_databases sp_statistics
sp_fkeys sp_stored_procedures
sp_pkeys sp_table_privileges
sp_server_info sp_tables

Procedimientos de cursor
sp_cursor_list sp_describe_cursor_tables
sp_describe_cursor sp_describe_cursor_columns

Procedimientos del Agente SQL Server


sp_add_alert sp_help_jobschedule
sp_add_category sp_help_jobserver
sp_add_job sp_help_jobstep
sp_add_jobschedule sp_help_notification
sp_add_jobserver sp_help_operator
sp_add_jobstep sp_help_targetserver
sp_add_notification sp_help_targetservergroup
sp_add_operator sp_helphistory
sp_add_targetservergroup sp_helptask
sp_add_targetsvrgrp_member sp_manage_jobs_by_login
sp_addtask sp_msx_defect
sp_apply_job_to_targets sp_msx_enlist
sp_delete_alert sp_post_msx_operation
sp_delete_category sp_purge_jobhistory
sp_delete_job sp_purgehistory
sp_delete_jobschedule sp_reassigntask
sp_delete_jobserver sp_remove_job_from_targets
sp_delete_jobstep sp_resync_targetserver
sp_delete_notification sp_start_job
sp_delete_operator sp_stop_job
sp_delete_targetserver sp_update_alert
sp_delete_targetservergroup sp_update_category
sp_delete_targetsvrgrp_member sp_update_job
sp_droptask sp_update_jobschedule
sp_help_alert sp_update_jobstep
sp_help_category sp_update_notification
sp_help_downloadlist sp_update_operator
sp_help_job sp_update_targetservergroup
sp_help_jobhistory sp_updatetask

Procedimientos de duplicación
sp_add_agent_parameter sp_dsninfo
sp_add_agent_profile sp_dumpparamcmd
sp_addarticle sp_enumcustomresolvers
sp_adddistpublisher sp_enumdsn
sp_adddistributiondb sp_enumfullsubscribers
sp_adddistributor sp_expired_subscription_cleanup
sp_addmergearticle sp_generatefilters
sp_addmergefilter sp_getmergedeletetype
sp_addmergepublication sp_get_distributor
sp_addmergepullsubscription sp_grant_publication_access
sp_addmergepullsubscription_agent sp_help_agent_default
sp_addmergesubscription sp_help_agent_parameter
sp_addpublication sp_help_agent_profile
sp_addpublication_snapshot sp_help_publication_access
sp_addpublisher70 sp_helparticle
sp_addpullsubscription sp_helparticlecolumns
sp_addpullsubscription_agent sp_helpdistpublisher
sp_addsubscriber sp_helpdistributiondb
sp_addsubscriber_schedule sp_helpdistributor
sp_addsubscription sp_helpmergearticle
sp_addsynctriggers sp_helpmergearticleconflicts
sp_addtabletocontents sp_helpmergeconflictrows
sp_article_validation sp_helpmergedeleteconflictrows
sp_articlecolumn sp_helpmergefilter
sp_articlefilter sp_helpmergepublication
sp_articlesynctranprocs sp_helpmergepullsubscription
sp_articleview sp_helpmergesubscription
sp_browsereplcmds sp_helppublication
sp_change_agent_parameter sp_helppullsubscription
sp_change_agent_profile sp_helpreplicationdboption
sp_changearticle sp_helpsubscriberinfo
sp_changedistpublisher sp_helpsubscription
sp_changedistributiondb sp_helpsubscription_properties
sp_changedistributor_password sp_link_publication
sp_changedistributor_property sp_mergedummyupdate
sp_changemergearticle sp_mergesubscription_cleanup
sp_changemergefilter sp_publication_validation
sp_changemergepublication sp_refreshsubscriptions
sp_changemergepullsubscription sp_reinitmergepullsubscription
sp_changemergesubscription sp_reinitmergesubscription
sp_changepublication sp_reinitpullsubscription
sp_changesubscriber sp_reinitsubscription
sp_changesubscriber_schedule sp_removedbreplication
sp_changesubstatus sp_replcmds
sp_change_subscription_properties sp_replcounters
sp_check_for_sync_trigger sp_repldone
sp_deletemergeconflictrow sp_replflush
sp_drop_agent_parameter sp_replicationdboption
sp_drop_agent_profile sp_replication_agent_checkup
sp_droparticle sp_replsetoriginator
sp_dropdistpublisher sp_replshowcmds
sp_dropdistributiondb sp_repltrans
sp_dropdistributor sp_revoke_publication_access
sp_dropmergearticle sp_script_synctran_commands
sp_dropmergefilter sp_scriptdelproc
sp_dropmergepublication sp_scriptinsproc
sp_dropmergepullsubscription sp_scriptmappedupdproc
sp_dropmergesubscription sp_scriptupdproc
sp_droppublication sp_subscription_cleanup
sp_droppullsubscription sp_table_validation
sp_dropsubscriber sp_update_agent_profile
sp_dropsubscription

Procedimientos de seguridad
sp_addalias sp_droprole
sp_addapprole sp_droprolemember
sp_addgroup sp_dropserver
sp_addlinkedsrvlogin sp_dropsrvrolemember
sp_addlogin sp_dropuser
sp_addremotelogin sp_grantdbaccess
sp_addrole sp_grantlogin
sp_addrolemember sp_helpdbfixedrole
sp_addserver sp_helprotect
sp_addsrvrolemember sp_helplinkedsrvlogin
sp_adduser sp_helplogins
sp_approlepassword sp_helpntgroup
sp_change_users_login sp_helpremotelogin
sp_changedbowner sp_helprole
sp_changegroup sp_helprolemember
sp_changeobjectowner sp_helprotect
sp_dbfixedrolepermission sp_helpsrvrole
sp_defaultdb sp_helpsrvrolemember
sp_defaultlanguage sp_helpuser
sp_denylogin sp_password
sp_dropalias sp_remoteoption
sp_dropapprole sp_revokedbaccess
sp_dropgroup sp_revokelogin
sp_droplinkedsrvlogin sp_setapprole
sp_droplogin sp_srvrolepermission
sp_dropremotelogin sp_validatelogins

Procedimientos del sistema


sp_add_data_file_recover_suspect_db sp_helpconstraint
sp_add_log_file_recover_suspect_db sp_helpdb
sp_addextendedproc sp_helpdevice
sp_addmessage sp_helpextendedproc
sp_addtype sp_helpfile
sp_addumpdevice sp_helpfilegroup
sp_altermessage sp_help_fulltext_catalogs
sp_autostats sp_help_fulltext_catalogs_cursor
sp_attach_db sp_help_fulltext_columns
sp_attach_single_file_db sp_help_fulltext_columns_cursor
sp_bindefault sp_help_fulltext_tables
sp_bindrule sp_help_fulltext_tables_cursor
sp_bindsession sp_helpindex
sp_certify_removable sp_helplanguage
sp_configure sp_helpserver
sp_create_removable sp_helpserver
sp_createstats sp_helptext
sp_cycle_errorlog sp_helptrigger
sp_datatype_info sp_indexoption
sp_dbcmptlevel sp_lock
sp_dboption sp_monitor
sp_delete_backuphistory sp_processmail
sp_depends sp_procoption
sp_detach_db sp_recompile
sp_dropdevice sp_refreshview
sp_dropextendedproc sp_rename
sp_dropmessage sp_renamedb
sp_droptype sp_serveroption
sp_executesql sp_setnetname
sp_getbindtoken sp_spaceused
sp_fulltext_catalog sp_tableoption
sp_fulltext_column sp_unbindefault
sp_fulltext_database sp_unbindrule
sp_fulltext_service sp_updatetask
sp_fulltext_table sp_validname
sp_help sp_who

Procedimientos de consultas distribuidas


sp_addlinkedserver sp_indexes
sp_addlinkedsrvlogin sp_linkedservers
sp_catalogs sp_primarykeys
sp_column_privileges_ex sp_serveroption
sp_columns_ex sp_table_privileges_ex
sp_droplinkedsrvlogin sp_tables_ex
sp_foreignkeys

Procedimientos del Ayudante de Web


sp_dropwebtask sp_makewebtask
sp_enumcodepages sp_runwebtask

Procedimientos extendidos generales


xp_cmdshell xp_revokelogin
xp_enumgroups xp_sprintf
xp_findnextmsg xp_sqlinventory
xp_grantlogin xp_sscanf
xp_loginconfig xp_logevent
xp_logininfo
xp_msver
xp_sqlmaint

Procedimientos extendidos deSQL Mail


xp_deletemail xp_startmail
xp_readmail xp_stopmail
xp_sendmail xp_findnextmsg

Procedimientos extendidos del Analizador de SQL Server


xp_sqltrace xp_trace_getuserfilter
xp_trace_addnewqueue xp_trace_getwritefilter
xp_trace_deletequeuedefinition xp_trace_loadqueuedefinition
xp_trace_destroyqueue xp_trace_pausequeue
xp_trace_enumqueuedefname xp_trace_restartqueue
xp_trace_enumqueuehandles xp_trace_savequeuedefinition
xp_trace_eventclassrequired xp_trace_setappfilter
xp_trace_flushqueryhistory xp_trace_setconnectionidfilter
xp_trace_generate_event xp_trace_setcpufilter
xp_trace_getappfilter xp_trace_setdbidfilter
xp_trace_getconnectionidfilter xp_trace_setdurationfilter
xp_trace_getcpufilter xp_trace_seteventclassrequired
xp_trace_getdbidfilter xp_trace_seteventfilter
xp_trace_getdurationfilter xp_trace_sethostfilter
xp_trace_geteventfilter xp_trace_sethpidfilter
xp_trace_geteventnames xp_trace_setindidfilter
xp_trace_getevents xp_trace_setntdmfilter
xp_trace_gethostfilter xp_trace_setntnmfilter
xp_trace_gethpidfilter xp_trace_setobjidfilter
xp_trace_getindidfilter xp_trace_setqueryhistory
xp_trace_getntdmfilter xp_trace_setqueueautostart
xp_trace_getntnmfilter xp_trace_setqueuecreateinfo
xp_trace_getobjidfilter xp_trace_setqueuedestination
xp_trace_getqueueautostart xp_trace_setreadfilter
xp_trace_getqueuedestination xp_trace_setserverfilter
xp_trace_getqueueproperties xp_trace_setseverityfilter
xp_trace_getreadfilter xp_trace_setspidfilter
xp_trace_getserverfilter xp_trace_setsysobjectsfilter
xp_trace_getseverityfilter xp_trace_settextfilter
xp_trace_getspidfilter xp_trace_setuserfilter
xp_trace_getsysobjectsfilter xp_trace_setwritefilter
xp_trace_gettextfilter

Procedimientos almacenados extendidos deAutomatización OLE


sp_OACreate sp_OAMethod
sp_OADestroy sp_OASetProperty
sp_OAGetErrorInfo sp_OAStop
sp_OAGetProperty Sintaxis de jerarquía de objetos

Procedimientos almacenados del sistema de la API


Los usuarios que ejecutan el Analizador de SQL Server contra aplicaciones ADO, OLE
DB, ODBC y de bibliotecas de bases de datos pueden observar que se utilizan
procedimientos almacenados del sistema que no se tratan en la Referencia de
Transact- SQL. El proveedor de OLE DB para SQL Server de Microsoft, el controlador de
ODBC de SQL Server y la biblioteca de vínculos dinámicos (DLL, Dynamic-Link Library)
de Bibliotecas de bases de datos utilizan estos procedimientos almacenados para
implementar la funcionalidad de una API de bases de datos. Estos procedimientos
almacenados simplemente son el mecanismo que el proveedor o los controladores
utilizan para comunicar las peticiones del usuario a SQL Server. Se han diseñado sólo
para uso interno del proveedor de OLE DB para SQL Server, el controlador de ODBC de
SQL Server y la DLL de Bibliotecas de bases de datos. No es compatible llamarlos
explícitamente desde una aplicación de SQL Server.

La funcionalidad completa de estos procedimientos almacenados está disponible para


las aplicaciones de SQL Server a través de las funciones de la API que admiten. Por
ejemplo, la funcionalidad de cursor del procedimiento almacenado del sistema
sp_cursor está disponible para las aplicaciones de OLE DB a través de las propiedades
y métodos de cursor de la API de OLE DB, para las aplicaciones de ODBC a través de los
atributos y funciones de cursor de ODBC y para las aplicaciones de Bibliotecas de bases
de datos a través de la Biblioteca de cursores de Bibliotecas de bases de datos. Estos
procedimientos almacenados del sistema aceptan la funcionalidad de cursor de ADO,
OLE DB, ODBC y de la Biblioteca de cursores de Bibliotecas de bases de datos:

sp_cursor sp_cursorclose sp_cursorexecute


sp_cursorfetch sp_cursoropen sp_cursoroption
sp_cursorprepare sp_cursorunprepare
Estos procedimientos almacenados del sistema aceptan el modelo de preparación y
ejecución para ejecutar instrucciones Transact-SQL en ADO, OLE DB y ODBC:

sp_execute
sp_prepare
sp_unprepare

Los procedimientos almacenados sp_createorphan y sp_droporphans se utilizan para


el procesamiento de ntext, text e image de ODBC. SQL Server utiliza el procedimiento
almacenado sp_reset_connection para aceptar las llamadas a procedimientos
almacenados remotos en una transacción. SQL Server utiliza el procedimiento
almacenado sp_sdidebug para depurar instrucciones Transact-SQL.

You might also like