Sei sulla pagina 1di 14

SQL Server - 2008 - Optimizar para cargas de trabajo ad hoc:

Cada lote (T-SQL, SP, etc) cuando se ejecuta crea un plan de ejecucin que se almacena en el sistema para su reutilizacin. Debido a esta razn nmero importante de los planes de consulta se almacenan en el sistema. Sin embargo, hay un montn de planes que slo se usan una vez y nunca volver a utilizarse de nuevo. Una vez corri por lotes los planes de residuos y los recursos de memoria. SQL Server 2008 tiene la funcin de la optimizacin de las cargas de trabajo ad hoc. Antes de pasar a l, vamos a entender el comportamiento de SQL Server sin la optimizacin de la carga de trabajo ad hoc. Por favor, ejecute siguiente secuencia de comandos para la prueba. Asegrese de no correr todo el lote en conjunto. Slo tiene que ejecutar cada comando por separado para ver realmente el efecto de sujeto del artculo. / * Prueba 0 * / / * Cach de Buffers Limpio y * / DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS GO USE AdventureWorks GO / * Ejecutar consulta ad hoc primera vez * / SELECT * DESDE HumanResources.Shift GO / * Comprobar si la consulta ad hoc se almacena en cach. Volver un resultado * / SELECT usecounts , cacheobjtype , objtype , TEXTO DE sys.dm_exec_cached_plans CROSS APPLY sys.dm_exec_sql_text ( plan_handle ) DONDE usecounts > 0 Y TEXTO COMO "SELECT * FROM%% HumanResources.Shift ' ORDER BY usecounts DESC ; GO

Ahora vamos a comprobar el resultado de este script. Pues bien, de modo que cuando nos encontramos con la consulta una vez que su plan en cach en la memoria. Si no corremos este nuevo en el futuro o si acabamos corriendo como parte de la construccin ya la consulta del plan de cach de esta consulta es slo prdida de memoria.

Vamos a habilitar la opcin de optimizar la carga de trabajo ad hoc. Esta caracterstica est disponible en todas las versiones de SQL Server 2008. SP_CONFIGURE 'Mostrar opciones avanzadas " , una RECONFIGURE GO SP_CONFIGURE 'Optimizar para cargas de trabajo ad hoc' , un RECONFIGURE GO Ahora se ejecutar el cdigo para la prueba 1, que es casi igual que la prueba 0. Asegrese de limpiar la cach y el tampn antes de ejecutar la consulta para crear escenario de la vida real de casos en vivo.

/ * Prueba 1 * / / * Cach de Buffers Limpio y * / DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS GO USE AdventureWorks GO / * Ejecutar consulta ad hoc primera vez * / SELECT * DESDE HumanResources.Shift GO / * Comprobar si la consulta ad hoc se almacena en cach. No se devolver cualquier resultado * / SELECT usecounts , cacheobjtype , objtype , TEXTO DE sys.dm_exec_cached_plans CROSS APPLY sys.dm_exec_sql_text ( plan_handle ) DONDE usecounts > 0 Y TEXTO COMO "SELECT * FROM HumanResources.Shift% ' ORDER BY usecounts DESC ; GO Estamos claros se puede ver ahora como tenemos opcin de avance permiti que no tienen cach de consultas cepillada almacenada en la base de datos.

Nos interesa saber ahora que si corremos el lote de ms de 1 vez puede cachear su plan de ejecucin. Con la opcin antes de la optimizacin de la carga de trabajo ad hoc. / * Prueba 2 * / / * Cach de Buffers Limpio y * / DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS GO / * Ejecutar consulta ad hoc dos * Hora / SELECT * DESDE HumanResources.Shift IR 5 / * Comprobar si la consulta ad hoc se almacena en cach. Volver con el resultado consultas ad hoc llev a cabo dos veces * / SELECT usecounts y cacheobjtype y objtype y TEXTO DE sys.dm_exec_cached_plans CROSS APPLY sys.dm_exec_sql_text ( plan_handle ) DONDE usecounts > 0 Y TEXTO COMO "SELECT * FROM%% HumanResources.Shift ' ORDER BY usecounts DESC ; GO

Desde nuestra imagen est muy claro que cuando el lote se corri para ms de una vez que almacena en la cach de su plan de ejecucin. Este es un comportamiento genrico con o sin opcin de encender adelantado.

Esto puede ser muy simple de ver desde la cima, pero si est utilizando SQL Server 2008 y cuentan con millones de consultas ad hoc corriendo todos los das que duraran cuenta de la importancia de esta caracterstica. Esta caracterstica mejora el rendimiento mediante el alivio de la presin de memoria al no almacenar el momento solo se utilizan los planes compilados.

Ad hoc enlaces Tcnicamente, no utilizar el trmino servidor vinculado para identificar una consulta ad hoc. Ese trmino se refiere realmente a un objeto de SQL Server. Sin embargo, usted ver a menudo el trmino usado para referirse a una consulta ad hoc vinculado. Una consulta ad hoc se abre y se cierra la conexin. Un servidor permanente vinculada siempre est disponible. El uso de OPENROWSET infrecuentes tareas vinculadas, con la siguiente sintaxis: OPENROWSET ('ProviderName', 'fuente de datos', 'username', 'password', objeto) Un enlace de OPENROWSET consume menos espacio en su base de datos. Uso vlido de Transact-SQL para manipular los datos recuperados. Los argumentos se explican por s, pero recuerde que fuente de datos es la ruta completa de la fuente, no slo un nombre de archivo.Adems, el proveedor le ofrece las instrucciones que SQL Server necesita para entrar y apoderarse de los datos. Son especficas del software extranjero que est accediendo. Ahora, echemos un vistazo a una consulta ad hock simple que selecciona todos los registros de la tabla Empleados en la base de datos Microsoft Access de ejemplo, Northwind: SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', "C: Program FilesMicrosoft OfficeOffice11Office11SamplesNorthwind.mdb '; 'Admin','', los empleados) COMO EmployeesFromAccess La figura A muestra los resultados rpidamente recuperados, que dependen de que el usuario (admin) que tiene los permisos adecuados. (Si desea ejecutar esta consulta, asegrese de actualizar la ruta a Neptuno.mdb para adaptarse a su sistema.) La cadena de proveedor es especfico del motor de datos, Jet. La palabra clave AS proporciona un nombre para la nueva tabla en SQL Server.

Figura A: Utilizar OPENROWSET para las consultas frecuentes de los datos de extranjeros (Express Edition).

Si la consulta ad hoc devuelve un error, es probable que tenga que habilitar la funcin de consulta ad hoc. (SQL Server que desactiva de forma predeterminada.) Para que las consultas ad hoc, ejecute el SQL Server Configuration Manager (la superficie de SQL Server Utilidad de configuracin en la edicin Express). Haga clic en la Configuracin de superficie para enlace de caractersticas y comprobar las funciones OPENROWSET y OPENDATASOURCE Habilitar la opcin de soporte. A continuacin, haga clic en Aceptar y cierre la utilidad. Tambin puede ejecutar el procedimiento almacenado sp_configure. Vnculos permanentes Vinculada de SQL Server objeto de servidor crea un enlace permanente a un servidor remoto.Cuando el usuario inicia una sesin, SQL Server tambin se registra en el servidor remoto. El primer paso para recuperar datos de extranjeros a travs de un servidor vinculado es dejar que SQL Server sabe que va a hablar con otra fuente (servidor). Para ello, ejecutar el procedimiento de SQL Server almacenado sp_addlinkedserver, con la siguiente sintaxis: sp_addlinkedserver servidor, nombre del producto, proveedor, fuente de datos, la ubicacin, providerstring, el catlogo Consulte la Tabla A para una explicacin de cada uno de los argumentos del procedimiento.Tenga en cuenta que algunos de los argumentos se limitan a cdigo.

Cuadro A: almacenado sp_addlinkedserver argumentos de procedimiento Management Parmetro Argumento Explicacin Defecto Studio constante El nombre local del servidor vinculado que est creando El nombre del producto del origen de datos OLEDB va a aadir como un servidor vinculado

servidor

Ninguno

Servidor vinculado

@ Servidor

ProductName

NULL

Nombre del producto

@ Srvproduct

proveedor

El identificador nico de NULL origen OLEDB El nombre de la fuente de datos

Nombre del Proveedor

@ Proveedor de

fuente de datos

NULL

Fuente de datos

@ Datasrc

ubicacin

La ubicacin del archivo NULL fuente vinculada NULL

N/A

@ Lugar

La cadena providerstring de OLEDB que

N/A

@ Provstr

identifica la fuente Catlogo utilizar con la conexin @ Catlogo

catlogo

NULL

N/A

Los argumentos no son opcionales, pero no va a utilizar todos juntos, lo que explica el valor predeterminado NULL. El proveedor determina que los argumentos que usted necesita. Cuando se utiliza SQL Server, se necesita slo los dos primeros argumentos. Ahora, supongamos que desea crear un enlace permanente a otra base de datos de SQL Server en el servidor de Recursos Humanos. Para ello, tendr que utilizar la siguiente declaracin: EXEC sp_addlinkedserver @ server = 'EmployeeStats', @ Proveedor = 'SQL Server', @ Datasrc = 'Recursos Humanos' El nombre del servidor vinculado, el EmployeeStats, es una cadena que usted proporciona a representar el servidor. No existe hasta que se nombre y crearlo. Las sentencias de sintaxis siguientes representan la creacin de un servidor vinculado a varias fuentes de datos comunes: Microsoft Access EXEC sp_addlinkedserver @ server = 'NorthwindDemo', @ Srvproduct = 'Microsoft.Jet.OLEDB.4.0', @ = Proveedor de 'Microsoft.Jet.OLEDB.4.0', @ Datasrc = "C: LinkedNorthwind.mdb ' Microsoft Excel EXEC sp_addlinkedserver @ server = 'ExcelEmployeeData', @ Srvproduct = 'Microsoft.Jet.OLEDB.4.0', @ = Proveedor de 'Microsoft.Jet.OLEDB.4.0', @ Datasrc = 'C: LinkedEmployees.xls' Orculo EXEC sp_addlinkedserver @ server = 'OracleDemo', @ Srvproduct = 'Oracle', @ Proveedor = 'MSDAORA', @ Datasrc = 'OracleAlias' Oracle es un poco diferente porque hay que crear un alias que apunta al servidor de Oracle en lugar de especificar un archivo real (@ datasrc). Cada situacin es diferente. Su mejor defensa es la experiencia y un personal tcnico con conocimiento. SQL Server lanza una llave inglesa en las obras, ya que no devuelve un error si se utiliza la sintaxis incorrecta. En cambio, cualquier intento de utilizar el servidor vinculado, simplemente no funciona, pero el fracaso no sea obvio. Mi mejor recomendacin es probar una consulta que usted debe saber devolver los datos. Si usted no consigue nada, sabes que el servidor vinculado no es realmente la conexin y el problema es ms probable que los argumentos que alimentaron sp_addlinkedserver para crear el servidor vinculado.

Con Management Studio Con Management Studio para crear un servidor vinculado es an ms fcil. Busque la carpeta de servidor vinculado en los objetos de servidor o la carpeta de Seguridad (segn la versin que ests usando). La buena noticia es que Management Studio simplifica el proceso. Usted todava tiene que introducir el nombre del producto, proveedor, y la ruta del archivo. Si una opcin est desactivada y usted lo necesita, como se muestra en la figura B, se debe recurrir a sp_addlinkedserver. En este caso, el acceso no es compatible con la ubicacin y las opciones de catlogo, por lo que los incapacita Management Studio. Figura B: Management Studio no es compatible con todas las opciones para cada proveedor (Express Edition).

Recuperacin de datos Una vez que el servidor vinculado existe, se puede utilizar para consultar datos, como si estuviera trabajando con tablas de SQL Server La figura C muestra el resultado de la recuperacin de todos los registros de los empleados de Northwind mediante la sentencia SQL a travs de un servidor vinculado llamado NorthwindDemo.: SELECT * FROM Empleados NorthwindDemo ... La declaracin identifica el servidor remoto y la mesa desde la cual est la recuperacin de datos.

Figura C: Recuperar datos de Access a travs de un servidor vinculado (Express Edition).

Al consultar los datos a travs del servidor vinculado ExcelData, incluyen un rango con nombre de la siguiente manera: SELECT * DE ExcelData, Empleados Uno o dos trampas La mayor captura de todo esto es la sencillez, como siempre, la seguridad. Si usted est trabajando con la autenticacin de Windows, el sistema tiene capacidad para bien. Si el usuario tiene los permisos adecuados para los servidores y fuentes de datos, las consultas vinculadas va a funcionar. Si tiene usuarios de fuera del entorno de la autenticacin de Windows, puede utilizar un nombre de usuario relacionados. Crear un usuario normal y asignar los permisos adecuados en el servidor remoto. Entonces, desde el servidor de envo, utilice sp_addlinkedsrvlogin para asignar inicios de sesin locales a los inicios de sesin remotos utilizando la siguiente sintaxis: sp_addlinkedsrvlogin RemoteServerName, useseif, locallogin, remoteuser, remotepassword Por ejemplo, despus de ejecutar la instruccin siguiente, el usuario que inicia sesin en el nivel local como con la susan1 rabbitX contrasea tendr acceso a datos a travs del servidor de NorthwindDemo vinculada si se ha asignado correctamente los inicios de sesin: EXEC @ sp_addlinkedsrvlogin rmtsrvname = 'NorthwindDemo', @ Useseif = FALSO, @ Locallogin = 'NULL', @ Rmtuser = 'susan1',

@ Rmtpassword = 'rabbitX' Tabla B se describen los argumentos sp_addlinkedsrvlogin. Cuadro B: argumentos sp_addlinkedsrvlogin Argumento Explicacin Constante servidor El servidor de nombre de El uso con seguridad integrada de Windows para autorizar a los usuarios Su inicio de sesin local El nombre de usuario La contrasea @ Rmtsrvname

useseif

@ Useseif

locallogin remoteuser remotepassword

@ Locallogin @ Rmtuser @ Rmtpassword

Otro problema es el siempre creciente y siempre cambiante lista de proveedores y cadenas de conexin que usted necesita. Encontrar una lista completa de las cadenas de proveedores en elConnectionStrings.com . Nombres de los proveedores no son intuitivo. Cuadro C figuran algunos nombres comunes de los proveedores. Tabla C: nombres de los proveedores SQL Server SQLNCLI Orculo Oracle, la versin 8 y posterior Access / Jet y Excel Origen de datos ODBC Base de datos de IBM DB2 MSDAORA OraOLEDB.Oracle Microsoft.Jet.OLEDB.4.0 MSDASQL DB2OLEDB

Trabajo de: Programacin con DB Investigacin de: -Query AD HOC y Queries linked implementados en sql express Integrante: Brenda Domnguez Obando Docente: Lic. Mauricio Arauz Modalidad: Nocturna Fecha: 15/febrero/2012

Potrebbero piacerti anche